} 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.
-
-
-
- );
- }
-}
-
-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
-
-
- );
- }
-}
-
-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
-
-
-
-
- )
- }
-}
-
-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
-
-
-
-
-
- Close
- Save
-
-
- );
- }
-}
-
-GetDataConfigurationComponent.displayName = 'GetDataConfigurationComponent';
-
-GetDataConfigurationComponent.propTypes = {
- sheetNames: PropTypes.array.isRequired,
- show: PropTypes.bool.isRequired,
- onSaveClick: PropTypes.func.isRequired,
- onCancelClick: PropTypes.func.isRequired,
- initialSettings: PropTypes.object
-};
-
-GetDataConfigurationComponent.defaultProps = {
- sheetNames: ['one', 'two', 'three'],
- initialSettings: {
- sheetName: '',
- type: 'summary',
- ignoreAliases: false,
- ignoreSelection: false,
- includeAllColumns: false,
- maxRows: '0'
- }
-};
-
-export default GetDataConfigurationComponent;
diff --git a/Examples/ReactJs/src/components/GetDataDemo/GetDataDemoComponent.js b/Examples/ReactJs/src/components/GetDataDemo/GetDataDemoComponent.js
deleted file mode 100644
index 1d78efa7..00000000
--- a/Examples/ReactJs/src/components/GetDataDemo/GetDataDemoComponent.js
+++ /dev/null
@@ -1,169 +0,0 @@
-'use strict';
-
-import React from 'react';
-import GetDataConfigurationComponent from './GetDataConfigurationComponent';
-import GetDataTableComponent from './GetDataTableComponent';
-import { Button, Glyphicon } from 'react-bootstrap'
-
-import LoadIndicatorComponent from '../LoadIndicatorComponent';
-
-require('react-virtualized/styles.css');
-require('styles//GetDataDemo.css');
-
-/*global tableau*/
-
-class GetDataDemoComponent extends React.Component {
- constructor(props) {
- super(props);
-
- this.state = {
- showingDialog: false,
- loading: false,
- sheets: [],
- columns: [],
- rows: []
- };
- }
-
- loadFromTableau() {
- let allSheets = tableau.addIn.dashboardContent.dashboard.worksheets;
- const sheetNames = allSheets.map((sheet) => sheet.name);
- var settingsString = tableau.addIn.settings.get('getDataSettings');
- if (!!settingsString) {
- const settings = JSON.parse(settingsString);
- this.setState({
- settings: settings,
- sheets: sheetNames
- });
-
- // Trigger getting data
- this.getData(settings);
- } else {
- // If we don't have valid configuration, show the config dialog
- this.setState({
- showingDialog: true,
- sheets: sheetNames
- });
- }
- }
-
- componentDidMount() {
- this.loadFromTableau();
- }
-
- getData(settings) {
- // Here's where we actually use the getData API
-
- // First find the worksheet in the list of worksheets
- const sheet = tableau.addIn.dashboardContent.dashboard.worksheets.find(
- (sheet) => sheet.name == settings.sheetName);
-
- if (!sheet) {
- // TODO - error
- }
-
- this.setState({
- loading: true
- });
- const params = Object.assign({}, settings); // Just copy over all of these to get the properties
- let promise = settings.type == 'summary' ? sheet.getSummaryDataAsync(params) : sheet.getUnderlyingDataAsync(params);
- promise.then((dataTable) => {
- const columns = dataTable.columns.map((col) => ({
- label: col.fieldName,
- dataKey: 'FormattedValue'
- }));
-
- const rows = dataTable.data;
-
- this.setState({
- columns: columns,
- rows: rows,
- loading: false
- });
- })
- }
-
- onConfigureClicked() {
- this.setState({
- showingDialog: true
- });
- }
-
- onCancelDialog() {
- this.setState({
- showingDialog: false
- });
- }
-
- onSaveDialog(settings) {
- // Persist the saved settings into the workbook
- tableau.addIn.settings.set('getDataSettings', JSON.stringify(settings));
- this.setState({
- showingDialog: false,
- loading: true,
- settings: settings
- }, () => this.getData(settings));
-
- tableau.addIn.settings.saveAsync().then(() => {
- // After we save, we should reload the data table with our settings
- this.getData(settings);
- });
- }
-
- buildColumns() {
- return this.state.columns.map((col) => {
- return ( );
- });
- }
-
- render() {
- if (this.state.loading) {
- return ( );
- } else {
- const summary = (this.state.settings && this.state.settings.sheetName) ? (
-
-
this.getData(this.state.settings)}>
-
- {'Displaying '}
- {this.state.rows.length}
- {' rows from the '}
- {this.state.settings.sheetName}
- {' worksheet'}
-
-
Configure
-
- ) : null;
-
- return (
-
-
-
- {summary}
-
-
-
-
-
- );
- }
- }
-}
-
-GetDataDemoComponent.displayName = 'GetDataDemoComponent';
-
-export default GetDataDemoComponent;
diff --git a/Examples/ReactJs/src/components/GetDataDemo/GetDataTableComponent.js b/Examples/ReactJs/src/components/GetDataDemo/GetDataTableComponent.js
deleted file mode 100644
index a5c02b0e..00000000
--- a/Examples/ReactJs/src/components/GetDataDemo/GetDataTableComponent.js
+++ /dev/null
@@ -1,71 +0,0 @@
-'use strict';
-
-import React from 'react';
-import PropTypes from 'prop-types';
-import { AutoSizer, MultiGrid, CellMeasurer, CellMeasurerCache } from 'react-virtualized';
-
-require('styles//GetDataTable.css');
-
-const cache = new CellMeasurerCache({
- defaultWidth: 150,
- minWidth: 75,
- fixedHeight: true
-});
-
-class GetDataTableComponent extends React.Component {
- render() {
- const cellRenderer = ({ columnIndex, key, rowIndex, style }) => {
- let content = null;
- if (rowIndex == 0) {
- content = (
- {this.props.headers[columnIndex].label}
-
);
- } else {
- return (
- {this.props.rows[rowIndex - 1][columnIndex].formattedValue}
-
);
- }
-
- return (
-
- {content}
-
- );
- }
-
- return (
-
- {({ height, width }) => (
-
- )}
-
- );
- }
-}
-
-GetDataTableComponent.displayName = 'GetDataTableComponent';
-
-GetDataTableComponent.propTypes = {
- rows: PropTypes.array.isRequired,
- headers: PropTypes.array.isRequired,
- dataKey: PropTypes.number
-};
-
-export default GetDataTableComponent;
diff --git a/Examples/ReactJs/src/components/LoadIndicatorComponent.js b/Examples/ReactJs/src/components/LoadIndicatorComponent.js
deleted file mode 100644
index 9ca9b860..00000000
--- a/Examples/ReactJs/src/components/LoadIndicatorComponent.js
+++ /dev/null
@@ -1,24 +0,0 @@
-'use strict';
-
-import React from 'react';
-import PropTypes from 'prop-types';
-import Spinner from 'react-spinkit';
-
-require('styles//LoadIndicator.css');
-
-class LoadIndicatorComponent extends React.Component {
- render() {
- return (
-
-
{this.props.msg}
-
-
- );
- }
-}
-
-LoadIndicatorComponent.displayName = 'LoadIndicatorComponent';
-
-LoadIndicatorComponent.propTypes = { msg: PropTypes.string.isRequired };
-
-export default LoadIndicatorComponent;
diff --git a/Examples/ReactJs/src/components/Main.js b/Examples/ReactJs/src/components/Main.js
deleted file mode 100644
index 9502819f..00000000
--- a/Examples/ReactJs/src/components/Main.js
+++ /dev/null
@@ -1,80 +0,0 @@
-require('normalize.css/normalize.css');
-require('styles/App.css');
-
-import React from 'react';
-import SettingsDemoComponent from './SettingsDemo/SettingsDemoComponent';
-import EnvironmentDemoComponent from './EnvironmentDemo/EnvironmentDemoComponent'
-import GetDataDemoComponent from './GetDataDemo/GetDataDemoComponent';
-import SelectedMarksDemoComponent from './SelectedMarksDemo/SelectedMarksDemoComponent'
-import LoadIndicatorComponent from './LoadIndicatorComponent';
-import FiltersDemoComponent from './FiltersDemo/FiltersDemoComponent';
-import ParametersDemoComponent from './ParametersDemo/ParametersDemoComponent';
-
-/*global tableau*/
-
-class AppComponent extends React.Component {
- constructor(props) {
- super(props);
-
- this.state = {
- isInitializing: true
- };
- }
-
- componentWillMount() {
- // Once we have mounted, we call to initialize our add-in
- let initialziePromise = tableau.addIn.initializeAsync();
- if (initialziePromise) {
- initialziePromise.then(() => {
- this.setState({
- isInitializing: false
- });
- });
- } else {
- // Not running inside of Tableau
- }
- }
-
- render() {
- if (this.state.isInitializing) {
- return (
-
-
)
- }
-
- switch (this.props.hash) {
- case '#settings':
- return (
-
-
-
- );
- case '#environment':
- return (
-
-
-
- );
- case '#getData':
- return (
-
- )
- case '#selectedMarks':
- return (
-
- )
- case '#filtering':
- return (
-
- )
- case '#parameters':
- return (
-
- )
- default:
- return (Unknown hash {this.props.hash} );
- }
- }
-}
-
-export default AppComponent;
diff --git a/Examples/ReactJs/src/components/ParametersDemo/ParametersDemoComponent.js b/Examples/ReactJs/src/components/ParametersDemo/ParametersDemoComponent.js
deleted file mode 100644
index b44f32d8..00000000
--- a/Examples/ReactJs/src/components/ParametersDemo/ParametersDemoComponent.js
+++ /dev/null
@@ -1,111 +0,0 @@
-'use strict';
-
-import React from 'react';
-import { Button, Panel, PanelGroup } from 'react-bootstrap';
-
-/*global tableau*/
-
-class ParametersDemoComponent extends React.Component {
- constructor(props) {
- super(props);
-
- this.state = {
- paramNames: [],
- paramData: {},
- isLoading: true
- };
- }
-
- componentDidMount() {
- this.loadParameters();
- }
-
- extractParameterData(p) {
- const result = {};
- Object.keys(Object.getPrototypeOf(p)).forEach(k => result[k] = p[k]);
- return result;
- }
-
- loadParameters() {
- this.setState({
- isLoading: true
- });
-
- tableau.addIn.dashboardContent.dashboard.getParametersAsync().then(parameters => {
- parameters.forEach(p => {
- p.addEventListener('parameter-changed', (evt) => {
- evt.getParameterAsync().then(param => {
- debugger;
- const data = this.extractParameterData(param);
- this.setState(prevState => {
- const newState = Object.assign({}, prevState);
- newState.paramData[data.name] = data;
- return newState;
- });
- })
- })
- });
-
- const paramNames = parameters.map(p => p.name);
- const paramData = {};
- parameters.forEach(p => {
- paramData[p.name] = this.extractParameterData(p);
- });
-
- this.setState({
- paramNames: paramNames,
- paramData: paramData
- });
- });
- }
-
- buildParameterControl(parameter) {
- let allowableValues = (
);
- if (parameter.allowableValues.type === 'list') {
- const valueList = parameter.allowableValues.allowableValues.map(v => v._value).join(', ');
- allowableValues = (
- Options {valueList}
- );
- } else if (parameter.allowableValues.type === 'range') {
- allowableValues = (
- Min Value {parameter.allowableValues.minValue._value || 'No Min'}
- Max Value {parameter.allowableValues.maxValue._value || 'No Max'}
- Step Size {parameter.allowableValues.maxValue.stepSize || 'default'}
- );
- }
-
- const values = (
- Name {parameter.name}
- Data Type {parameter.dataType}
- Current Value Alias {parameter.currentValue._formattedValue}
- Current Value {parameter.currentValue._value}
- Allowable Values {parameter.allowableValues.type}
- {allowableValues}
- );
-
- return (
- {values}
- );
- }
-
- render() {
- let parameterControls = this.state.paramNames.map(name => this.buildParameterControl(this.state.paramData[name]));
- // let parameterControls = [];
- return (
-
-
-
Frelard Parameters Demo
-
Shows which parameters are in a workbook.
-
Refresh
-
-
- {parameterControls}
-
-
- );
- }
-}
-
-ParametersDemoComponent.displayName = 'ParametersDemoComponent';
-
-export default ParametersDemoComponent;
diff --git a/Examples/ReactJs/src/components/SelectedMarksDemo/SelectedMarksDemoComponent.js b/Examples/ReactJs/src/components/SelectedMarksDemo/SelectedMarksDemoComponent.js
deleted file mode 100644
index 8e091034..00000000
--- a/Examples/ReactJs/src/components/SelectedMarksDemo/SelectedMarksDemoComponent.js
+++ /dev/null
@@ -1,126 +0,0 @@
-'use strict';
-
-import React from 'react';
-import { Tabs, Tab } from 'react-bootstrap'
-
-import GetDataTableComponent from '../GetDataDemo/GetDataTableComponent';
-
-require('styles//SelectedMarksDemo.css');
-
-/*global tableau*/
-
-class SelectedMarksDemoComponent extends React.Component {
- constructor(props) {
- super(props);
-
- this.state = {
- selectedTab: '',
- sheets: []
- };
-
- this.selectionChangedEvent = this.onSelectionChanged.bind(this);
- }
-
- handleSelectedMarks(selectedMarks, sheetName, forceChangeSheet) {
- const dataTable = selectedMarks.data[0]; // Just get the first pane
- const columns = dataTable.columns.map((col) => ({
- label: col.fieldName,
- dataKey: 'FormattedValue'
- }));
-
- const rows = dataTable.data;
-
- const result = {
- rows: rows,
- cols: columns,
- dataKey: Math.random()
- };
-
- this.setState({
- [sheetName]: result,
- selectedTab: rows.length > 0 || forceChangeSheet ? sheetName : this.state.selectedTab
- });
- }
-
- onSelectionChanged(marksEvent) {
- const sheetName = marksEvent.worksheet.name;
- marksEvent.getMarksAsync().then((selectedMarks) => {
- this.handleSelectedMarks(selectedMarks, sheetName, true);
- });
- }
-
- reload() {
- let allSheets = tableau.addIn.dashboardContent.dashboard.worksheets;
- const sheets = allSheets.map((sheet) => sheet.name);
-
- this.setState({
- sheets: sheets
- });
-
- // Fetch the selected marks for every sheet
- for(const sheet of allSheets) {
- const sheetName = sheet.name;
- sheet.getSelectedMarksAsync().then((selectedMarks) => {
- this.handleSelectedMarks(selectedMarks, sheetName, false);
- });
-
- sheet.addEventListener('mark-selection-changed', this.selectionChangedEvent);
- }
- }
-
- componentDidMount() {
- this.reload();
- }
-
- makeMarkTable(sheetName, sheetState) {
- let markCount = 0;
- let rows = [];
- let cols = [];
- let dataKey = -1;
- if (sheetState) {
- rows = sheetState.rows;
- cols = sheetState.cols;
- dataKey = sheetState.dataKey;
- markCount = rows.length;
- }
-
- // Build up our table
- let table = null;
-
- if (markCount > 0) {
- // const rows = selectedMarks.map((mark) => mark.getPairs());
- // const cols = selectedMarks[0].getPairs().map((pair => { return { 'label' : pair.fieldName}; }));
- table = (
-
-
-
);
- } else {
- table = ();
- }
-
- return (
-
- {table}
- );
- }
-
- handleSelect(key) {
- this.setState({
- selectedTab: key
- });
- }
-
- render() {
- return (
-
-
- {this.state.sheets.map(sheetName => this.makeMarkTable(sheetName, this.state[sheetName]))}
-
-
- );
- }
-}
-
-SelectedMarksDemoComponent.displayName = 'SelectedMarksDemoComponent';
-
-export default SelectedMarksDemoComponent;
diff --git a/Examples/ReactJs/src/components/SettingsDemo/AddSettingsComponent.js b/Examples/ReactJs/src/components/SettingsDemo/AddSettingsComponent.js
deleted file mode 100644
index d2d92250..00000000
--- a/Examples/ReactJs/src/components/SettingsDemo/AddSettingsComponent.js
+++ /dev/null
@@ -1,64 +0,0 @@
-'use strict';
-
-import React from 'react';
-import PropTypes from 'prop-types';
-import { Form, FormGroup, FormControl, ControlLabel, Button } from 'react-bootstrap';
-
-require('styles//AddSettings.css');
-
-class AddSettingsComponent extends React.Component {
- constructor(props) {
- super(props);
- this.state = {
- key: '',
- value: ''
- };
- }
-
- handleChange(e) {
- const name = e.target.name;
-
- this.setState({
- [name]: e.target.value
- });
- }
-
- handleAddClicked() {
- this.props.onAddOrUpdateSetting(this.state.key, this.state.value);
- this.setState({
- key: '',
- value: ''
- })
- }
-
- render() {
- return (
-
-
-
- );
- }
-}
-
-AddSettingsComponent.displayName = 'AddSettingsComponent';
-
-AddSettingsComponent.propTypes = { onAddOrUpdateSetting: PropTypes.func.isRequired };
-
-export default AddSettingsComponent;
diff --git a/Examples/ReactJs/src/components/SettingsDemo/SettingsDemoComponent.js b/Examples/ReactJs/src/components/SettingsDemo/SettingsDemoComponent.js
deleted file mode 100644
index 687063a9..00000000
--- a/Examples/ReactJs/src/components/SettingsDemo/SettingsDemoComponent.js
+++ /dev/null
@@ -1,79 +0,0 @@
-'use strict';
-
-require('styles//SettingsDemo.css');
-
-import React from 'react';
-import AddSettingsComponent from './AddSettingsComponent';
-import SettingsTableComponent from './SettingsTableComponent';
-import { Button } from 'react-bootstrap';
-
-/*global tableau*/
-
-class SettingsDemoComponent extends React.Component {
- constructor(props) {
- super(props);
-
- this.state = {
- isModified: false,
- settingsValues: []
- }
- }
-
- computeSettingsState() {
- var allSettings = tableau.addIn.settings.getAll();
- var rows = [];
- for (var key in allSettings) {
- rows.push({
- key: key,
- value: allSettings[key]
- });
- }
-
- this.setState({
- settingsValues: rows,
- isModified: tableau.addIn.settings.isModified
- });
- }
-
- componentWillMount() {
- this.computeSettingsState();
- }
-
- addOrUpdateNewSetting(key, value) {
- tableau.addIn.settings.set(key, value);
- this.computeSettingsState();
- }
-
- deleteSetting(key) {
- tableau.addIn.settings.erase(key);
- this.computeSettingsState();
- }
-
- saveSettings() {
- tableau.addIn.settings.saveAsync().then(() => {
- this.computeSettingsState();
- });
- }
-
- render() {
- return (
-
-
-
Frelard Settings Demo
-
This sample demonstrates the ability to add, update, delete, and save the settings values of an add-in instance.
-
-
-
-
-
-
-
- {this.state.isModified ? 'Save Changes' : 'No Changes To Save'}
-
-
-
- );
- }
-}
-
-export default SettingsDemoComponent;
diff --git a/Examples/ReactJs/src/components/SettingsDemo/SettingsTableComponent.js b/Examples/ReactJs/src/components/SettingsDemo/SettingsTableComponent.js
deleted file mode 100644
index 7b8bf008..00000000
--- a/Examples/ReactJs/src/components/SettingsDemo/SettingsTableComponent.js
+++ /dev/null
@@ -1,52 +0,0 @@
-'use strict';
-
-import React from 'react';
-import PropTypes from 'prop-types';
-import { Table, Button } from 'react-bootstrap';
-
-require('styles//SettingsTable.css');
-
-class SettingsTableComponent extends React.Component {
- buildSettings() {
- var settingsRows = this.props.settingsValues.map((pair, index) => {
- return (
-
- {pair.key}
- {pair.value}
- Delete
-
- )
- });
-
- return settingsRows;
- }
-
- render() {
- return (
-
-
Current Settings
-
-
-
- Key
- Value
-
-
-
-
- {this.buildSettings()}
-
-
-
- );
- }
-}
-
-SettingsTableComponent.displayName = 'SettingsTableComponent';
-
-SettingsTableComponent.propTypes = {
- settingsValues: PropTypes.array.isRequired,
- onDeleteClicked: PropTypes.func.isRequired
-};
-
-export default SettingsTableComponent;
diff --git a/Examples/ReactJs/src/config/README.md b/Examples/ReactJs/src/config/README.md
deleted file mode 100644
index c20fc5da..00000000
--- a/Examples/ReactJs/src/config/README.md
+++ /dev/null
@@ -1,35 +0,0 @@
-# About this folder
-
-This folder holds configuration files for different environments.
-You can use it to provide your app with different settings based on the
-current environment, e.g. to configure different API base urls depending on
-whether your setup runs in dev mode or is built for distribution.
-You can include the configuration into your code like this:
-
-**ES2015 Modules**
-
-```js
-import config from 'config';
-```
-
-**Common JS**
-
-Due to Babel6 we need to append `.default`.
-
-```js
-let config = require('config').default;
-```
-
-**Example**
-
-```javascript
-import React from 'react';
-import config from 'config';
-
-class MyComponent extends React.Component {
- constructor(props, ctx) {
- super(props, ctx);
- let currentAppEnv = config.appEnv;
- }
-}
-```
diff --git a/Examples/ReactJs/src/config/base.js b/Examples/ReactJs/src/config/base.js
deleted file mode 100644
index 65b6aff9..00000000
--- a/Examples/ReactJs/src/config/base.js
+++ /dev/null
@@ -1,5 +0,0 @@
-'use strict';
-
-// Settings configured here will be merged into the final config object.
-export default {
-}
diff --git a/Examples/ReactJs/src/config/dev.js b/Examples/ReactJs/src/config/dev.js
deleted file mode 100644
index 09f544cf..00000000
--- a/Examples/ReactJs/src/config/dev.js
+++ /dev/null
@@ -1,9 +0,0 @@
-'use strict';
-
-import baseConfig from './base';
-
-let config = {
- appEnv: 'dev' // feel free to remove the appEnv property here
-};
-
-export default Object.freeze(Object.assign({}, baseConfig, config));
diff --git a/Examples/ReactJs/src/config/dist.js b/Examples/ReactJs/src/config/dist.js
deleted file mode 100644
index e9cc29db..00000000
--- a/Examples/ReactJs/src/config/dist.js
+++ /dev/null
@@ -1,9 +0,0 @@
-'use strict';
-
-import baseConfig from './base';
-
-let config = {
- appEnv: 'dist' // feel free to remove the appEnv property here
-};
-
-export default Object.freeze(Object.assign({}, baseConfig, config));
diff --git a/Examples/ReactJs/src/config/test.js b/Examples/ReactJs/src/config/test.js
deleted file mode 100644
index 3d17b759..00000000
--- a/Examples/ReactJs/src/config/test.js
+++ /dev/null
@@ -1,9 +0,0 @@
-'use strict';
-
-import baseConfig from './base';
-
-let config = {
- appEnv: 'test' // don't remove the appEnv property here
-};
-
-export default Object.freeze(Object.assign(baseConfig, config));
diff --git a/Examples/ReactJs/src/favicon.ico b/Examples/ReactJs/src/favicon.ico
deleted file mode 100644
index 65279053..00000000
Binary files a/Examples/ReactJs/src/favicon.ico and /dev/null differ
diff --git a/Examples/ReactJs/src/index.html b/Examples/ReactJs/src/index.html
deleted file mode 100644
index 404d8dcc..00000000
--- a/Examples/ReactJs/src/index.html
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
- Project Frelard Samples
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Examples/ReactJs/src/index.js b/Examples/ReactJs/src/index.js
deleted file mode 100644
index c9fc5a88..00000000
--- a/Examples/ReactJs/src/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import 'core-js/fn/object/assign';
-import React from 'react';
-import ReactDOM from 'react-dom';
-import App from './components/Main';
-
-// Render the main component into the dom
-ReactDOM.render( , document.getElementById('app'));
diff --git a/Examples/ReactJs/src/styles/App.css b/Examples/ReactJs/src/styles/App.css
deleted file mode 100644
index 13881d2f..00000000
--- a/Examples/ReactJs/src/styles/App.css
+++ /dev/null
@@ -1 +0,0 @@
-/* Base Application Styles */
diff --git a/Examples/ReactJs/src/styles/GetDataConfiguration.css b/Examples/ReactJs/src/styles/GetDataConfiguration.css
deleted file mode 100644
index 81f8e7a0..00000000
--- a/Examples/ReactJs/src/styles/GetDataConfiguration.css
+++ /dev/null
@@ -1,3 +0,0 @@
-.getdataconfiguration-component {
-
-}
diff --git a/Examples/ReactJs/src/styles/GetDataDemo.css b/Examples/ReactJs/src/styles/GetDataDemo.css
deleted file mode 100644
index e7f34994..00000000
--- a/Examples/ReactJs/src/styles/GetDataDemo.css
+++ /dev/null
@@ -1,10 +0,0 @@
-.getdatademo-component {
-}
-
-.getDataSummary {
- height: 40px;
-}
-
-.dataTable {
- height: calc(100vh - 40px);
-}
\ No newline at end of file
diff --git a/Examples/ReactJs/src/styles/GetDataTable.css b/Examples/ReactJs/src/styles/GetDataTable.css
deleted file mode 100644
index 6709511b..00000000
--- a/Examples/ReactJs/src/styles/GetDataTable.css
+++ /dev/null
@@ -1,29 +0,0 @@
-.cell {
- white-space: nowrap;
- text-overflow: ellipsis;
- overflow: hidden;
- line-height: 30px;
- vertical-align: middle;
- padding-left: 3px;
-}
-
-.header {
- font-weight: bold;
- border-bottom: 1px solid #888888;
-}
-
-.odd {
- background: #EEEEEE;
-}
-
-.grid {
- outline: none;
-}
-
-.interesting {
- font-weight: 700;
-}
-
-.getDataSummary {
- padding-left: 5px;
-}
\ No newline at end of file
diff --git a/Examples/ReactJs/src/styles/LoadIndicator.css b/Examples/ReactJs/src/styles/LoadIndicator.css
deleted file mode 100644
index 96ba7a05..00000000
--- a/Examples/ReactJs/src/styles/LoadIndicator.css
+++ /dev/null
@@ -1,9 +0,0 @@
-
-.loadingIndicator {
- width: 200px;
- height: 200px;
- text-align: center;
- position: absolute;
- left: calc(50vw - 100px);
- top: calc(50vh - 100px);
-}
diff --git a/Examples/ReactJs/src/styles/ParametersDemo.css b/Examples/ReactJs/src/styles/ParametersDemo.css
deleted file mode 100644
index c77d135d..00000000
--- a/Examples/ReactJs/src/styles/ParametersDemo.css
+++ /dev/null
@@ -1,3 +0,0 @@
-.parametersdemo-component {
- border: 1px dashed #f00;
-}
\ No newline at end of file
diff --git a/Examples/ReactJs/src/styles/SelectedMarksDemo.css b/Examples/ReactJs/src/styles/SelectedMarksDemo.css
deleted file mode 100644
index 9d5787ad..00000000
--- a/Examples/ReactJs/src/styles/SelectedMarksDemo.css
+++ /dev/null
@@ -1,7 +0,0 @@
-.selectedmarksdemo-component {
- height: 100vh;
-}
-
-.dataTable {
- height: calc(100vh - 42px);
-}
diff --git a/Examples/ReactJs/src/styles/SettingsDemo.css b/Examples/ReactJs/src/styles/SettingsDemo.css
deleted file mode 100644
index 2aa56b3f..00000000
--- a/Examples/ReactJs/src/styles/SettingsDemo.css
+++ /dev/null
@@ -1,3 +0,0 @@
-.description {
- display: inline;
-}
\ No newline at end of file
diff --git a/Examples/ReactJs/src/tableau-addin-0.2.0.js b/Examples/ReactJs/src/tableau-addin-0.2.0.js
deleted file mode 100644
index 5e1bc739..00000000
--- a/Examples/ReactJs/src/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/ReactJs/src/tableau-addin-0.3.0.js b/Examples/ReactJs/src/tableau-addin-0.3.0.js
deleted file mode 100644
index 5e13a1e0..00000000
--- a/Examples/ReactJs/src/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/ReactJs/src/tableau-addin-0.4.0.js b/Examples/ReactJs/src/tableau-addin-0.4.0.js
deleted file mode 100644
index 8287da07..00000000
--- a/Examples/ReactJs/src/tableau-addin-0.4.0.js
+++ /dev/null
@@ -1,23414 +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__(30);
- var AddInApiPresLayerImpl_1 = __webpack_require__(31);
- var DesktopApiDispatcher_1 = __webpack_require__(32);
- var QtWebChannelImpl_1 = __webpack_require__(33);
- /**
- * 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(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;
-
-
-/***/ },
-/* 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 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 = {}));
- /**
- * 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 = {}));
-
-
-/***/ },
-/* 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["WorksheetFilters"] = "worksheet-filters";
- 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 = 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["SelectByValue"] = "select-by-value";
- VerbId["GetDataSources"] = "get-data-sources";
- VerbId["RefreshDataSource"] = "refresh-data-source";
- VerbId["GetFilters"] = "get-filters";
- })(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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_ErrorExtraDetails, having type string[]
- ParameterId["ErrorExtraDetails"] = "errorExtraDetails";
- // 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_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_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_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_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_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_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_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 = {}));
-
-
-/***/ },
-/* 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)]));
- 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)));
- 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 list of filters used in a worksheet
- DocCommands["GetWorksheetFilters"] = "get-worksheet-filters";
- //
- 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["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["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["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["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 = {}));
-
-
-/***/ },
-/* 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);
- /**
- * 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;
-
-
-/***/ },
-/* 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 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 = {}));
-
-
-/***/ },
-/* 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 !== 'Parameters') {
- 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) {
- 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) {
- var worksheetDataSourceInfo = {
- primaryDataSource: schemaMap[key].primaryDatasource,
- referencedDataSourceList: schemaMap[key].referencedDataSourceList
- };
- 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;
- };
- return PresLayerToApiConverter;
- }());
- exports.PresLayerToApiConverter = PresLayerToApiConverter;
-
-
-/***/ },
-/* 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;
-
-
-/***/ },
-/* 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;
-
-
-/***/ },
-/* 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;
-
-
-/***/ },
-/* 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));
- 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));
- return ApiToPresLayerEnumMappings;
- }());
- exports.ApiToPresLayerEnumMappings = ApiToPresLayerEnumMappings;
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _a, _b;
- /* tslint:enable:typedef */
-
-
-/***/ },
-/* 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_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;
-
-
-/***/ },
-/* 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;
-
-
-/***/ },
-/* 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);
- };
- return ApiToPresLayerConverter;
- }());
- exports.ApiToPresLayerConverter = ApiToPresLayerConverter;
-
-
-/***/ },
-/* 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,
- 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,
- 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,
- 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.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;
-
-
-/***/ },
-/* 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;
-
-
-/***/ },
-/* 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;
-
-
-/***/ },
-/* 30 */
-/***/ 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));
-
-
-/***/ },
-/* 31 */
-/***/ 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;
-
-
-/***/ },
-/* 32 */
-/***/ 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;
-
-
-/***/ },
-/* 33 */
-/***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- __webpack_require__(34);
- var qwebchannel_1 = __webpack_require__(35);
- /**
- * 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;
-
-
-/***/ },
-/* 34 */
-/***/ function(module, exports) {
-
-
-
-/***/ },
-/* 35 */
-/***/ 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 AddInImpl_1 = __webpack_require__(1);
- var AddIn_1 = __webpack_require__(64);
- 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__(52);
- 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.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;
-
-
-/***/ },
-/* 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__(42);
- var DashboardContent_1 = __webpack_require__(44);
- var Environment_1 = __webpack_require__(45);
- var Settings_1 = __webpack_require__(46);
- var RegisterAllAddInServices_1 = __webpack_require__(47);
- var VersionNumber_1 = __webpack_require__(50);
- var DashboardImpl_1 = __webpack_require__(51);
- var SettingsImpl_1 = __webpack_require__(62);
- 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;
-
-
-/***/ },
-/* 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));
-
-
-/***/ },
-/* 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 = {}));
- /**
- * 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 = {}));
-
-
-/***/ },
-/* 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 = {}));
-
-
-/***/ },
-/* 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 = {}));
-
-
-/***/ },
-/* 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["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["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 = exports.ParameterId || (exports.ParameterId = {}));
-
-
-/***/ },
-/* 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["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 = exports.VerbId || (exports.VerbId = {}));
-
-
-/***/ },
-/* 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__(39));
- __export(__webpack_require__(32));
-
-
-/***/ },
-/* 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;
-
-
-/***/ },
-/* 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;
-
-
-/***/ },
-/* 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;
-
-
-/***/ },
-/* 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;
-
-
-/***/ },
-/* 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;
-
-
-/***/ },
-/* 14 */
-/***/ function(module, exports) {
-
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- var TableauExceptions = (function () {
- function TableauExceptions() {
- }
- return TableauExceptions;
- }());
- exports.TableauExceptions = TableauExceptions;
-
-
-/***/ },
-/* 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 () {
- throw new Error('API call not yet implmemented');
- };
- return FilterChangedEvent;
- }(TableauWorksheetEvent_1.TableauWorksheetEvent));
- exports.FilterChangedEvent = FilterChangedEvent;
-
-
-/***/ },
-/* 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));
-
-
-/***/ },
-/* 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 = {}));
-
-
-/***/ },
-/* 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;
-
-
-/***/ },
-/* 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;
-
-
-/***/ },
-/* 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;
-
-
-/***/ },
-/* 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;
-
-
-/***/ },
-/* 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;
-
-
-/***/ },
-/* 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 = {}));
-
-
-/***/ },
-/* 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__(27);
- var GetDataServiceImpl_1 = __webpack_require__(34);
- var NotificationServiceImpl_1 = __webpack_require__(35);
- var ParametersServiceImpl_1 = __webpack_require__(36);
- var SelectionServiceImpl_1 = __webpack_require__(40);
- var ServiceRegistry_1 = __webpack_require__(39);
- 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;
-
-
-/***/ },
-/* 25 */
-/***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- var api_internal_contract_1 = __webpack_require__(26);
- 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;
-
-
-/***/ },
-/* 26 */
-/***/ 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));
-
-
-/***/ },
-/* 27 */
-/***/ 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__(26);
- var api_utils_1 = __webpack_require__(28);
- var ExternalToInternalEnumMappings_1 = __webpack_require__(31);
- var InternalToExternalEnumMappings_1 = __webpack_require__(32);
- var FilterModels_1 = __webpack_require__(33);
- 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);
- });
- };
- // 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, 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, 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, Contract.FilterType.RelativeDate, anchorDateValue, InternalToExternalEnumMappings_1.InternalToExternalEnumMappings.dateStepPeriod.convert(domainFilter.periodType), InternalToExternalEnumMappings_1.InternalToExternalEnumMappings.dateRangeType.convert(domainFilter.rangeType), domainFilter.rangeN);
- };
- return FilterServiceImpl;
- }());
- exports.FilterServiceImpl = FilterServiceImpl;
-
-
-/***/ },
-/* 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__(16);
- var api_internal_contract_1 = __webpack_require__(26);
- 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.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));
- 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__(16);
- var api_internal_contract_1 = __webpack_require__(26);
- 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));
- 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 */
-
-
-/***/ },
-/* 33 */
-/***/ 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 });
- var Filter = (function () {
- function Filter(worksheetName, fieldName, filterType) {
- this._worksheetName = worksheetName;
- this._fieldName = fieldName;
- this._filterType = filterType;
- }
- 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, "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, filterType, _appliedValues, _isExcludeMode) {
- var _this = _super.call(this, worksheetName, fieldName, filterType) || 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.getCategoricalDomainAsync = function () {
- throw new Error('Method not implemented');
- };
- return CategoricalFilter;
- }(Filter));
- exports.CategoricalFilter = CategoricalFilter;
- var RangeFilter = (function (_super) {
- __extends(RangeFilter, _super);
- function RangeFilter(worksheetName, fieldName, filterType, _min, _max, _includeNullValues) {
- var _this = _super.call(this, worksheetName, fieldName, filterType) || 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.getRangeFilterDomainAsync = function () {
- throw new Error('Method not implemented');
- };
- return RangeFilter;
- }(Filter));
- exports.RangeFilter = RangeFilter;
- var RelativeDateFilter = (function (_super) {
- __extends(RelativeDateFilter, _super);
- function RelativeDateFilter(worksheetName, fieldName, filterType, _anchorDate, _periodType, _rangeType, _rangeN) {
- var _this = _super.call(this, worksheetName, fieldName, filterType) || 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;
-
-
-/***/ },
-/* 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__(26);
- 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.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;
-
-
-/***/ },
-/* 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;
-
-
-/***/ },
-/* 36 */
-/***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- var api_internal_contract_1 = __webpack_require__(26);
- 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;
-
-
-/***/ },
-/* 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__(26);
- var api_utils_1 = __webpack_require__(28);
- var InternalToExternalEnumMappings_1 = __webpack_require__(32);
- var ParameterChangedEvent_1 = __webpack_require__(38);
- var GetDataModels_1 = __webpack_require__(13);
- var ServiceRegistry_1 = __webpack_require__(39);
- 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;
-
-
-/***/ },
-/* 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__(39);
- 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;
-
-
-/***/ },
-/* 39 */
-/***/ 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;
-
-
-/***/ },
-/* 40 */
-/***/ 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__(26);
- var SelectionModels_1 = __webpack_require__(41);
- 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 = {}));
-
-
-/***/ },
-/* 41 */
-/***/ 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;
-
-
-/***/ },
-/* 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 Sheet_1 = __webpack_require__(43);
- 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;
-
-
-/***/ },
-/* 43 */
-/***/ 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;
-
-
-/***/ },
-/* 44 */
-/***/ 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;
-
-
-/***/ },
-/* 45 */
-/***/ 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;
-
-
-/***/ },
-/* 46 */
-/***/ 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;
-
-
-/***/ },
-/* 47 */
-/***/ 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__(48);
- var SettingsServiceImpl_1 = __webpack_require__(49);
- 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;
-
-
-/***/ },
-/* 48 */
-/***/ 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;
-
-
-/***/ },
-/* 49 */
-/***/ 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;
-
-
-/***/ },
-/* 50 */
-/***/ 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.4.0"));
- return VersionNumber;
- }());
- exports.VersionNumber = VersionNumber;
-
-
-/***/ },
-/* 51 */
-/***/ 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__(52);
- var api_internal_contract_1 = __webpack_require__(2);
- var api_shared_1 = __webpack_require__(8);
- var DashboardObject_1 = __webpack_require__(53);
- var Worksheet_1 = __webpack_require__(54);
- var SheetImpl_1 = __webpack_require__(55);
- var SheetInfoImpl_1 = __webpack_require__(56);
- var WorksheetImpl_1 = __webpack_require__(57);
- 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;
-
-
-/***/ },
-/* 52 */
-/***/ 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));
-
-
-/***/ },
-/* 53 */
-/***/ 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;
-
-
-/***/ },
-/* 54 */
-/***/ 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__(43);
- 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;
-
-
-/***/ },
-/* 55 */
-/***/ 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;
-
-
-/***/ },
-/* 56 */
-/***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- var api_external_contract_1 = __webpack_require__(52);
- 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;
-
-
-/***/ },
-/* 57 */
-/***/ 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__(52);
- var api_internal_contract_1 = __webpack_require__(2);
- var api_shared_1 = __webpack_require__(8);
- var DataSource_1 = __webpack_require__(58);
- var DataSourceImpl_1 = __webpack_require__(59);
- var SheetImpl_1 = __webpack_require__(55);
- 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.createDataSourceById(primaryId, 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.createDataSourceById(secondaryId, 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.createDataSourceById = function (id, dataSourceInfo) {
- var dataSourceImpl = new DataSourceImpl_1.DataSourceImpl(dataSourceInfo);
- var dataSource = new DataSource_1.DataSource(dataSourceImpl);
- return dataSource;
- };
- return WorksheetImpl;
- }(SheetImpl_1.SheetImpl));
- exports.WorksheetImpl = WorksheetImpl;
-
-
-/***/ },
-/* 58 */
-/***/ 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.getUnderlyingData = function (options) {
- return this._dataSourceImpl.getUnderlyingData();
- };
- return DataSource;
- }());
- exports.DataSource = DataSource;
-
-
-/***/ },
-/* 59 */
-/***/ 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__(60);
- var Field_1 = __webpack_require__(61);
- var DataSourceImpl = (function () {
- function DataSourceImpl(_dataSourceInfo) {
- var _this = this;
- this._dataSourceInfo = _dataSourceInfo;
- this._fields = _dataSourceInfo.fields.map(function (fieldModel) {
- var fieldImpl = new FieldImpl_1.FieldImpl(fieldModel, _this);
- return new Field_1.Field(fieldImpl);
- });
- }
- 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.getUnderlyingData = function (options) {
- throw new Error('DataSource getUnderlyingData API not yet implemented.');
- };
- return DataSourceImpl;
- }());
- exports.DataSourceImpl = DataSourceImpl;
-
-
-/***/ },
-/* 60 */
-/***/ 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;
-
-
-/***/ },
-/* 61 */
-/***/ 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;
-
-
-/***/ },
-/* 62 */
-/***/ 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__(63);
- 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;
-
-
-/***/ },
-/* 63 */
-/***/ 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;
-
-
-/***/ },
-/* 64 */
-/***/ 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=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovLy93ZWJwYWNrL2Jvb3RzdHJhcCA0MGY1MTI0NDdjNjliMGE4Njc2NCIsIndlYnBhY2s6Ly8vLi4vc3JjL0FkZEluQXBpLnRzIiwid2VicGFjazovLy8uLi9zcmMvSW50ZXJuYWwvQWRkSW5JbXBsLnRzIiwid2VicGFjazovLy9EOi9kZXYvdHlwZXNjcmlwdC9qcy1hcGkvYXBpLWludGVybmFsLWNvbnRyYWN0L3NyYy9BcGlJbnRlcm5hbENvbnRyYWN0LnRzIiwid2VicGFjazovLy9EOi9kZXYvdHlwZXNjcmlwdC9qcy1hcGkvYXBpLWludGVybmFsLWNvbnRyYWN0L3NyYy9pbnRlcmZhY2UvRW51bXMudHMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi90eXBlc2NyaXB0L2pzLWFwaS9hcGktaW50ZXJuYWwtY29udHJhY3Qvc3JjL2ludGVyZmFjZS9JbnRlcm5hbEFwaURpc3BhdGNoZXIudHMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi90eXBlc2NyaXB0L2pzLWFwaS9hcGktaW50ZXJuYWwtY29udHJhY3Qvc3JjL2ludGVyZmFjZS9Ob3RpZmljYXRpb25zLnRzIiwid2VicGFjazovLy9EOi9kZXYvdHlwZXNjcmlwdC9qcy1hcGkvYXBpLWludGVybmFsLWNvbnRyYWN0L3NyYy9pbnRlcmZhY2UvUGFyYW1ldGVycy50cyIsIndlYnBhY2s6Ly8vRDovZGV2L3R5cGVzY3JpcHQvanMtYXBpL2FwaS1pbnRlcm5hbC1jb250cmFjdC9zcmMvaW50ZXJmYWNlL1ZlcmJzLnRzIiwid2VicGFjazovLy9EOi9kZXYvdHlwZXNjcmlwdC9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvQXBpU2hhcmVkLnRzIiwid2VicGFjazovLy9EOi9kZXYvdHlwZXNjcmlwdC9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvRXZlbnRMaXN0ZW5lck1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi90eXBlc2NyaXB0L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9QYXJhbWV0ZXIudHMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi90eXBlc2NyaXB0L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9Qb2ludC50cyIsIndlYnBhY2s6Ly8vRDovZGV2L3R5cGVzY3JpcHQvanMtYXBpL2FwaS1zaGFyZWQvc3JjL1NpemUudHMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi90eXBlc2NyaXB0L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9Nb2RlbHMvR2V0RGF0YU1vZGVscy50cyIsIndlYnBhY2s6Ly8vRDovZGV2L3R5cGVzY3JpcHQvanMtYXBpL2FwaS1zaGFyZWQvc3JjL0V4Y2VwdGlvbnMvVGFibGVhdUV4Y2VwdGlvbnMudHMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi90eXBlc2NyaXB0L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9FdmVudHMvRmlsdGVyQ2hhbmdlZEV2ZW50LnRzIiwid2VicGFjazovLy9EOi9kZXYvdHlwZXNjcmlwdC9qcy1hcGkvYXBpLWV4dGVybmFsLWNvbnRyYWN0L3NyYy9BcGlFeHRlcm5hbENvbnRyYWN0LnRzIiwid2VicGFjazovLy9EOi9kZXYvdHlwZXNjcmlwdC9qcy1hcGkvYXBpLWV4dGVybmFsLWNvbnRyYWN0L3NyYy9FbnVtcy50cyIsIndlYnBhY2s6Ly8vRDovZGV2L3R5cGVzY3JpcHQvanMtYXBpL2FwaS1zaGFyZWQvc3JjL0V2ZW50cy9UYWJsZWF1V29ya3NoZWV0RXZlbnQudHMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi90eXBlc2NyaXB0L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9FdmVudHMvVGFibGVhdVNoZWV0RXZlbnQudHMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi90eXBlc2NyaXB0L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9FdmVudHMvVGFibGVhdUV2ZW50LnRzIiwid2VicGFjazovLy9EOi9kZXYvdHlwZXNjcmlwdC9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvRXZlbnRzL01hcmtzU2VsZWN0ZWRFdmVudC50cyIsIndlYnBhY2s6Ly8vRDovZGV2L3R5cGVzY3JpcHQvanMtYXBpL2FwaS1zaGFyZWQvc3JjL0ludGVybmFsL1NpbmdsZUV2ZW50TWFuYWdlckltcGwudHMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi90eXBlc2NyaXB0L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9TZXJ2aWNlcy9HZXREYXRhU2VydmljZS50cyIsIndlYnBhY2s6Ly8vRDovZGV2L3R5cGVzY3JpcHQvanMtYXBpL2FwaS1zaGFyZWQvc3JjL1NlcnZpY2VzL1JlZ2lzdGVyQWxsU2hhcmVkU2VydmljZXMudHMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi90eXBlc2NyaXB0L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9TZXJ2aWNlcy9pbXBsL0RhdGFTb3VyY2VTZXJ2aWNlSW1wbC50cyIsIndlYnBhY2s6Ly8vRDovZGV2L3R5cGVzY3JpcHQvanMtYXBpL2FwaS1zaGFyZWQvc3JjL1NlcnZpY2VzL2ltcGwvRmlsdGVyU2VydmljZUltcGwudHMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi90eXBlc2NyaXB0L2pzLWFwaS9hcGktdXRpbHMvc3JjL0FwaVV0aWxzLnRzIiwid2VicGFjazovLy9EOi9kZXYvdHlwZXNjcmlwdC9qcy1hcGkvYXBpLXV0aWxzL3NyYy9FbnVtQ29udmVydGVyLnRzIiwid2VicGFjazovLy9EOi9kZXYvdHlwZXNjcmlwdC9qcy1hcGkvYXBpLXV0aWxzL3NyYy9QYXJhbS50cyIsIndlYnBhY2s6Ly8vRDovZGV2L3R5cGVzY3JpcHQvanMtYXBpL2FwaS1zaGFyZWQvc3JjL0VudW1NYXBwaW5ncy9FeHRlcm5hbFRvSW50ZXJuYWxFbnVtTWFwcGluZ3MudHMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi90eXBlc2NyaXB0L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9FbnVtTWFwcGluZ3MvSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzLnRzIiwid2VicGFjazovLy9EOi9kZXYvdHlwZXNjcmlwdC9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvTW9kZWxzL0ZpbHRlck1vZGVscy50cyIsIndlYnBhY2s6Ly8vRDovZGV2L3R5cGVzY3JpcHQvanMtYXBpL2FwaS1zaGFyZWQvc3JjL1NlcnZpY2VzL2ltcGwvR2V0RGF0YVNlcnZpY2VJbXBsLnRzIiwid2VicGFjazovLy9EOi9kZXYvdHlwZXNjcmlwdC9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvU2VydmljZXMvaW1wbC9Ob3RpZmljYXRpb25TZXJ2aWNlSW1wbC50cyIsIndlYnBhY2s6Ly8vRDovZGV2L3R5cGVzY3JpcHQvanMtYXBpL2FwaS1zaGFyZWQvc3JjL1NlcnZpY2VzL2ltcGwvUGFyYW1ldGVyc1NlcnZpY2VJbXBsLnRzIiwid2VicGFjazovLy9EOi9kZXYvdHlwZXNjcmlwdC9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvSW50ZXJuYWwvUGFyYW1ldGVySW1wbC50cyIsIndlYnBhY2s6Ly8vRDovZGV2L3R5cGVzY3JpcHQvanMtYXBpL2FwaS1zaGFyZWQvc3JjL0V2ZW50cy9QYXJhbWV0ZXJDaGFuZ2VkRXZlbnQudHMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi90eXBlc2NyaXB0L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9TZXJ2aWNlcy9TZXJ2aWNlUmVnaXN0cnkudHMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi90eXBlc2NyaXB0L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9TZXJ2aWNlcy9pbXBsL1NlbGVjdGlvblNlcnZpY2VJbXBsLnRzIiwid2VicGFjazovLy9EOi9kZXYvdHlwZXNjcmlwdC9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvTW9kZWxzL1NlbGVjdGlvbk1vZGVscy50cyIsIndlYnBhY2s6Ly8vLi4vc3JjL0Rhc2hib2FyZC50cyIsIndlYnBhY2s6Ly8vLi4vc3JjL1NoZWV0LnRzIiwid2VicGFjazovLy8uLi9zcmMvTmFtZXNwYWNlcy9EYXNoYm9hcmRDb250ZW50LnRzIiwid2VicGFjazovLy8uLi9zcmMvTmFtZXNwYWNlcy9FbnZpcm9ubWVudC50cyIsIndlYnBhY2s6Ly8vLi4vc3JjL05hbWVzcGFjZXMvU2V0dGluZ3MudHMiLCJ3ZWJwYWNrOi8vLy4uL3NyYy9TZXJ2aWNlcy9SZWdpc3RlckFsbEFkZEluU2VydmljZXMudHMiLCJ3ZWJwYWNrOi8vLy4uL3NyYy9TZXJ2aWNlcy9JbXBsL0luaXRpYWxpemF0aW9uU2VydmljZUltcGwudHMiLCJ3ZWJwYWNrOi8vLy4uL3NyYy9TZXJ2aWNlcy9JbXBsL1NldHRpbmdzU2VydmljZUltcGwudHMiLCJ3ZWJwYWNrOi8vLy4uL3NyYy9WZXJzaW9uTnVtYmVyLnRzIiwid2VicGFjazovLy8uLi9zcmMvSW50ZXJuYWwvRGFzaGJvYXJkSW1wbC50cyIsIndlYnBhY2s6Ly8vLi4vc3JjL0Rhc2hib2FyZE9iamVjdC50cyIsIndlYnBhY2s6Ly8vLi4vc3JjL1dvcmtzaGVldC50cyIsIndlYnBhY2s6Ly8vLi4vc3JjL0ludGVybmFsL1NoZWV0SW1wbC50cyIsIndlYnBhY2s6Ly8vLi4vc3JjL0ludGVybmFsL1NoZWV0SW5mb0ltcGwudHMiLCJ3ZWJwYWNrOi8vLy4uL3NyYy9JbnRlcm5hbC9Xb3Jrc2hlZXRJbXBsLnRzIiwid2VicGFjazovLy8uLi9zcmMvRGF0YVNvdXJjZS50cyIsIndlYnBhY2s6Ly8vLi4vc3JjL0ludGVybmFsL0RhdGFTb3VyY2VJbXBsLnRzIiwid2VicGFjazovLy8uLi9zcmMvSW50ZXJuYWwvRmllbGRJbXBsLnRzIiwid2VicGFjazovLy8uLi9zcmMvRmllbGQudHMiLCJ3ZWJwYWNrOi8vLy4uL3NyYy9JbnRlcm5hbC9TZXR0aW5nc0ltcGwudHMiLCJ3ZWJwYWNrOi8vLy4uL3NyYy9OYW1lc3BhY2VzL0FkZEluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxPO0FDVkE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsdUJBQWU7QUFDZjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7Ozs7Ozs7QUN0Q0E7Ozs7SUFJRzs7QUFFSCwyRkFBMEY7QUFDMUYsNkZBQTRGO0FBQzVGLG1CQUFrQjtBQUVsQiwwQ0FBaUQ7QUFDakQsdUNBQTJDO0FBRTNDLEtBQU0sU0FBUyxHQUFHLElBQUkscUJBQVMsRUFBRSxDQUFDO0FBQ3JCLGNBQUssR0FBRyxJQUFJLGFBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUUxQyxnQkFBZTtBQUNmLDRFQUEyRTtBQUMzRSx1REF5QndDO0FBeEJ0Qyw0REFBWTtBQUNaLHNEQUFTO0FBQ1QsMEVBQW1CO0FBQ25CLHdEQUFVO0FBQ1YsMEVBQW1CO0FBQ25CLG9EQUFRO0FBQ1IsOERBQWE7QUFDYixrRUFBZTtBQUNmLDREQUFZO0FBQ1osd0RBQVU7QUFDViw0RUFBb0I7QUFDcEIsOERBQWE7QUFDYix3REFBVTtBQUNWLG9FQUFnQjtBQUNoQixvRUFBZ0I7QUFDaEIsb0RBQVE7QUFDUix3RUFBa0I7QUFDbEIsd0RBQVU7QUFDVix3RUFBa0I7QUFDbEIsMEVBQW1CO0FBQ25CLHNEQUFTO0FBQ1QsOERBQWE7QUFDYixvRUFBZ0I7QUFDaEIsd0VBQWtCOzs7Ozs7Ozs7QUMxQ3BCLHNEQU13QztBQUN4QywyQ0FBb0Y7QUFFcEYsMkNBQXlDO0FBQ3pDLGtEQUFrRTtBQUNsRSw2Q0FBd0Q7QUFDeEQsMENBQWtEO0FBR2xELDBEQUFnRjtBQUNoRiwrQ0FBaUQ7QUFDakQsK0NBQWdEO0FBQ2hELDhDQUE4QztBQUU5QztLQUFBO0tBd0RBLENBQUM7S0FqRFEsbUNBQWUsR0FBdEI7U0FBQSxpQkFlQztTQWRDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQzthQUNqQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxPQUFPLENBQU8sVUFBQyxPQUFPLEVBQUUsTUFBTTtpQkFDOUQsdUdBQXVHO2lCQUN2RyxFQUFFLENBQUMsQ0FBQyxtREFBMkIsQ0FBQyw4QkFBOEIsRUFBRSxDQUFDLENBQUMsQ0FBQztxQkFDakUsdUNBQXVDO3FCQUN2QyxJQUFNLHdCQUF3QixHQUFHLG1EQUEyQixDQUFDLDJCQUEyQixFQUFFLENBQUM7cUJBQzNGLHdCQUF3QixDQUFDLElBQUksQ0FBQyxLQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQVEsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDakcsQ0FBQztpQkFBQyxJQUFJLENBQUMsQ0FBQztxQkFDTixNQUFNLENBQUMscURBQXFELENBQUMsQ0FBQztpQkFDaEUsQ0FBQzthQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0wsQ0FBQztTQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUM7S0FDckMsQ0FBQztLQUVPLHdDQUFvQixHQUE1QixVQUE2QixVQUFpQztTQUE5RCxpQkFvQkM7U0FuQkMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLDZCQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7U0FFcEQsb0ZBQW9GO1NBQ3BGLHNDQUF5QixDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ3RDLG1EQUF3QixDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBRXJDLDREQUE0RDtTQUM1RCxJQUFNLHFCQUFxQixHQUFHLCtCQUFrQixDQUFDLFFBQVEsQ0FBQyxVQUFVLHFEQUMxQixDQUFDO1NBRTNDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyw2QkFBNkIsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBTTthQUN0RSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7aUJBQ2hELE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQzthQUNoRCxDQUFDO2FBRUQsS0FBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUksQ0FBQywwQkFBMEIsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDL0gsS0FBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLHlCQUFXLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7YUFDNUQsS0FBSSxDQUFDLFFBQVEsR0FBRyxLQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7U0FDcEUsQ0FBQyxDQUFDLENBQUM7S0FDTCxDQUFDO0tBRU8sOENBQTBCLEdBQWxDLFVBQW1DLElBQXdCLEVBQUUsU0FBb0I7U0FDL0UsSUFBTSxhQUFhLEdBQUcsSUFBSSw2QkFBYSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztTQUN6RCxJQUFNLFNBQVMsR0FBRyxJQUFJLHFCQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDL0MsTUFBTSxDQUFDLElBQUksbUNBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDekMsQ0FBQztLQUVPLHNDQUFrQixHQUExQixVQUEyQixZQUErQjtTQUN4RCxJQUFNLFlBQVksR0FBRyxJQUFJLDJCQUFZLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDcEQsTUFBTSxDQUFDLElBQUksbUJBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztLQUNwQyxDQUFDO0tBQ0gsZ0JBQUM7QUFBRCxFQUFDO0FBeERZLCtCQUFTOzs7Ozs7OztBQ3BCdEI7Ozs7SUFJRzs7Ozs7QUFFSCxrQ0FBa0M7QUFDbEMsa0NBQWtEO0FBRWxELGtDQUEwQztBQUMxQyxrQ0FBdUM7QUFDdkMsa0NBQWtDOzs7Ozs7Ozs7QUNYbEMsS0FBWSxZQUlYO0FBSkQsWUFBWSxZQUFZO0tBQ3RCLG1DQUFtQjtLQUNuQixpQ0FBaUI7S0FDakIsbUNBQW1CO0FBQ3JCLEVBQUMsRUFKVyxZQUFZLEdBQVosb0JBQVksS0FBWixvQkFBWSxRQUl2QjtBQUVELEtBQVksU0FJWDtBQUpELFlBQVksU0FBUztLQUNuQixvQ0FBdUI7S0FDdkIsZ0NBQW1CO0tBQ25CLGdDQUFtQjtBQUNyQixFQUFDLEVBSlcsU0FBUyxHQUFULGlCQUFTLEtBQVQsaUJBQVMsUUFJcEI7QUFFRCxLQUFZLFVBR1g7QUFIRCxZQUFZLFVBQVU7S0FDcEIsbUNBQXFCO0tBQ3JCLHVDQUF5QjtBQUMzQixFQUFDLEVBSFcsVUFBVSxHQUFWLGtCQUFVLEtBQVYsa0JBQVUsUUFHckI7QUFFRCxLQUFZLG1CQVlYO0FBWkQsWUFBWSxtQkFBbUI7S0FDN0Isc0NBQWU7S0FDZiw4Q0FBdUI7S0FDdkIsbURBQTRCO0tBQzVCLDZEQUFzQztLQUN0QyxpREFBMEI7S0FDMUIsd0NBQWlCO0tBQ2pCLHNDQUFlO0tBQ2Ysb0NBQWE7S0FDYixzQ0FBZTtLQUNmLDJDQUFvQjtLQUNwQixzQ0FBZTtBQUNqQixFQUFDLEVBWlcsbUJBQW1CLEdBQW5CLDJCQUFtQixLQUFuQiwyQkFBbUIsUUFZOUI7QUFFRCxLQUFZLFFBUVg7QUFSRCxZQUFZLFFBQVE7S0FDbEIsNkJBQWlCO0tBQ2pCLHVCQUFXO0tBQ1gsMkJBQWU7S0FDZix5QkFBYTtLQUNiLHlCQUFhO0tBQ2Isa0NBQXNCO0tBQ3RCLCtCQUFtQjtBQUNyQixFQUFDLEVBUlcsUUFBUSxHQUFSLGdCQUFRLEtBQVIsZ0JBQVEsUUFRbkI7QUFFRCxLQUFZLGVBS1g7QUFMRCxZQUFZLGVBQWU7S0FDekIsb0NBQWlCO0tBQ2pCLG9DQUFpQjtLQUNqQixnQ0FBYTtLQUNiLHNDQUFtQjtBQUNyQixFQUFDLEVBTFcsZUFBZSxHQUFmLHVCQUFlLEtBQWYsdUJBQWUsUUFLMUI7QUFFRCxLQUFZLFNBS1g7QUFMRCxZQUFZLFNBQVM7S0FDbkIseUNBQTRCO0tBQzVCLDJFQUE4RDtLQUM5RCxnRUFBbUQ7S0FDbkQsbUVBQXNEO0FBQ3hELEVBQUMsRUFMVyxTQUFTLEdBQVQsaUJBQVMsS0FBVCxpQkFBUyxRQUtwQjtBQUVELEtBQVksb0JBd0NYO0FBeENELFlBQVksb0JBQW9CO0tBQzlCLG1DQUFXO0tBQ1gsbUNBQVc7S0FDWCxtQ0FBVztLQUNYLG1DQUFXO0tBQ1gsdUNBQWU7S0FDZix5Q0FBaUI7S0FDakIsbUNBQVc7S0FDWCxxQ0FBYTtLQUNiLHVDQUFlO0tBQ2YseUNBQWlCO0tBQ2pCLHlDQUFpQjtLQUNqQixxQ0FBYTtLQUNiLHFDQUFhO0tBQ2IscUNBQWE7S0FDYixtQ0FBVztLQUNYLHVDQUFlO0tBQ2YsbUNBQVc7S0FDWCxxQ0FBYTtLQUNiLHlDQUFpQjtLQUNqQix5Q0FBaUI7S0FDakIscUNBQWE7S0FDYiwyQ0FBbUI7S0FDbkIsZ0RBQXdCO0tBQ3hCLG1DQUFXO0tBQ1gsbUNBQVc7S0FDWCxnREFBd0I7S0FDeEIsOENBQXNCO0tBQ3RCLGtEQUEwQjtLQUMxQixnREFBd0I7S0FDeEIsOENBQXNCO0tBQ3RCLGdEQUF3QjtLQUN4QixvREFBNEI7S0FDNUIsb0RBQTRCO0tBQzVCLHlDQUFpQjtLQUNqQix5Q0FBaUI7S0FDakIsNkNBQXFCO0tBQ3JCLDZDQUFxQjtLQUNyQix3Q0FBZ0I7S0FDaEIscUNBQWE7QUFDZixFQUFDLEVBeENXLG9CQUFvQixHQUFwQiw0QkFBb0IsS0FBcEIsNEJBQW9CLFFBd0MvQjtBQUVELEtBQVksYUFJWDtBQUpELFlBQVksYUFBYTtLQUN2Qix3Q0FBdUI7S0FDdkIsb0NBQW1CO0tBQ25CLG9DQUFtQjtBQUNyQixFQUFDLEVBSlcsYUFBYSxHQUFiLHFCQUFhLEtBQWIscUJBQWEsUUFJeEI7QUFFRDs7SUFFRztBQUNILEtBQVksZ0JBS1g7QUFMRCxZQUFZLGdCQUFnQjtLQUMxQiwrQkFBVztLQUNYLCtCQUFXO0tBQ1gsdUNBQW1CO0tBQ25CLHFDQUFpQjtBQUNuQixFQUFDLEVBTFcsZ0JBQWdCLEdBQWhCLHdCQUFnQixLQUFoQix3QkFBZ0IsUUFLM0I7QUFFRCxLQUFZLFNBS1g7QUFMRCxZQUFZLFNBQVM7S0FDbkIsb0NBQXVCO0tBQ3ZCLDRCQUFlO0tBQ2Ysb0NBQXVCO0tBQ3ZCLDRCQUFlO0FBQ2pCLEVBQUMsRUFMVyxTQUFTLEdBQVQsaUJBQVMsS0FBVCxpQkFBUyxRQUtwQjtBQUVELEtBQVkscUJBSVg7QUFKRCxZQUFZLHFCQUFxQjtLQUMvQixvQ0FBVztLQUNYLHNDQUFhO0tBQ2Isd0NBQWU7QUFDakIsRUFBQyxFQUpXLHFCQUFxQixHQUFyQiw2QkFBcUIsS0FBckIsNkJBQXFCLFFBSWhDO0FBRUQsS0FBWSxjQVNYO0FBVEQsWUFBWSxjQUFjO0tBQ3hCLGlDQUFlO0tBQ2YsdUNBQXFCO0tBQ3JCLG1DQUFpQjtLQUNqQixpQ0FBZTtLQUNmLCtCQUFhO0tBQ2IsaUNBQWU7S0FDZixxQ0FBbUI7S0FDbkIscUNBQW1CO0FBQ3JCLEVBQUMsRUFUVyxjQUFjLEdBQWQsc0JBQWMsS0FBZCxzQkFBYyxRQVN6QjtBQUVEOztJQUVHO0FBQ0gsS0FBWSxnQkFJWDtBQUpELFlBQVksZ0JBQWdCO0tBQzFCLDZDQUF5QjtLQUN6QixtREFBK0I7S0FDL0IsMkNBQXVCO0FBQ3pCLEVBQUMsRUFKVyxnQkFBZ0IsR0FBaEIsd0JBQWdCLEtBQWhCLHdCQUFnQixRQUkzQjtBQUVEOztJQUVHO0FBQ0gsS0FBWSxtQkFJWDtBQUpELFlBQVksbUJBQW1CO0tBQzdCLGlEQUEwQjtLQUMxQix5Q0FBa0I7S0FDbEIsK0NBQXdCO0FBQzFCLEVBQUMsRUFKVyxtQkFBbUIsR0FBbkIsMkJBQW1CLEtBQW5CLDJCQUFtQixRQUk5QjtBQUVEOztJQUVHO0FBQ0gsS0FBWSwwQkFJWDtBQUpELFlBQVksMEJBQTBCO0tBQ3BDLDBEQUE0QjtLQUM1QixpRUFBbUM7S0FDbkMsd0RBQTBCO0FBQzVCLEVBQUMsRUFKVywwQkFBMEIsR0FBMUIsa0NBQTBCLEtBQTFCLGtDQUEwQixRQUlyQztBQUVEOztJQUVHO0FBQ0gsS0FBWSxRQVlYO0FBWkQsWUFBWSxRQUFRO0tBQ2hCLHVCQUFXO0tBQ1gseUJBQWE7S0FDYix5QkFBYTtLQUNiLDZCQUFpQjtLQUNqQiw2QkFBaUI7S0FDakIsMkJBQWU7S0FDZix5QkFBYTtLQUNiLHVCQUFXO0tBQ1gsdUJBQVc7S0FDWCxrQ0FBc0I7S0FDdEIsK0JBQW1CO0FBQ3ZCLEVBQUMsRUFaVyxRQUFRLEdBQVIsZ0JBQVEsS0FBUixnQkFBUSxRQVluQjtBQUVEOztJQUVHO0FBQ0gsS0FBWSxVQUtYO0FBTEQsWUFBWSxVQUFVO0tBQ3BCLHlDQUEyQjtLQUMzQiw2QkFBZTtLQUNmLDJDQUE2QjtLQUM3QiwyQ0FBNkI7QUFDL0IsRUFBQyxFQUxXLFVBQVUsR0FBVixrQkFBVSxLQUFWLGtCQUFVLFFBS3JCO0FBRUQ7O0lBRUc7QUFDSCxLQUFZLGFBeUJYO0FBekJELFlBQVksYUFBYTtLQUN2Qjs7UUFFRztLQUNILDhCQUFhO0tBQ2I7O1FBRUc7S0FDSCxnQ0FBZTtLQUNmOztRQUVHO0tBQ0gsOEJBQWE7S0FDYjs7UUFFRztLQUNILGdDQUFlO0tBQ2Y7O1FBRUc7S0FDSCxvQ0FBbUI7S0FDbkI7O1FBRUc7S0FDSCxrQ0FBaUI7QUFDbkIsRUFBQyxFQXpCVyxhQUFhLEdBQWIscUJBQWEsS0FBYixxQkFBYSxRQXlCeEI7Ozs7Ozs7OztBQzVMRCxLQUFpQiwyQkFBMkIsQ0FZM0M7QUFaRCxZQUFpQiwyQkFBMkI7S0FDMUM7U0FDRSxNQUFNLENBQUMsTUFBTSxDQUFDLDBCQUEwQixDQUFDO0tBQzNDLENBQUM7S0FGZSx1REFBMkIsOEJBRTFDO0tBRUQ7U0FDRSxNQUFNLENBQUMsQ0FBQyxDQUFDLDJCQUEyQixDQUFDLDJCQUEyQixFQUFFLENBQUM7S0FDckUsQ0FBQztLQUZlLDBEQUE4QixpQ0FFN0M7S0FFRCxxQ0FBNEMsVUFBMEM7U0FDcEYsTUFBTSxDQUFDLDBCQUEwQixHQUFHLFVBQVUsQ0FBQztLQUNqRCxDQUFDO0tBRmUsdURBQTJCLDhCQUUxQztBQUNILEVBQUMsRUFaZ0IsMkJBQTJCLEdBQTNCLG1DQUEyQixLQUEzQixtQ0FBMkIsUUFZM0M7Ozs7Ozs7OztBQzNDRCxLQUFZLGNBSVg7QUFKRCxZQUFZLGNBQWM7S0FDeEIsaUVBQStDO0tBQy9DLHdEQUFzQztLQUN0QyxrREFBZ0M7QUFDbEMsRUFBQyxFQUpXLGNBQWMsR0FBZCxzQkFBYyxLQUFkLHNCQUFjLFFBSXpCOzs7Ozs7Ozs7QUNKRCxLQUFZLFdBMENYO0FBMUNELFlBQVksV0FBVztLQUNyQiw4Q0FBK0I7S0FDL0IsMkRBQTRDO0tBQzVDLHlEQUEwQztLQUMxQyxxQ0FBc0I7S0FDdEIsdUNBQXdCO0tBQ3hCLCtDQUFnQztLQUNoQyxtREFBb0M7S0FDcEMsd0RBQXlDO0tBQ3pDLG1DQUFvQjtLQUNwQiw0REFBNkM7S0FDN0MsMkVBQTREO0tBQzVELGlEQUFrQztLQUNsQyw2Q0FBOEI7S0FDOUIsbURBQW9DO0tBRW5DLGdCQUFnQjtLQUNqQix1Q0FBd0I7S0FDeEIsNkNBQThCO0tBQzlCLHNEQUF1QztLQUN2QywyQ0FBNEI7S0FDNUIsa0RBQW1DO0tBQ25DLGtEQUFtQztLQUNuQyxpRUFBa0Q7S0FDbEQscURBQXNDO0tBRXRDLCtDQUFnQztLQUNoQywwQ0FBMkI7S0FFM0IsK0NBQWdDO0tBQ2hDLGlEQUFrQztLQUNsQyxxREFBc0M7S0FDdEMsMERBQTJDO0tBQzNDLGlEQUFrQztLQUNsQyxzQ0FBdUI7S0FDdkIsMERBQTJDO0tBQzNDLDBFQUEyRDtLQUMzRCwyRUFBNEQ7S0FDNUQsc0VBQXVEO0tBRXZELDhDQUErQjtLQUMvQix5Q0FBMEI7QUFDNUIsRUFBQyxFQTFDVyxXQUFXLEdBQVgsbUJBQVcsS0FBWCxtQkFBVyxRQTBDdEI7Ozs7Ozs7OztBQzFDRCw4RkFBNkY7QUFDN0YsS0FBWSxNQWtCWDtBQWxCRCxZQUFZLE1BQU07S0FDaEIsdURBQTZDO0tBQzdDLDJDQUFpQztLQUNqQyxzQ0FBNEI7S0FDNUIsK0NBQXFDO0tBQ3JDLGlEQUF1QztLQUN2QyxtREFBeUM7S0FDekMsb0RBQTBDO0tBQzFDLGlEQUF1QztLQUN2Qyx1REFBNkM7S0FDN0MsNERBQWtEO0tBQ2xELDBDQUFnQztLQUNoQyx5REFBK0M7S0FDL0MscURBQTJDO0tBQzNDLDJDQUFpQztLQUNqQyw2Q0FBbUM7S0FDbkMsbURBQXlDO0tBQ3pDLG9DQUEwQjtBQUM1QixFQUFDLEVBbEJXLE1BQU0sR0FBTixjQUFNLEtBQU4sY0FBTSxRQWtCakI7Ozs7Ozs7O0FDbkJEOzs7O0lBSUc7Ozs7O0FBRUgsa0NBQXVDO0FBQ3ZDLG1DQUE0QjtBQUM1Qix1Q0FBZ0M7QUFBdkIsOEJBQUs7QUFFZCxzQ0FBOEI7QUFBckIsMkJBQUk7QUFDYixtQ0FBdUM7QUFDdkMsbUNBQStDO0FBQy9DLG1DQUE0QztBQUM1QyxtQ0FBNEM7QUFDNUMsbUNBQXNDO0FBQ3RDLG1DQUEyQztBQUMzQyxtQ0FBK0M7QUFDL0MsbUNBQWtEO0FBRWxELG1DQUEwQztBQUkxQyxtQ0FBcUQ7QUFFckQsbUNBQTJDO0FBQzNDLG1DQUE4RDs7Ozs7Ozs7O0FDdkI5RDs7O0lBR0c7QUFDSDtLQUdFO1NBQ0UsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEVBQUUsQ0FBQztLQUNuQyxDQUFDO0tBRU0sK0NBQWdCLEdBQXZCLFVBQXdCLFNBQW9DLEVBQ3BDLE9BQXVDO1NBQzdELEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDM0QsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBNEIsU0FBVyxDQUFDLENBQUM7U0FDM0QsQ0FBQztTQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDMUUsQ0FBQztLQUVNLGtEQUFtQixHQUExQixVQUEyQixTQUFvQyxFQUFFLE9BQXVDO1NBQ3RHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDM0QsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBNEIsU0FBVyxDQUFDLENBQUM7U0FDM0QsQ0FBQztTQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDN0UsQ0FBQztLQUVTLDhDQUFlLEdBQXpCLFVBQTBCLFlBQWdDO1NBQ3hELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsWUFBWSxDQUFDO0tBQ3JFLENBQUM7S0FDSCwyQkFBQztBQUFELEVBQUM7QUEzQlkscURBQW9COzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDTmpDLHFEQUE4RDtBQUc5RDs7O0lBR0c7QUFDSDtLQUErQiw2QkFBb0I7S0FDakQsbUJBQTJCLGFBQTRCLEVBQUUsS0FBcUI7U0FBOUUsWUFDRSxpQkFBTyxTQUlSO1NBTDBCLG1CQUFhLEdBQWIsYUFBYSxDQUFlO1NBR3JELCtDQUErQztTQUMvQyxLQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFDLElBQUksWUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBdkIsQ0FBdUIsQ0FBQyxDQUFDOztLQUNuRixDQUFDO0tBRUQsc0JBQVcsMkJBQUk7Y0FBZjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztTQUNqQyxDQUFDOzs7UUFBQTtLQUVELHNCQUFXLG1DQUFZO2NBQXZCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDO1NBQ3pDLENBQUM7OztRQUFBO0tBRUQsc0JBQVcsK0JBQVE7Y0FBbkI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7U0FDckMsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyxzQ0FBZTtjQUExQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQztTQUM1QyxDQUFDOzs7UUFBQTtLQUVNLG9DQUFnQixHQUF2QixVQUF3QixRQUEwQztTQUNoRSxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUN2RCxDQUFDO0tBQ0gsZ0JBQUM7QUFBRCxFQUFDLENBM0I4QiwyQ0FBb0IsR0EyQmxEO0FBM0JZLCtCQUFTOzs7Ozs7Ozs7QUNQdEI7S0FDRSxlQUEyQixFQUFVLEVBQVUsRUFBVTtTQUE5QixPQUFFLEdBQUYsRUFBRSxDQUFRO1NBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBUTtLQUFJLENBQUM7S0FFOUQsc0JBQVcsb0JBQUM7Y0FBWjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1NBQ2pCLENBQUM7OztRQUFBO0tBRUQsc0JBQVcsb0JBQUM7Y0FBWjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1NBQ2pCLENBQUM7OztRQUFBO0tBQ0gsWUFBQztBQUFELEVBQUM7QUFWWSx1QkFBSzs7Ozs7Ozs7O0FDQWxCO0tBQ0UsY0FBMkIsT0FBZSxFQUFVLE1BQWM7U0FBdkMsWUFBTyxHQUFQLE9BQU8sQ0FBUTtTQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7S0FBSSxDQUFDO0tBRXZFLHNCQUFXLHdCQUFNO2NBQWpCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDdEIsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyx1QkFBSztjQUFoQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQ3JCLENBQUM7OztRQUFBO0tBQ0gsV0FBQztBQUFELEVBQUM7QUFWWSxxQkFBSTs7Ozs7Ozs7O0FDQWpCO0tBR0UsbUJBQ1UsS0FBdUMsRUFDdkMsUUFBZ0MsRUFDaEMsY0FBc0IsRUFDdEIsY0FBdUIsRUFDdkIsVUFBNEI7U0FKNUIsVUFBSyxHQUFMLEtBQUssQ0FBa0M7U0FDdkMsYUFBUSxHQUFSLFFBQVEsQ0FBd0I7U0FDaEMsbUJBQWMsR0FBZCxjQUFjLENBQVE7U0FDdEIsbUJBQWMsR0FBZCxjQUFjLENBQVM7U0FDdkIsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7U0FDaEMscUNBQXFDO1NBQ3JDLElBQUksQ0FBQyxLQUFLLEdBQUcsY0FBYyxHQUFHLG9CQUFvQixHQUFHLHVCQUF1QixDQUFDO0tBQ2pGLENBQUM7S0FFSCxzQkFBVywyQkFBSTtjQUFmO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDcEIsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVywyQkFBSTtjQUFmO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDcEIsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyw4QkFBTztjQUFsQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ3ZCLENBQUM7OztRQUFBO0tBRUQsc0JBQVcsZ0NBQVM7Y0FBcEI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztTQUN6QixDQUFDOzs7UUFBQTtLQUVELHNCQUFXLG9DQUFhO2NBQXhCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7U0FDN0IsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyxvQ0FBYTtjQUF4QjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO1NBQzdCLENBQUM7OztRQUFBO0tBQ0gsZ0JBQUM7QUFBRCxFQUFDO0FBcENZLCtCQUFTO0FBc0N0QjtLQUNFLGtCQUNVLEtBQXdCLEVBQ3hCLE1BQWMsRUFDZCxRQUFpQjtTQUZqQixVQUFLLEdBQUwsS0FBSyxDQUFtQjtTQUN4QixXQUFNLEdBQU4sTUFBTSxDQUFRO1NBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBUztLQUN4QixDQUFDO0tBRUosc0JBQVcsMEJBQUk7Y0FBZjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ3BCLENBQUM7OztRQUFBO0tBRUQsc0JBQVcsMkJBQUs7Y0FBaEI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUNyQixDQUFDOzs7UUFBQTtLQUVELHNCQUFXLDZCQUFPO2NBQWxCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7U0FDdkIsQ0FBQzs7O1FBQUE7S0FDSCxlQUFDO0FBQUQsRUFBQztBQWxCWSw2QkFBUTtBQW9CckI7S0FDRSxnQkFDVSxVQUFrQixFQUNsQixTQUE0QixFQUFFLG9DQUFvQztTQUNsRSxhQUFzQixFQUN0QixNQUFjO1NBSGQsZUFBVSxHQUFWLFVBQVUsQ0FBUTtTQUNsQixjQUFTLEdBQVQsU0FBUyxDQUFtQjtTQUM1QixrQkFBYSxHQUFiLGFBQWEsQ0FBUztTQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFRO0tBQUcsQ0FBQztLQUU1QixzQkFBVyw2QkFBUztjQUFwQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1NBQ3pCLENBQUM7OztRQUFBO0tBRUQsc0JBQVcsNEJBQVE7Y0FBbkI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztTQUN4QixDQUFDOzs7UUFBQTtLQUVELHNCQUFXLGdDQUFZO2NBQXZCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7U0FDNUIsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyx5QkFBSztjQUFoQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQ3JCLENBQUM7OztRQUFBO0tBQ0gsYUFBQztBQUFELEVBQUM7QUF0QlkseUJBQU07QUF3Qm5CO0tBQ0UsMkJBQTJCO0tBQzNCLG1CQUNVLE1BQVcsRUFDWCxlQUF1QjtTQUR2QixXQUFNLEdBQU4sTUFBTSxDQUFLO1NBQ1gsb0JBQWUsR0FBZixlQUFlLENBQVE7S0FBRyxDQUFDO0tBRXJDLHNCQUFXLDRCQUFLO2NBQWhCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7U0FDckIsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyxxQ0FBYztjQUF6QjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO1NBQzlCLENBQUM7OztRQUFBO0tBRUgsZ0JBQUM7QUFBRCxFQUFDO0FBZFksK0JBQVM7Ozs7Ozs7OztBQ3BGdEI7S0FBQTtLQUVBLENBQUM7S0FBRCx3QkFBQztBQUFELEVBQUM7QUFGWSwrQ0FBaUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBOUIsd0NBQTJEO0FBRTNELHVEQUFnRTtBQUVoRTtLQUF3QyxzQ0FBcUI7S0FDM0QsNEJBQW1CLFNBQTZCLEVBQVUsVUFBa0I7U0FBNUUsWUFDRSxrQkFBTSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxTQUMxRDtTQUZ5RCxnQkFBVSxHQUFWLFVBQVUsQ0FBUTs7S0FFNUUsQ0FBQztLQUVELHNCQUFXLHlDQUFTO2NBQXBCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDekIsQ0FBQzs7O1FBQUE7S0FFTSwyQ0FBYyxHQUFyQjtTQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQztLQUNuRCxDQUFDO0tBQ0gseUJBQUM7QUFBRCxFQUFDLENBWnVDLDZDQUFxQixHQVk1RDtBQVpZLGlEQUFrQjs7Ozs7Ozs7QUNKL0I7Ozs7SUFJRzs7Ozs7QUFNSCxtQ0FBd0I7Ozs7Ozs7O0FDVnhCLHVEQUFzRDtBQUN0RCwrQ0FBOEM7O0FBRTlDOztJQUVHO0FBQ0gsS0FBWSxZQUdYO0FBSEQsWUFBWSxZQUFZO0tBQ3RCLG1DQUFtQjtLQUNuQixpQ0FBaUI7QUFDbkIsRUFBQyxFQUhXLFlBQVksR0FBWixvQkFBWSxLQUFaLG9CQUFZLFFBR3ZCO0FBRUQ7O0lBRUc7QUFDSCxLQUFZLFNBR1g7QUFIRCxZQUFZLFNBQVM7S0FDbkIsb0NBQXVCO0tBQ3ZCLGdDQUFtQjtBQUNyQixFQUFDLEVBSFcsU0FBUyxHQUFULGlCQUFTLEtBQVQsaUJBQVMsUUFHcEI7QUFFRCxLQUFZLG1CQUlYO0FBSkQsWUFBWSxtQkFBbUI7S0FDN0IsMENBQW1CO0tBQ25CLDRDQUFxQjtLQUNyQiwrQ0FBd0I7QUFDMUIsRUFBQyxFQUpXLG1CQUFtQixHQUFuQiwyQkFBbUIsS0FBbkIsMkJBQW1CLFFBSTlCO0FBRUQsS0FBWSxVQUdYO0FBSEQsWUFBWSxVQUFVO0tBQ3BCLG1DQUFxQjtLQUNyQix1Q0FBeUI7QUFDM0IsRUFBQyxFQUhXLFVBQVUsR0FBVixrQkFBVSxLQUFWLGtCQUFVLFFBR3JCO0FBRUQ7O0lBRUc7QUFDSCxLQUFZLG1CQVlYO0FBWkQsWUFBWSxtQkFBbUI7S0FDN0Isc0NBQWU7S0FDZiw4Q0FBdUI7S0FDdkIsbURBQTRCO0tBQzVCLDZEQUFzQztLQUN0QyxpREFBMEI7S0FDMUIsd0NBQWlCO0tBQ2pCLHNDQUFlO0tBQ2Ysb0NBQWE7S0FDYixzQ0FBZTtLQUNmLDJDQUFvQjtLQUNwQixzQ0FBZTtBQUNqQixFQUFDLEVBWlcsbUJBQW1CLEdBQW5CLDJCQUFtQixLQUFuQiwyQkFBbUIsUUFZOUI7QUFFRDs7SUFFRztBQUNILEtBQVksUUFRWDtBQVJELFlBQVksUUFBUTtLQUNsQiw2QkFBaUI7S0FDakIsdUJBQVc7S0FDWCwyQkFBZTtLQUNmLHlCQUFhO0tBQ2IseUJBQWE7S0FDYixrQ0FBc0I7S0FDdEIsK0JBQW1CO0FBQ3JCLEVBQUMsRUFSVyxRQUFRLEdBQVIsZ0JBQVEsS0FBUixnQkFBUSxRQVFuQjtBQUVEOztJQUVHO0FBQ0gsS0FBWSxhQU9YO0FBUEQsWUFBWSxhQUFhO0tBQ3ZCLDhCQUFhO0tBQ2IsaUNBQWdCO0tBQ2hCLDhCQUFhO0tBQ2IsaUNBQWdCO0tBQ2hCLG9DQUFtQjtLQUNuQixtQ0FBa0I7QUFDcEIsRUFBQyxFQVBXLGFBQWEsR0FBYixxQkFBYSxLQUFiLHFCQUFhLFFBT3hCO0FBRUQ7O0lBRUc7QUFDSCxLQUFZLGVBR1g7QUFIRCxZQUFZLGVBQWU7S0FDekIsbURBQWdDO0tBQ2hDLCtDQUE0QjtBQUM5QixFQUFDLEVBSFcsZUFBZSxHQUFmLHVCQUFlLEtBQWYsdUJBQWUsUUFHMUI7QUFFRCxLQUFZLFlBZVg7QUFmRCxZQUFZLFlBQVk7S0FDdEIsaUNBQWlCO0tBQ2pCLDJCQUFXO0tBQ1gsNkJBQWE7S0FDYixpQ0FBaUI7S0FDakIsd0NBQXdCO0tBQ3hCLGdEQUFnQztLQUNoQywrQkFBZTtLQUNmLDZCQUFhO0tBQ2IsK0JBQWU7S0FDZixpQ0FBaUI7S0FDakIsbUNBQW1CO0tBQ25CLCtCQUFlO0tBQ2YsNkJBQWE7S0FDYiwrQkFBZTtBQUNqQixFQUFDLEVBZlcsWUFBWSxHQUFaLG9CQUFZLEtBQVosb0JBQVksUUFldkI7QUFFRDs7SUFFRztBQUNILEtBQVksVUE2RFg7QUE3REQsWUFBWSxVQUFVO0tBQ3BCOztRQUVHO0tBQ0gsdURBQXlDO0tBQ3pDOztRQUVHO0tBQ0gsMERBQTRDO0tBQzVDOztRQUVHO0tBQ0gsb0VBQXNEO0tBQ3REOztRQUVHO0tBQ0gsOENBQWdDO0tBQ2hDOztRQUVHO0tBQ0gsNEVBQThEO0tBQzlEOztRQUVHO0tBQ0gsMkRBQTZDO0tBQzdDOztRQUVHO0tBQ0gsNkRBQStDO0tBQy9DOztRQUVHO0tBQ0gsa0VBQW9EO0tBQ3BEOztRQUVHO0tBQ0gsb0VBQXNEO0tBQ3REOztRQUVHO0tBQ0gsb0RBQXNDO0tBQ3RDOztRQUVHO0tBQ0gsNkRBQStDO0tBQy9DOztRQUVHO0tBQ0gsd0VBQTBEO0tBQzFEOztRQUVHO0tBQ0gsK0RBQWlEO0tBQ2pEOztRQUVHO0tBQ0gsOERBQWdEO0tBQ2hEOztRQUVHO0tBQ0gsNkRBQStDO0FBQ2pELEVBQUMsRUE3RFcsVUFBVSxHQUFWLGtCQUFVLEtBQVYsa0JBQVUsUUE2RHJCO0FBRUQ7O0lBRUc7QUFDSCxLQUFZLG9CQXdDWDtBQXhDRCxZQUFZLG9CQUFvQjtLQUM5QixtQ0FBVztLQUNYLG1DQUFXO0tBQ1gsbUNBQVc7S0FDWCxtQ0FBVztLQUNYLHVDQUFlO0tBQ2YseUNBQWlCO0tBQ2pCLG1DQUFXO0tBQ1gscUNBQWE7S0FDYix1Q0FBZTtLQUNmLHlDQUFpQjtLQUNqQix5Q0FBaUI7S0FDakIscUNBQWE7S0FDYixxQ0FBYTtLQUNiLHFDQUFhO0tBQ2IsbUNBQVc7S0FDWCx1Q0FBZTtLQUNmLG1DQUFXO0tBQ1gscUNBQWE7S0FDYix5Q0FBaUI7S0FDakIseUNBQWlCO0tBQ2pCLHFDQUFhO0tBQ2IsMkNBQW1CO0tBQ25CLGdEQUF3QjtLQUN4QixtQ0FBVztLQUNYLG1DQUFXO0tBQ1gsZ0RBQXdCO0tBQ3hCLDhDQUFzQjtLQUN0QixrREFBMEI7S0FDMUIsZ0RBQXdCO0tBQ3hCLDhDQUFzQjtLQUN0QixnREFBd0I7S0FDeEIsb0RBQTRCO0tBQzVCLG9EQUE0QjtLQUM1Qix5Q0FBaUI7S0FDakIseUNBQWlCO0tBQ2pCLDZDQUFxQjtLQUNyQiw2Q0FBcUI7S0FDckIsd0NBQWdCO0tBQ2hCLHFDQUFhO0FBQ2YsRUFBQyxFQXhDVyxvQkFBb0IsR0FBcEIsNEJBQW9CLEtBQXBCLDRCQUFvQixRQXdDL0I7QUFFRDs7SUFFRztBQUNILEtBQVksYUFJWDtBQUpELFlBQVksYUFBYTtLQUN2Qix3Q0FBdUI7S0FDdkIsb0NBQW1CO0tBQ25CLG9DQUFtQjtBQUNyQixFQUFDLEVBSlcsYUFBYSxHQUFiLHFCQUFhLEtBQWIscUJBQWEsUUFJeEI7QUFFRDs7SUFFRztBQUNILEtBQVksVUFLWDtBQUxELFlBQVksVUFBVTtLQUNwQix5Q0FBMkI7S0FDM0IsNkJBQWU7S0FDZiwyQ0FBNkI7S0FDN0IsNENBQThCO0FBQ2hDLEVBQUMsRUFMVyxVQUFVLEdBQVYsa0JBQVUsS0FBVixrQkFBVSxRQUtyQjtBQUVEOztJQUVHO0FBQ0gsS0FBWSxnQkFLWDtBQUxELFlBQVksZ0JBQWdCO0tBQzFCLCtCQUFXO0tBQ1gsK0JBQVc7S0FDWCx1Q0FBbUI7S0FDbkIscUNBQWlCO0FBQ25CLEVBQUMsRUFMVyxnQkFBZ0IsR0FBaEIsd0JBQWdCLEtBQWhCLHdCQUFnQixRQUszQjtBQUVEOztJQUVHO0FBQ0gsS0FBWSxnQkFVWDtBQVZELFlBQVksZ0JBQWdCO0tBQzFCOzs7UUFHRztLQUNILHlDQUFxQjtLQUNyQjs7UUFFRztLQUNILHlDQUFxQjtBQUN2QixFQUFDLEVBVlcsZ0JBQWdCLEdBQWhCLHdCQUFnQixLQUFoQix3QkFBZ0IsUUFVM0I7QUFFRDs7O0lBR0c7QUFDSCxLQUFZLGdCQUlYO0FBSkQsWUFBWSxnQkFBZ0I7S0FDMUIsOENBQTBCO0tBQzFCLHFEQUFpQztLQUNqQyw0Q0FBd0I7QUFDMUIsRUFBQyxFQUpXLGdCQUFnQixHQUFoQix3QkFBZ0IsS0FBaEIsd0JBQWdCLFFBSTNCO0FBRUQ7O0lBRUc7QUFDSCxLQUFZLFFBWVg7QUFaRCxZQUFZLFFBQVE7S0FDbEIsdUJBQVc7S0FDWCx5QkFBYTtLQUNiLHlCQUFhO0tBQ2IsNkJBQWlCO0tBQ2pCLDZCQUFpQjtLQUNqQiwyQkFBZTtLQUNmLHlCQUFhO0tBQ2IsdUJBQVc7S0FDWCx1QkFBVztLQUNYLGtDQUFzQjtLQUN0QiwrQkFBbUI7QUFDckIsRUFBQyxFQVpXLFFBQVEsR0FBUixnQkFBUSxLQUFSLGdCQUFRLFFBWW5CO0FBRUQ7OztJQUdHO0FBQ0gsS0FBWSxrQkFJWDtBQUpELFlBQVksa0JBQWtCO0tBQzVCLGlDQUFXO0tBQ1gsbUNBQWE7S0FDYixxQ0FBZTtBQUNqQixFQUFDLEVBSlcsa0JBQWtCLEdBQWxCLDBCQUFrQixLQUFsQiwwQkFBa0IsUUFJN0I7QUFFRDs7SUFFRztBQUNILEtBQVksVUFTWDtBQVRELFlBQVksVUFBVTtLQUNwQiw2QkFBZTtLQUNmLG1DQUFxQjtLQUNyQiwrQkFBaUI7S0FDakIsNkJBQWU7S0FDZiwyQkFBYTtLQUNiLDZCQUFlO0tBQ2YsaUNBQW1CO0tBQ25CLGlDQUFtQjtBQUNyQixFQUFDLEVBVFcsVUFBVSxHQUFWLGtCQUFVLEtBQVYsa0JBQVUsUUFTckI7QUFFRCxLQUFZLGtCQWFYO0FBYkQsWUFBWSxrQkFBa0I7S0FDNUIsb0RBQThCO0tBQzlCLCtDQUF5QjtLQUN6Qiw4REFBd0M7S0FDeEMseURBQW1DO0tBQ25DLG1DQUFhO0tBQ2IsK0NBQXlCO0tBQ3pCLHNEQUFnQztLQUNoQyw0Q0FBc0I7S0FDdEIsaUVBQTJDO0tBQzNDLGtFQUE0QztLQUM1Qyw4Q0FBd0I7S0FDeEIsNkNBQXVCO0FBQ3pCLEVBQUMsRUFiVyxrQkFBa0IsR0FBbEIsMEJBQWtCLEtBQWxCLDBCQUFrQixRQWE3QjtBQUVEOztJQUVHO0FBQ0gsS0FBWSxtQkFJWDtBQUpELFlBQVksbUJBQW1CO0tBQzdCLGlEQUEwQjtLQUMxQix5Q0FBa0I7S0FDbEIsK0NBQXdCO0FBQzFCLEVBQUMsRUFKVyxtQkFBbUIsR0FBbkIsMkJBQW1CLEtBQW5CLDJCQUFtQixRQUk5QjtBQUVEOztJQUVHO0FBQ0gsS0FBWSxTQUlYO0FBSkQsWUFBWSxTQUFTO0tBQ25CLG9DQUF1QjtLQUN2Qiw0QkFBZTtLQUNmLG9DQUF1QjtBQUN6QixFQUFDLEVBSlcsU0FBUyxHQUFULGlCQUFTLEtBQVQsaUJBQVMsUUFJcEI7QUFFRCxLQUFZLGFBR1g7QUFIRCxZQUFZLGFBQWE7S0FDdkIsMENBQXlCO0tBQ3pCLDBDQUF5QjtBQUMzQixFQUFDLEVBSFcsYUFBYSxHQUFiLHFCQUFhLEtBQWIscUJBQWEsUUFHeEI7QUFFRDs7SUFFRztBQUNILEtBQVksZ0JBU1g7QUFURCxZQUFZLGdCQUFnQjtLQUMxQiwrQ0FBK0M7S0FDL0Msb0RBQWdDO0tBRWhDLHdEQUF3RDtLQUN4RCxtRUFBK0M7S0FFL0MsNkNBQTZDO0tBQzdDLDBEQUFzQztBQUN4QyxFQUFDLEVBVFcsZ0JBQWdCLEdBQWhCLHdCQUFnQixLQUFoQix3QkFBZ0IsUUFTM0I7QUFFRCxLQUFZLGtCQUtYO0FBTEQsWUFBWSxrQkFBa0I7S0FDNUIsdUNBQWlCO0tBQ2pCLGlEQUEyQjtLQUMzQixpREFBMkI7S0FDM0IsK0NBQXlCO0FBQzNCLEVBQUMsRUFMVyxrQkFBa0IsR0FBbEIsMEJBQWtCLEtBQWxCLDBCQUFrQixRQUs3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3RXRCxtREFBd0Q7QUFFeEQ7S0FBMkMseUNBQWlCO0tBTzFELCtCQUFtQixJQUErQixFQUFFLFNBQTZCO1NBQWpGLFlBQ0Usa0JBQU0sSUFBSSxFQUFFLFNBQVMsQ0FBQyxTQUd2QjtTQURDLEtBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDOztLQUM5QixDQUFDO0tBUkQsc0JBQVcsNENBQVM7Y0FBcEI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztTQUN6QixDQUFDOzs7UUFBQTtLQU9ILDRCQUFDO0FBQUQsRUFBQyxDQVowQyxxQ0FBaUIsR0FZM0Q7QUFaWSx1REFBcUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNGbEMsOENBQThDO0FBRTlDO0tBQXVDLHFDQUFZO0tBT2pELDJCQUFtQixJQUErQixFQUFFLEtBQXFCO1NBQXpFLFlBQ0Usa0JBQU0sSUFBSSxDQUFDLFNBR1o7U0FEQyxLQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQzs7S0FDdEIsQ0FBQztLQVJELHNCQUFXLG9DQUFLO2NBQWhCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7U0FDckIsQ0FBQzs7O1FBQUE7S0FPSCx3QkFBQztBQUFELEVBQUMsQ0Fac0MsMkJBQVksR0FZbEQ7QUFaWSwrQ0FBaUI7Ozs7Ozs7OztBQ0Y5QjtLQUdFLHNCQUFtQixJQUErQjtTQUNoRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztLQUNwQixDQUFDO0tBRUQsc0JBQVcsOEJBQUk7Y0FBZjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ3BCLENBQUM7OztRQUFBO0tBQ0gsbUJBQUM7QUFBRCxFQUFDO0FBVlkscUNBQVk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNGekIsd0NBQTJEO0FBRTNELHVEQUFnRTtBQUVoRTtLQUF3QyxzQ0FBcUI7S0FDM0QsNEJBQW1CLFNBQTZCO2dCQUM5QyxrQkFBTSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsb0JBQW9CLEVBQUUsU0FBUyxDQUFDO0tBQ2xFLENBQUM7S0FFTSwwQ0FBYSxHQUFwQjtTQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLHFCQUFxQixFQUFFLENBQUM7S0FDaEQsQ0FBQztLQUNILHlCQUFDO0FBQUQsRUFBQyxDQVJ1Qyw2Q0FBcUIsR0FRNUQ7QUFSWSxpREFBa0I7Ozs7Ozs7OztBQ0EvQjs7OztJQUlHO0FBQ0g7S0FJRSxnQ0FBbUIsU0FBb0M7U0FDckQsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7U0FDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7S0FDdEIsQ0FBQztLQUVELHNCQUFXLDZDQUFTO2NBQXBCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDekIsQ0FBQzs7O1FBQUE7S0FFTSxpREFBZ0IsR0FBdkIsVUFBd0IsT0FBdUM7U0FBL0QsaUJBR0M7U0FGQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM3QixNQUFNLENBQUMsY0FBTSxZQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLEVBQWpDLENBQWlDLENBQUM7S0FDakQsQ0FBQztLQUVNLG9EQUFtQixHQUExQixVQUEyQixPQUF1QztTQUNoRSxJQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztTQUMxQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFdBQUMsSUFBSSxRQUFDLEtBQUssT0FBTyxFQUFiLENBQWEsQ0FBQyxDQUFDO1NBQzNELE1BQU0sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7S0FDN0MsQ0FBQztLQUVNLDZDQUFZLEdBQW5CLFVBQW9CLGNBQWdDO1NBQ2xELEdBQUcsQ0FBQyxDQUFrQixVQUFjLEVBQWQsU0FBSSxDQUFDLFNBQVMsRUFBZCxjQUFjLEVBQWQsSUFBYzthQUEvQixJQUFNLE9BQU87YUFDaEIsSUFBSSxDQUFDO2lCQUNILElBQU0sVUFBVSxHQUFHLGNBQWMsRUFBRSxDQUFDO2lCQUNwQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDdEIsQ0FBQzthQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ1gsaUdBQWlHO2lCQUNqRyxRQUFRLENBQUM7YUFDWCxDQUFDO1VBQ0Y7S0FDSCxDQUFDO0tBQ0gsNkJBQUM7QUFBRCxFQUFDO0FBbkNZLHlEQUFzQjs7Ozs7Ozs7O0FDSm5DOztJQUVHO0FBQ0gsS0FBWSxXQUdYO0FBSEQsWUFBWSxXQUFXO0tBQ3JCLGtDQUFtQjtLQUNuQix3Q0FBeUI7QUFDM0IsRUFBQyxFQUhXLFdBQVcsR0FBWCxtQkFBVyxLQUFYLG1CQUFXLFFBR3RCOzs7Ozs7Ozs7QUNURCx1REFBcUU7QUFDckUsbURBQTZEO0FBQzdELG9EQUErRDtBQUMvRCx5REFBeUU7QUFDekUsdURBQXFFO0FBQ3JFLHNEQUFtRTtBQUNuRSxpREFBdUQ7QUFFdkQsb0NBQTBDLFVBQWlDO0tBQ3pFLG9DQUFrQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSw2Q0FBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0tBQ25GLG9DQUFrQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSx1Q0FBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0tBQ2hGLG9DQUFrQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxxQ0FBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0tBQy9FLG9DQUFrQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxpREFBdUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0tBQ3JGLG9DQUFrQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSw2Q0FBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0tBQ25GLG9DQUFrQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSwyQ0FBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ3BGLEVBQUM7QUFQRCwrREFPQzs7Ozs7Ozs7O0FDakJELHVEQU13QztBQUt4QztLQUNFLCtCQUEyQixXQUFrQztTQUFsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBdUI7S0FBSSxDQUFDO0tBRWxFLHNCQUFXLDhDQUFXO2NBQXRCO2FBQ0UsTUFBTSwrQ0FBZ0M7U0FDeEMsQ0FBQzs7O1FBQUE7S0FFTSw0Q0FBWSxHQUFuQixVQUFvQixZQUFvQjtTQUN0QyxJQUFNLFVBQVUsYUFBdUIsR0FBQyxtQ0FBVyxDQUFDLFlBQVksSUFBRyxZQUFZLEtBQUMsQ0FBQztTQUVqRixNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsOEJBQU0sQ0FBQyxpQkFBaUIsRUFBRSxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQU8sa0JBQVE7YUFDdkYsTUFBTSxDQUFDO1NBQ1QsQ0FBQyxDQUFDLENBQUM7O0tBQ0wsQ0FBQztLQUVNLG1EQUFtQixHQUExQjtTQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyw4QkFBTSxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQWEsa0JBQVE7YUFDbEYsSUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLE1BQW9CLENBQUM7YUFDakQsTUFBTSxDQUFDLFVBQVUsQ0FBQztTQUNwQixDQUFDLENBQUMsQ0FBQztLQUNMLENBQUM7S0FDSCw0QkFBQztBQUFELEVBQUM7QUFyQlksdURBQXFCOzs7Ozs7OztBdkJYbEM7Ozs7SUFJRzs7Ozs7QUFFSCxrQ0FBa0M7QUFDbEMsa0NBQWtEO0FBRWxELGtDQUEwQztBQUMxQyxrQ0FBdUM7QUFDdkMsa0NBQWtDOzs7Ozs7Ozs7QXdCWGxDLHdDQUEyRDtBQUUzRCx1REFRd0M7QUFDeEMsMkNBQTJDO0FBRTNDLGdFQUE0SDtBQUM1SCxnRUFBNEg7QUFDNUgsOENBQStGO0FBQy9GLCtDQUF1RDtBQUt2RDtLQUdFLDJCQUFtQixVQUFpQztTQUNsRCxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztLQUNoQyxDQUFDO0tBRUQsc0JBQVcsMENBQVc7Y0FBdEI7YUFDRSxNQUFNLCtCQUFxQjtTQUM3QixDQUFDOzs7UUFBQTtLQUVNLDRDQUFnQixHQUF2QixVQUNFLFFBQWtCLEVBQ2xCLFNBQWlCLEVBQ2pCLE1BQXFCLEVBQ3JCLFVBQXFDLEVBQ3JDLGFBQXFDO1NBQ25DLEVBQUUsQ0FBQyxDQUFDLENBQUMsaUJBQUssQ0FBQyxnQkFBZ0IsQ0FBNEIsVUFBVSxFQUFFLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUM5RixNQUFNLElBQUksS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7U0FDbEUsQ0FBQztTQUNELElBQU0sSUFBSSxHQUFHLDhCQUFNLENBQUMsc0JBQXNCLENBQUM7U0FDM0MsSUFBTSxVQUFVLEdBQXNCLEVBQUUsQ0FBQztTQUN6QyxVQUFVLENBQUMsbUNBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxRQUFRLENBQUM7U0FDNUMsVUFBVSxDQUFDLG1DQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsU0FBUyxDQUFDO1NBQzlDLFVBQVUsQ0FBQyxtQ0FBVyxDQUFDLFlBQVksQ0FBQyxHQUFHLE1BQU0sQ0FBQztTQUM5QyxVQUFVLENBQUMsbUNBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLFVBQVUsQ0FBQztTQUN0RCxVQUFVLENBQUMsbUNBQVcsQ0FBQyxhQUFhLENBQUM7YUFDbkMsQ0FBQyxhQUFhLEtBQUssU0FBUyxJQUFJLGFBQWEsQ0FBQyxhQUFhLEtBQUssU0FBUyxDQUFDLEdBQUcsS0FBSyxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUM7U0FFbkgsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQVMsa0JBQVE7YUFDckUsSUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLE1BQXNCLENBQUM7YUFDOUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLEtBQUssSUFBSSxJQUFJLEtBQUssQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNqRSxxREFBcUQ7aUJBQ3JELE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQy9ELENBQUM7YUFDRCxNQUFNLENBQUMsU0FBUyxDQUFDO1NBQ25CLENBQUMsQ0FBQyxDQUFDO0tBQ0wsQ0FBQztLQUVJLGlEQUFxQixHQUE1QixVQUE2QixRQUFrQixFQUFFLFNBQWlCLEVBQUUsYUFBMEM7U0FDNUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO2FBQ25CLE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQztTQUMzRCxDQUFDO1NBQ0QsaUJBQUssQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUVqRSxJQUFNLElBQUksR0FBRyw4QkFBTSxDQUFDLGdCQUFnQixDQUFDO1NBQ3JDLElBQU0sVUFBVSxHQUFzQixFQUFFLENBQUM7U0FFekMsRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDdEIsSUFBSSxHQUFHLFNBQWlCLENBQUM7YUFDekIsRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDLEdBQUcsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDO2lCQUN0QyxHQUFHLEdBQUcsaUJBQUssQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDMUQsQ0FBQzthQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNOLEdBQUcsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDO2FBQzFCLENBQUM7YUFDRCxVQUFVLENBQUMsbUNBQVcsQ0FBQyxjQUFjLENBQUMsR0FBRyxHQUFHLENBQUM7U0FDL0MsQ0FBQztTQUVELEVBQUUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ3RCLElBQUksR0FBRyxTQUFpQixDQUFDO2FBQ3pCLEVBQUUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxHQUFHLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQztpQkFDdEMsR0FBRyxHQUFHLGlCQUFLLENBQUMsd0JBQXdCLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzFELENBQUM7YUFBQyxJQUFJLENBQUMsQ0FBQztpQkFDTixHQUFHLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQzthQUMxQixDQUFDO2FBQ0QsVUFBVSxDQUFDLG1DQUFXLENBQUMsY0FBYyxDQUFDLEdBQUcsR0FBRyxDQUFDO1NBQy9DLENBQUM7U0FFRCxFQUFFLENBQUMsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQzthQUM3QixFQUFFLENBQUMsQ0FBQyxDQUFDLGlCQUFLLENBQUMsZ0JBQWdCLENBQTRCLGFBQWEsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUM1RyxNQUFNLElBQUksS0FBSyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7YUFDNUQsQ0FBQzthQUNELFVBQVUsQ0FBQyxtQ0FBVyxDQUFDLHFCQUFxQixDQUFDLEdBQUcsK0RBQXFCLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDdEgsQ0FBQztTQUNELFVBQVUsQ0FBQyxtQ0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztTQUM5QyxVQUFVLENBQUMsbUNBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxRQUFRLENBQUM7U0FFNUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQVMsa0JBQVE7YUFDckUsTUFBTSxDQUFDLFNBQVMsQ0FBQztTQUNuQixDQUFDLENBQUMsQ0FBQztLQUNMLENBQUM7S0FFTSw0Q0FBZ0IsR0FBdkIsVUFBd0IsUUFBa0IsRUFBRSxTQUFpQjtTQUMzRCxJQUFNLElBQUksR0FBRyw4QkFBTSxDQUFDLFdBQVcsQ0FBQztTQUNoQyxJQUFJLFVBQVUsR0FBc0IsRUFBRSxDQUFDO1NBQ3ZDLFVBQVUsQ0FBQyxtQ0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLFFBQVEsQ0FBQztTQUM1QyxVQUFVLENBQUMsbUNBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxTQUFTLENBQUM7U0FDOUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQVMsa0JBQVE7YUFDckUsTUFBTSxDQUFDLFNBQVMsQ0FBQztTQUNuQixDQUFDLENBQUMsQ0FBQztLQUNMLENBQUM7S0FFTSwyQ0FBZSxHQUF0QixVQUF1QixRQUFrQjtTQUF6QyxpQkFRQztTQVBDLElBQU0sSUFBSSxHQUFHLDhCQUFNLENBQUMsVUFBVSxDQUFDO1NBQy9CLElBQUksVUFBVSxHQUFzQixFQUFFLENBQUM7U0FDdkMsVUFBVSxDQUFDLG1DQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsUUFBUSxDQUFDO1NBQzVDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFvQixrQkFBUTthQUNoRixJQUFJLE9BQU8sR0FBRyxRQUFRLENBQUMsTUFBbUMsQ0FBQzthQUMzRCxNQUFNLENBQUMsS0FBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzVDLENBQUMsQ0FBQyxDQUFDO0tBQ0wsQ0FBQztLQUVELGlCQUFpQjtLQUNULGdEQUFvQixHQUE1QixVQUE2QixhQUF3QztTQUFyRSxpQkF3Q0M7U0F2Q0MsSUFBSSxPQUFPLEdBQXNCLEVBQUUsQ0FBQztTQUNwQyxhQUFhLENBQUMsT0FBTyxDQUFDLHNCQUFZO2FBQ2hDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO2lCQUNoQyxLQUFLLGtDQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7cUJBQzVCLElBQUksTUFBTSxHQUFHLFlBQWtELENBQUM7cUJBQ2hFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7eUJBQ1gsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFJLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztxQkFDdEQsQ0FBQztxQkFBQyxJQUFJLENBQUMsQ0FBQzt5QkFDTixNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7cUJBQ2hELENBQUM7cUJBQ0QsS0FBSyxDQUFDO2lCQUNSLENBQUM7aUJBRUQsS0FBSyxrQ0FBVSxDQUFDLEtBQUssRUFBRSxDQUFDO3FCQUN0QixJQUFJLE1BQU0sR0FBRyxZQUE0QyxDQUFDO3FCQUMxRCxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO3lCQUNYLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7cUJBQ2hELENBQUM7cUJBQUMsSUFBSSxDQUFDLENBQUM7eUJBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO3FCQUMxQyxDQUFDO3FCQUNELEtBQUssQ0FBQztpQkFDUixDQUFDO2lCQUVELEtBQUssa0NBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztxQkFDN0IsSUFBSSxNQUFNLEdBQUcsWUFBbUQsQ0FBQztxQkFDakUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQzt5QkFDWCxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUksQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO3FCQUN2RCxDQUFDO3FCQUFDLElBQUksQ0FBQyxDQUFDO3lCQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQztxQkFDbEQsQ0FBQztxQkFDRCxLQUFLLENBQUM7aUJBQ1IsQ0FBQztpQkFFRCxTQUFTLENBQUM7cUJBQ1IsS0FBSyxDQUFDO2lCQUNSLENBQUM7YUFDSCxDQUFDO1NBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSCxNQUFNLENBQUMsT0FBTyxDQUFDO0tBQ2pCLENBQUM7S0FFTyxvREFBd0IsR0FBaEMsVUFBaUMsWUFBZ0Q7U0FDL0UsSUFBSSxhQUFhLEdBQXlCLFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQUU7YUFDbEUsTUFBTSxDQUFDLElBQUkseUJBQVMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUNwRCxDQUFDLENBQUMsQ0FBQztTQUVILE1BQU0sQ0FBQyxJQUFJLGdDQUFpQixDQUMxQixZQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFDL0IsWUFBWSxDQUFDLFlBQVksRUFDekIsUUFBUSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQy9CLGFBQWEsRUFDYixZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDNUIsQ0FBQztLQUVPLDhDQUFrQixHQUExQixVQUEyQixZQUEwQztTQUNuRSxJQUFJLFFBQVEsR0FBYyxJQUFJLHlCQUFTLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUNqRyxJQUFJLFFBQVEsR0FBYyxJQUFJLHlCQUFTLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUNqRyxNQUFNLENBQUMsSUFBSSwwQkFBVyxDQUNwQixZQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFDL0IsWUFBWSxDQUFDLFlBQVksRUFDekIsUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQ3pCLFFBQVEsRUFDUixRQUFRLEVBQ1IsWUFBWSxDQUFDLGlCQUFpQixDQUMvQixDQUFDO0tBQ0osQ0FBQztLQUVPLHFEQUF5QixHQUFqQyxVQUFrQyxZQUFpRDtTQUNqRixJQUFJLGVBQWUsR0FBYyxJQUFJLHlCQUFTLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUN0SCxNQUFNLENBQUMsSUFBSSxpQ0FBa0IsQ0FDM0IsWUFBWSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQy9CLFlBQVksQ0FBQyxZQUFZLEVBQ3pCLFFBQVEsQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUNoQyxlQUFlLEVBQ2YsK0RBQXFCLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEVBQ3JFLCtEQUFxQixDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxFQUNuRSxZQUFZLENBQUMsTUFBTSxDQUNwQixDQUFDO0tBQ0osQ0FBQztLQUNILHdCQUFDO0FBQUQsRUFBQztBQXZMWSwrQ0FBaUI7Ozs7Ozs7O0FDckI5Qjs7OztJQUlHOztBQUVILCtDQUFnRDtBQUF2QyxzREFBYTtBQUN0Qix1Q0FBZ0M7QUFBdkIsOEJBQUs7Ozs7Ozs7OztBQ1BkOzs7SUFHRztBQUNIO0tBQ0UsdUJBQ1UsU0FBbUQsRUFDbkQsV0FBOEI7U0FEOUIsY0FBUyxHQUFULFNBQVMsQ0FBMEM7U0FDbkQsZ0JBQVcsR0FBWCxXQUFXLENBQW1CO0tBQUksQ0FBQztLQUV0QywrQkFBTyxHQUFkLFVBQWUsT0FBb0IsRUFBRSxjQUF3QjtTQUMzRCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDM0MsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBaUIsQ0FBQyxDQUFDO1NBQzNDLENBQUM7U0FFRCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxLQUFLLFNBQVMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7YUFDdEQsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7U0FDMUIsQ0FBQztTQUVELE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLEdBQUcsT0FBTyxDQUFDLENBQUM7S0FDdEQsQ0FBQztLQUNILG9CQUFDO0FBQUQsRUFBQztBQWhCWSx1Q0FBYTs7Ozs7Ozs7O0FDSjFCO0tBQUE7S0EwSUEsQ0FBQztLQXpJQzs7Ozs7OztRQU9HO0tBQ0gsNkJBQTZCO0tBQ2YsaUJBQVcsR0FBekIsVUFBMEIsYUFBa0IsRUFBRSxZQUFvQjtTQUNoRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7YUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsR0FBRyxZQUFZLENBQUMsQ0FBQztTQUNwRSxDQUFDO0tBQ0gsQ0FBQztLQUVEOzs7Ozs7UUFNRztLQUNXLGtCQUFZLEdBQTFCLFVBQTJCLGFBQXFCLEVBQUUsWUFBb0I7U0FDcEUsRUFBRSxDQUFDLENBQUMsYUFBYSxLQUFLLElBQUksSUFBSSxhQUFhLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQzthQUMxRCxNQUFNLElBQUksS0FBSyxDQUFDLHdDQUF3QyxHQUFHLFlBQVksQ0FBQyxDQUFDO1NBQzNFLENBQUM7S0FDSCxDQUFDO0tBRUQ7Ozs7Ozs7UUFPRztLQUNILDJCQUEyQjtLQUNiLHNCQUFnQixHQUE5QixVQUF5QyxLQUFlLEVBQUUsUUFBYTtTQUNyRSxJQUFJLE9BQU8sR0FBWSxLQUFLLENBQUM7U0FDN0IsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQyxPQUFPO2FBQ3BDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUMzQyxPQUFPLEdBQUcsSUFBSSxDQUFDO2FBQ2pCLENBQUM7U0FDSCxDQUFDLENBQUMsQ0FBQztTQUNILE1BQU0sQ0FBQyxPQUFPLENBQUM7S0FDakIsQ0FBQztLQUNELDBCQUEwQjtLQUUxQjs7O1FBR0c7S0FDVyw4QkFBd0IsR0FBdEMsVUFBdUMsSUFBVTtTQUMvQyxJQUFNLElBQUksR0FBVyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDM0MsSUFBTSxLQUFLLEdBQVcsSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUM3QyxJQUFNLEdBQUcsR0FBVyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDdEMsSUFBTSxFQUFFLEdBQVcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3RDLElBQU0sRUFBRSxHQUFXLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUN4QyxJQUFNLEdBQUcsR0FBVyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDekMsTUFBTSxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsS0FBSyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7S0FDMUUsQ0FBQztLQUVhLGlDQUEyQixHQUF6QyxVQUEwQyxJQUFhO1NBQ3JELE1BQU0sQ0FBQyxJQUFJLEdBQUcsTUFBTSxHQUFHLE9BQU8sQ0FBQztLQUNqQyxDQUFDO0tBRWEsZ0NBQTBCLEdBQXhDLFVBQXlDLEdBQVc7U0FDbEQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDMUIsQ0FBQztLQUVEOzs7O1FBSUc7S0FDSCwyQkFBMkI7S0FDYiwwQkFBb0IsR0FBbEMsVUFBbUMsR0FBUSxFQUFFLEdBQVE7U0FDckQsMEJBQTBCO1NBQ3hCLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUM7U0FDL0UsQ0FBQztTQUVELEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3ZELE1BQU0sSUFBSSxLQUFLLENBQUMsNEVBQTRFLENBQUMsQ0FBQztTQUNoRyxDQUFDO1NBRUQsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDdkQsTUFBTSxJQUFJLEtBQUssQ0FBQyw0RUFBNEUsQ0FBQyxDQUFDO1NBQ2hHLENBQUM7U0FFRCxFQUFFLENBQUMsQ0FBQyxPQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssT0FBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNoQyxNQUFNLElBQUksS0FBSyxDQUFDLDJFQUEyRSxDQUFDLENBQUM7U0FDL0YsQ0FBQztLQUNILENBQUM7S0FFRDs7UUFFRztLQUNILDJCQUEyQjtLQUNiLGtCQUFZLEdBQTFCLFVBQTJCLEtBQVU7U0FDbkMsTUFBTSxDQUFDLE9BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxRQUFRLElBQUksS0FBSyxZQUFZLE1BQU0sQ0FBQztLQUMvRCxDQUFDO0tBQ0QsMEJBQTBCO0tBRTFCOztRQUVHO0tBQ0gsMkJBQTJCO0tBQ2IsZ0JBQVUsR0FBeEIsVUFBeUIsS0FBVTtTQUNqQyxNQUFNLENBQUMsS0FBSyxZQUFZLElBQUksQ0FBQztLQUMvQixDQUFDO0tBQ0QsMEJBQTBCO0tBRTFCLHFDQUFxQztLQUN2QixrQkFBWSxHQUExQixVQUEyQixLQUFVO1NBQ25DLE1BQU0sQ0FBQyxPQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssUUFBUSxJQUFJLEtBQUssWUFBWSxNQUFNLENBQUM7S0FDL0QsQ0FBQztLQUVELHFDQUFxQztLQUN2QixnQkFBVSxHQUF4QixVQUF5QixLQUFVO1NBQ2pDLE1BQU0sQ0FBQyxPQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssU0FBUyxJQUFJLEtBQUssWUFBWSxPQUFPLENBQUM7S0FDakUsQ0FBQztLQUVELHFDQUFxQztLQUN2Qiw0QkFBc0IsR0FBcEMsVUFBcUMsS0FBVTtTQUM3QyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUM5QixNQUFNLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLEtBQWUsQ0FBQyxDQUFDO1NBQzNELENBQUM7U0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDbkMsTUFBTSxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxLQUFhLENBQUMsQ0FBQztTQUN2RCxDQUFDO1NBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ25DLE1BQU0sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLENBQUMsS0FBZ0IsQ0FBQyxDQUFDO1NBQzdELENBQUM7U0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDckMsTUFBTSxDQUFDLEtBQUssQ0FBQztTQUNmLENBQUM7U0FBQyxJQUFJLENBQUMsQ0FBQzthQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztTQUMxRCxDQUFDO0tBQ0gsQ0FBQztLQUNILFlBQUM7QUFBRCxFQUFDO0FBMUlZLHVCQUFLOzs7Ozs7Ozs7QUNBbEIsdURBQXdGO0FBQ3hGLHVEQUF3RjtBQUV4RiwyQ0FBbUQ7QUFFbkQseUZBQXdGO0FBQ3hGOzs7SUFHRztBQUNIO0tBQUE7S0FNQSxDQUFDO0tBTGUsMENBQVcsR0FBRyxJQUFJLHlCQUFhO1NBQzNDLEdBQUMsd0NBQWtCLENBQUMsU0FBUyxJQUFHLHdDQUFrQixDQUFDLFNBQVM7U0FDNUQsR0FBQyx3Q0FBa0IsQ0FBQyxhQUFhLElBQUcsd0NBQWtCLENBQUMsYUFBYTtTQUNwRSxHQUFDLHdDQUFrQixDQUFDLGFBQWEsSUFBRyx3Q0FBa0IsQ0FBQyxVQUFVO2FBQ2pFLENBQUM7S0FDTCxxQ0FBQztFQUFBO0FBTlkseUVBQThCOztBQU8zQyw0QkFBMkI7Ozs7Ozs7OztBQ2pCM0IsdURBY3dDO0FBQ3hDLHVEQWN3QztBQUN4QywyQ0FBbUQ7QUFFbkQseUZBQXdGO0FBQ3hGOzs7SUFHRztBQUNIO0tBQUE7S0FtSUEsQ0FBQztLQWxJZSwyQ0FBWSxHQUFHLElBQUkseUJBQWE7U0FDNUMsR0FBQyxvQ0FBb0IsQ0FBQyxPQUFPLElBQUcsb0NBQW9CLENBQUMsT0FBTztTQUM1RCxHQUFDLG9DQUFvQixDQUFDLE1BQU0sSUFBRyxvQ0FBb0IsQ0FBQyxNQUFNO2FBQzFELENBQUM7S0FFVyx3Q0FBUyxHQUFHLElBQUkseUJBQWE7U0FDekMsR0FBQyxpQ0FBaUIsQ0FBQyxTQUFTLElBQUcsaUNBQWlCLENBQUMsU0FBUztTQUMxRCxHQUFDLGlDQUFpQixDQUFDLE9BQU8sSUFBRyxpQ0FBaUIsQ0FBQyxPQUFPO2FBQ3RELENBQUM7S0FFVyx5Q0FBVSxHQUFHLElBQUkseUJBQWE7U0FDMUMsR0FBQyxrQ0FBa0IsQ0FBQyxVQUFVLElBQUcsa0NBQWtCLENBQUMsVUFBVTtTQUM5RCxHQUFDLGtDQUFrQixDQUFDLFFBQVEsSUFBRyxrQ0FBa0IsQ0FBQyxRQUFRO2FBQzFELENBQUM7S0FFVyxtREFBb0IsR0FBRyxJQUFJLHlCQUFhO1NBQ3BELEdBQUMsNENBQTRCLENBQUMsSUFBSSxJQUFHLDRDQUE0QixDQUFDLElBQUk7U0FDdEUsR0FBQyw0Q0FBNEIsQ0FBQyxHQUFHLElBQUcsNENBQTRCLENBQUMsR0FBRztTQUNwRSxHQUFDLDRDQUE0QixDQUFDLEtBQUssSUFBRyw0Q0FBNEIsQ0FBQyxLQUFLO1NBQ3hFLEdBQUMsNENBQTRCLENBQUMsTUFBTSxJQUFHLDRDQUE0QixDQUFDLE1BQU07U0FDMUUsR0FBQyw0Q0FBNEIsQ0FBQyxHQUFHLElBQUcsNENBQTRCLENBQUMsR0FBRztTQUNwRSxHQUFDLDRDQUE0QixDQUFDLEdBQUcsSUFBRyw0Q0FBNEIsQ0FBQyxHQUFHO1NBQ3BFLEdBQUMsNENBQTRCLENBQUMsSUFBSSxJQUFHLDRDQUE0QixDQUFDLElBQUk7U0FDdEUsR0FBQyw0Q0FBNEIsQ0FBQyxLQUFLLElBQUcsNENBQTRCLENBQUMsS0FBSztTQUN4RSxHQUFDLDRDQUE0QixDQUFDLFFBQVEsSUFBRyw0Q0FBNEIsQ0FBQyxRQUFRO1NBQzlFLEdBQUMsNENBQTRCLENBQUMsR0FBRyxJQUFHLDRDQUE0QixDQUFDLEdBQUc7U0FDcEUsR0FBQyw0Q0FBNEIsQ0FBQyxHQUFHLElBQUcsNENBQTRCLENBQUMsR0FBRztTQUNwRSxHQUFDLDRDQUE0QixDQUFDLE1BQU0sSUFBRyw0Q0FBNEIsQ0FBQyxNQUFNO1NBQzFFLEdBQUMsNENBQTRCLENBQUMsR0FBRyxJQUFHLDRDQUE0QixDQUFDLEdBQUc7U0FDcEUsR0FBQyw0Q0FBNEIsQ0FBQyxNQUFNLElBQUcsNENBQTRCLENBQUMsTUFBTTtTQUMxRSxHQUFDLDRDQUE0QixDQUFDLFNBQVMsSUFBRyw0Q0FBNEIsQ0FBQyxTQUFTO1NBQ2hGLEdBQUMsNENBQTRCLENBQUMsSUFBSSxJQUFHLDRDQUE0QixDQUFDLElBQUk7U0FDdEUsR0FBQyw0Q0FBNEIsQ0FBQyxHQUFHLElBQUcsNENBQTRCLENBQUMsR0FBRztTQUNwRSxHQUFDLDRDQUE0QixDQUFDLE1BQU0sSUFBRyw0Q0FBNEIsQ0FBQyxNQUFNO1NBQzFFLEdBQUMsNENBQTRCLENBQUMsTUFBTSxJQUFHLDRDQUE0QixDQUFDLE1BQU07U0FDMUUsR0FBQyw0Q0FBNEIsQ0FBQyxNQUFNLElBQUcsNENBQTRCLENBQUMsTUFBTTtTQUMxRSxHQUFDLDRDQUE0QixDQUFDLFFBQVEsSUFBRyw0Q0FBNEIsQ0FBQyxRQUFRO1NBQzlFLEdBQUMsNENBQTRCLENBQUMsS0FBSyxJQUFHLDRDQUE0QixDQUFDLEtBQUs7U0FDeEUsR0FBQyw0Q0FBNEIsQ0FBQyxNQUFNLElBQUcsNENBQTRCLENBQUMsTUFBTTtTQUMxRSxHQUFDLDRDQUE0QixDQUFDLEdBQUcsSUFBRyw0Q0FBNEIsQ0FBQyxHQUFHO1NBQ3BFLEdBQUMsNENBQTRCLENBQUMsUUFBUSxJQUFHLDRDQUE0QixDQUFDLFFBQVE7U0FDOUUsR0FBQyw0Q0FBNEIsQ0FBQyxTQUFTLElBQUcsNENBQTRCLENBQUMsU0FBUztTQUNoRixHQUFDLDRDQUE0QixDQUFDLFdBQVcsSUFBRyw0Q0FBNEIsQ0FBQyxXQUFXO1NBQ3BGLEdBQUMsNENBQTRCLENBQUMsVUFBVSxJQUFHLDRDQUE0QixDQUFDLFVBQVU7U0FDbEYsR0FBQyw0Q0FBNEIsQ0FBQyxRQUFRLElBQUcsNENBQTRCLENBQUMsUUFBUTtTQUM5RSxHQUFDLDRDQUE0QixDQUFDLFdBQVcsSUFBRyw0Q0FBNEIsQ0FBQyxXQUFXO1NBQ3BGLEdBQUMsNENBQTRCLENBQUMsU0FBUyxJQUFHLDRDQUE0QixDQUFDLFNBQVM7U0FDaEYsR0FBQyw0Q0FBNEIsQ0FBQyxTQUFTLElBQUcsNENBQTRCLENBQUMsU0FBUztTQUNoRixHQUFDLDRDQUE0QixDQUFDLElBQUksSUFBRyw0Q0FBNEIsQ0FBQyxJQUFJO1NBQ3RFLEdBQUMsNENBQTRCLENBQUMsR0FBRyxJQUFHLDRDQUE0QixDQUFDLEdBQUc7U0FDcEUsR0FBQyw0Q0FBNEIsQ0FBQyxJQUFJLElBQUcsNENBQTRCLENBQUMsSUFBSTtTQUN0RSxHQUFDLDRDQUE0QixDQUFDLElBQUksSUFBRyw0Q0FBNEIsQ0FBQyxJQUFJO1NBQ3RFLEdBQUMsNENBQTRCLENBQUMsT0FBTyxJQUFHLDRDQUE0QixDQUFDLE9BQU87U0FDNUUsR0FBQyw0Q0FBNEIsQ0FBQyxJQUFJLElBQUcsNENBQTRCLENBQUMsSUFBSTthQUN0RSxDQUFDO0tBRVcsNENBQWEsR0FBRyxJQUFJLHlCQUFhO1NBQzdDLEdBQUMscUNBQXFCLENBQUMsU0FBUyxJQUFHLHFDQUFxQixDQUFDLFNBQVM7U0FDbEUsR0FBQyxxQ0FBcUIsQ0FBQyxPQUFPLElBQUcscUNBQXFCLENBQUMsT0FBTztTQUM5RCxHQUFDLHFDQUFxQixDQUFDLE9BQU8sSUFBRyxxQ0FBcUIsQ0FBQyxPQUFPO2FBQzlELENBQUM7S0FFVyx3Q0FBUyxHQUFHLElBQUkseUJBQWE7U0FDekMsR0FBQyxpQ0FBaUIsQ0FBQyxTQUFTLElBQUcsaUNBQWlCLENBQUMsU0FBUztTQUMxRCxHQUFDLGlDQUFpQixDQUFDLEtBQUssSUFBRyxpQ0FBaUIsQ0FBQyxLQUFLO1NBQ2xELEdBQUMsaUNBQWlCLENBQUMsU0FBUyxJQUFHLGlDQUFpQixDQUFDLFNBQVM7YUFDMUQsQ0FBQztLQUVXLGtEQUFtQixHQUFHLElBQUkseUJBQWE7U0FDbkQsR0FBQywyQ0FBMkIsQ0FBQyxLQUFLLElBQUcsMkNBQTJCLENBQUMsS0FBSztTQUN0RSxHQUFDLDJDQUEyQixDQUFDLEtBQUssSUFBRywyQ0FBMkIsQ0FBQyxLQUFLO1NBQ3RFLEdBQUMsMkNBQTJCLENBQUMsS0FBSyxJQUFHLDJDQUEyQixDQUFDLEtBQUs7U0FDdEUsR0FBQywyQ0FBMkIsQ0FBQyxNQUFNLElBQUcsMkNBQTJCLENBQUMsTUFBTTtTQUN4RSxHQUFDLDJDQUEyQixDQUFDLFVBQVUsSUFBRywyQ0FBMkIsQ0FBQyxVQUFVO1NBQ2hGLEdBQUMsMkNBQTJCLENBQUMsZ0JBQWdCLElBQUcsMkNBQTJCLENBQUMsZ0JBQWdCO1NBQzVGLEdBQUMsMkNBQTJCLENBQUMsV0FBVyxJQUFHLDJDQUEyQixDQUFDLFdBQVc7U0FDbEYsR0FBQywyQ0FBMkIsQ0FBQyxJQUFJLElBQUcsMkNBQTJCLENBQUMsSUFBSTtTQUNwRSxHQUFDLDJDQUEyQixDQUFDLEtBQUssSUFBRywyQ0FBMkIsQ0FBQyxLQUFLO1NBQ3RFLEdBQUMsMkNBQTJCLENBQUMsT0FBTyxJQUFHLDJDQUEyQixDQUFDLE9BQU87U0FDMUUsR0FBQywyQ0FBMkIsQ0FBQyxTQUFTLElBQUcsMkNBQTJCLENBQUMsU0FBUzthQUM5RSxDQUFDO0tBRVcsdUNBQVEsR0FBRyxJQUFJLHlCQUFhO1NBQ3hDLEdBQUMsZ0NBQWdCLENBQUMsSUFBSSxJQUFHLGdDQUFnQixDQUFDLElBQUk7U0FDOUMsR0FBQyxnQ0FBZ0IsQ0FBQyxJQUFJLElBQUcsZ0NBQWdCLENBQUMsSUFBSTtTQUM5QyxHQUFDLGdDQUFnQixDQUFDLFFBQVEsSUFBRyxnQ0FBZ0IsQ0FBQyxRQUFRO1NBQ3RELEdBQUMsZ0NBQWdCLENBQUMsS0FBSyxJQUFHLGdDQUFnQixDQUFDLEtBQUs7U0FDaEQsR0FBQyxnQ0FBZ0IsQ0FBQyxHQUFHLElBQUcsZ0NBQWdCLENBQUMsR0FBRztTQUM1QyxHQUFDLGdDQUFnQixDQUFDLE1BQU0sSUFBRyxnQ0FBZ0IsQ0FBQyxNQUFNO2FBQ2xELENBQUM7S0FFVywrQ0FBZ0IsR0FBRyxJQUFJLHlCQUFhO1NBQ2hELEdBQUMsd0NBQXdCLENBQUMsR0FBRyxJQUFHLHdDQUF3QixDQUFDLEdBQUc7U0FDNUQsR0FBQyx3Q0FBd0IsQ0FBQyxHQUFHLElBQUcsd0NBQXdCLENBQUMsR0FBRztTQUM1RCxHQUFDLHdDQUF3QixDQUFDLE1BQU0sSUFBRyx3Q0FBd0IsQ0FBQyxNQUFNO1NBQ2xFLEdBQUMsd0NBQXdCLENBQUMsT0FBTyxJQUFHLHdDQUF3QixDQUFDLE9BQU87YUFDcEUsQ0FBQztLQUVXLDhDQUFlLEdBQUcsSUFBSSx5QkFBYTtTQUMvQyxHQUFDLDZDQUE2QixDQUFDLEdBQUcsSUFBRywwQ0FBMEIsQ0FBQyxHQUFHO1NBQ25FLEdBQUMsNkNBQTZCLENBQUMsSUFBSSxJQUFHLDBDQUEwQixDQUFDLElBQUk7U0FDckUsR0FBQyw2Q0FBNkIsQ0FBQyxLQUFLLElBQUcsMENBQTBCLENBQUMsS0FBSzthQUN2RSxDQUFDO0tBRVcsNkNBQWMsR0FBRyxJQUFJLHlCQUFhO1NBQzlDLEdBQUMsc0NBQXNCLENBQUMsS0FBSyxJQUFHLGtDQUFrQixDQUFDLEtBQUs7U0FDeEQsR0FBQyxzQ0FBc0IsQ0FBQyxRQUFRLElBQUcsa0NBQWtCLENBQUMsUUFBUTtTQUM5RCxHQUFDLHNDQUFzQixDQUFDLE1BQU0sSUFBRyxrQ0FBa0IsQ0FBQyxNQUFNO1NBQzFELEdBQUMsc0NBQXNCLENBQUMsS0FBSyxJQUFHLGtDQUFrQixDQUFDLEtBQUs7U0FDeEQsR0FBQyxzQ0FBc0IsQ0FBQyxJQUFJLElBQUcsa0NBQWtCLENBQUMsSUFBSTtTQUN0RCxHQUFDLHNDQUFzQixDQUFDLEtBQUssSUFBRyxrQ0FBa0IsQ0FBQyxLQUFLO1NBQ3hELEdBQUMsc0NBQXNCLENBQUMsT0FBTyxJQUFHLGtDQUFrQixDQUFDLE9BQU87U0FDNUQsR0FBQyxzQ0FBc0IsQ0FBQyxPQUFPLElBQUcsa0NBQWtCLENBQUMsT0FBTzthQUM1RCxDQUFDO0tBRVcsNENBQWEsR0FBRyxJQUFJLHlCQUFhO1NBQzdDLEdBQUMscUNBQXFCLENBQUMsT0FBTyxJQUFHLHFDQUFxQixDQUFDLE9BQU87U0FDOUQsR0FBQyxxQ0FBcUIsQ0FBQyxJQUFJLElBQUcscUNBQXFCLENBQUMsSUFBSTtTQUN4RCxHQUFDLHFDQUFxQixDQUFDLEtBQUssSUFBRyxxQ0FBcUIsQ0FBQyxLQUFLO1NBQzFELEdBQUMscUNBQXFCLENBQUMsSUFBSSxJQUFHLHFDQUFxQixDQUFDLElBQUk7U0FDeEQsR0FBQyxxQ0FBcUIsQ0FBQyxLQUFLLElBQUcscUNBQXFCLENBQUMsS0FBSztTQUMxRCxHQUFDLHFDQUFxQixDQUFDLE1BQU0sSUFBRyxxQ0FBcUIsQ0FBQyxNQUFNO2FBQzVELENBQUM7S0FFVyx5Q0FBVSxHQUFHLElBQUkseUJBQWE7U0FDMUMsR0FBQyxrQ0FBa0IsQ0FBQyxXQUFXLElBQUcsa0NBQWtCLENBQUMsV0FBVztTQUNoRSxHQUFDLGtDQUFrQixDQUFDLEtBQUssSUFBSSxrQ0FBa0IsQ0FBQyxLQUFLO1NBQ3JELEdBQUMsa0NBQWtCLENBQUMsWUFBWSxJQUFHLGtDQUFrQixDQUFDLFlBQVk7U0FDbEUsR0FBQyxrQ0FBa0IsQ0FBQyxZQUFZLElBQUcsa0NBQWtCLENBQUMsWUFBWTthQUNsRSxDQUFDO0tBQ0wscUNBQUM7RUFBQTtBQW5JWSx5RUFBOEI7O0FBb0kzQyw0QkFBMkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN2SzNCO0tBSUUsZ0JBQW1CLGFBQXFCLEVBQUUsU0FBaUIsRUFBRSxVQUErQjtTQUMxRixJQUFJLENBQUMsY0FBYyxHQUFHLGFBQWEsQ0FBQztTQUNwQyxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztTQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztLQUNoQyxDQUFDO0tBRUQsc0JBQVcsaUNBQWE7Y0FBeEI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUM3QixDQUFDOzs7UUFBQTtLQUVELHNCQUFXLDZCQUFTO2NBQXBCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDekIsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyw4QkFBVTtjQUFyQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1NBQzFCLENBQUM7OztRQUFBO0tBRU0sOEJBQWEsR0FBcEI7U0FDRSxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7S0FDNUMsQ0FBQztLQUNILGFBQUM7QUFBRCxFQUFDO0FBekJZLHlCQUFNO0FBMkJuQjtLQUF1QyxxQ0FBTTtLQUMzQywyQkFDRSxhQUFxQixFQUNyQixTQUFpQixFQUNqQixVQUErQixFQUN2QixjQUFvQyxFQUNwQyxjQUF1QjtTQUxqQyxZQU1JLGtCQUFNLGFBQWEsRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLFNBQzlDO1NBSFMsb0JBQWMsR0FBZCxjQUFjLENBQXNCO1NBQ3BDLG9CQUFjLEdBQWQsY0FBYyxDQUFTOztLQUVqQyxDQUFDO0tBRUQsc0JBQVcsNENBQWE7Y0FBeEI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUM3QixDQUFDOzs7UUFBQTtLQUVELHNCQUFXLDRDQUFhO2NBQXhCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7U0FDN0IsQ0FBQzs7O1FBQUE7S0FFTSxxREFBeUIsR0FBaEM7U0FDRSxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7S0FDNUMsQ0FBQztLQUNILHdCQUFDO0FBQUQsRUFBQyxDQXJCc0MsTUFBTSxHQXFCNUM7QUFyQlksK0NBQWlCO0FBdUI5QjtLQUFpQywrQkFBTTtLQUNyQyxxQkFDRSxhQUFxQixFQUNyQixTQUFpQixFQUNqQixVQUErQixFQUN2QixJQUF3QixFQUN4QixJQUF3QixFQUN4QixrQkFBMkI7U0FOckMsWUFPSSxrQkFBTSxhQUFhLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxTQUM5QztTQUpTLFVBQUksR0FBSixJQUFJLENBQW9CO1NBQ3hCLFVBQUksR0FBSixJQUFJLENBQW9CO1NBQ3hCLHdCQUFrQixHQUFsQixrQkFBa0IsQ0FBUzs7S0FFckMsQ0FBQztLQUVELHNCQUFXLGlDQUFRO2NBQW5CO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDbkIsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyxpQ0FBUTtjQUFuQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ25CLENBQUM7OztRQUFBO0tBRUQsc0JBQVcsMENBQWlCO2NBQTVCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztTQUNqQyxDQUFDOzs7UUFBQTtLQUVPLCtDQUF5QixHQUFqQztTQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztLQUM1QyxDQUFDO0tBQ0gsa0JBQUM7QUFBRCxFQUFDLENBMUJnQyxNQUFNLEdBMEJ0QztBQTFCWSxtQ0FBVztBQTRCeEI7S0FBd0Msc0NBQU07S0FDNUMsNEJBQ0UsYUFBcUIsRUFDckIsU0FBaUIsRUFDakIsVUFBK0IsRUFDdkIsV0FBK0IsRUFDL0IsV0FBZ0MsRUFDaEMsVUFBa0MsRUFDbEMsT0FBZTtTQVB6QixZQVFJLGtCQUFNLGFBQWEsRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLFNBQzlDO1NBTFMsaUJBQVcsR0FBWCxXQUFXLENBQW9CO1NBQy9CLGlCQUFXLEdBQVgsV0FBVyxDQUFxQjtTQUNoQyxnQkFBVSxHQUFWLFVBQVUsQ0FBd0I7U0FDbEMsYUFBTyxHQUFQLE9BQU8sQ0FBUTs7S0FFekIsQ0FBQztLQUVELHNCQUFXLDBDQUFVO2NBQXJCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7U0FDMUIsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVywwQ0FBVTtjQUFyQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1NBQzFCLENBQUM7OztRQUFBO0tBRUQsc0JBQVcseUNBQVM7Y0FBcEI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztTQUN6QixDQUFDOzs7UUFBQTtLQUVELHNCQUFXLHNDQUFNO2NBQWpCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDdEIsQ0FBQzs7O1FBQUE7S0FDSCx5QkFBQztBQUFELEVBQUMsQ0EzQnVDLE1BQU0sR0EyQjdDO0FBM0JZLGlEQUFrQjs7Ozs7Ozs7O0FDaEYvQix3Q0FBMkQ7QUFDM0QsdURBVXdDO0FBRXhDLCtDQUFvRjtBQUNwRixnREFBZ0U7QUFHaEU7S0FHRSw0QkFBbUIsVUFBaUM7U0FDbEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7S0FDaEMsQ0FBQztLQUVELHNCQUFXLDJDQUFXO2NBQXRCO2FBQ0UsTUFBTSxrQ0FBc0I7U0FDOUIsQ0FBQzs7O1FBQUE7S0FFTSxtREFBc0IsR0FBN0IsVUFDRSxRQUFrQixFQUNsQixPQUFvQixFQUNwQixhQUFzQixFQUN0QixlQUF3QixFQUN4QixpQkFBMEIsRUFDMUIsT0FBZTtTQU5qQixpQkFvQkc7U0FiQywrQkFBK0I7U0FDL0IsSUFBTSxJQUFJLEdBQUcsT0FBTyxLQUFLLDRCQUFXLENBQUMsT0FBTyxHQUFHLDhCQUFNLENBQUMsa0JBQWtCLEdBQUcsOEJBQU0sQ0FBQyxpQkFBaUIsQ0FBQztTQUNwRyxJQUFNLFVBQVUsR0FBc0IsRUFBRSxDQUFDO1NBQ3pDLFVBQVUsQ0FBQyxtQ0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLFFBQVEsQ0FBQztTQUM1QyxVQUFVLENBQUMsbUNBQVcsQ0FBQyxhQUFhLENBQUMsR0FBRyxhQUFhLENBQUM7U0FDdEQsVUFBVSxDQUFDLG1DQUFXLENBQUMsZUFBZSxDQUFDLEdBQUcsZUFBZSxDQUFDO1NBQzFELFVBQVUsQ0FBQyxtQ0FBVyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsaUJBQWlCLENBQUM7U0FDOUQsVUFBVSxDQUFDLG1DQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsT0FBTyxDQUFDO1NBRTFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFZLGtCQUFRO2FBQ3hFLElBQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxNQUE2QixDQUFDO2FBQzVELE1BQU0sQ0FBQyxLQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDN0UsQ0FBQyxDQUFDLENBQUM7S0FDTCxDQUFDO0tBRUksa0RBQXFCLEdBQTVCLFVBQTZCLFFBQWtCO1NBQS9DLGlCQVFDO1NBUEMsSUFBTSxVQUFVLGFBQXdCLEdBQUMsbUNBQVcsQ0FBQyxRQUFRLElBQUcsUUFBUSxLQUFFLENBQUM7U0FDM0UsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLDhCQUFNLENBQUMsZ0JBQWdCLEVBQUUsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUEyQixrQkFBUTthQUMxRyxJQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsTUFBNEIsQ0FBQzthQUMzRCxNQUFNLENBQUM7aUJBQ0wsSUFBSSxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQUssSUFBSSxZQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFyQyxDQUFxQyxDQUFDO2NBQzVFLENBQUM7U0FDSixDQUFDLENBQUMsQ0FBQzs7S0FDTCxDQUFDO0tBRU0scURBQXdCLEdBQS9CLFVBQWdDLFFBQWtCO1NBQWxELGlCQVFDO1NBUEMsSUFBTSxVQUFVLGFBQXdCLEdBQUMsbUNBQVcsQ0FBQyxRQUFRLElBQUcsUUFBUSxLQUFFLENBQUM7U0FDM0UsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLDhCQUFNLENBQUMsbUJBQW1CLEVBQUUsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUEyQixrQkFBUTthQUM3RyxJQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsTUFBK0IsQ0FBQzthQUM5RCxNQUFNLENBQUM7aUJBQ0wsSUFBSSxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQUssSUFBSSxZQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFyQyxDQUFxQyxDQUFDO2NBQzVFLENBQUM7U0FDSixDQUFDLENBQUMsQ0FBQzs7S0FDTCxDQUFDO0tBRVMsZ0RBQW1CLEdBQTdCLFVBQThCLFlBQXVDLEVBQUUsU0FBa0I7U0FDdkYsSUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBQyxJQUFJLFdBQUksc0JBQU0sQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUNmLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFDdkMsQ0FBQyxDQUFDLFlBQVksRUFDZCxDQUFDLENBQUMsS0FBSyxDQUFDLEVBSGxCLENBR2tCLENBQUMsQ0FBQztTQUNsRSxzR0FBc0c7U0FDdEcsSUFBSSxLQUFLLENBQUM7U0FDVixFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUN2QixLQUFLLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBQyxJQUFJLFdBQUksd0JBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUNGLENBQUMsQ0FBQyxLQUFLLEVBQ1AsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUYzQixDQUUyQixDQUFDLENBQUM7U0FDbkUsQ0FBQztTQUNELElBQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGFBQUc7YUFDMUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsY0FBSTtpQkFDakIsTUFBTSxDQUFDLElBQUkseUJBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUN4RCxDQUFDLENBQUMsQ0FBQztTQUNMLENBQUMsQ0FBQyxDQUFDO1NBRUgsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUNWLE1BQU0sQ0FBQyxJQUFJLHlCQUFTLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUN2RSxDQUFDO1NBQ0QsTUFBTSxDQUFDLElBQUkseUJBQVMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7S0FDaEUsQ0FBQztLQUNILHlCQUFDO0FBQUQsRUFBQztBQTVFWSxpREFBa0I7Ozs7Ozs7OztBQ1ovQjtLQUNFLHNCQUNVLFNBQWdELEVBQ2hELFdBQStDO1NBRC9DLGNBQVMsR0FBVCxTQUFTLENBQXVDO1NBQ2hELGdCQUFXLEdBQVgsV0FBVyxDQUFvQztTQUNyRCxlQUFlO0tBQ25CLENBQUM7S0FFTSxxQ0FBYyxHQUFyQixVQUFzQixpQkFBd0I7U0FDNUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN0QyxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUM7U0FDdEMsQ0FBQztLQUNILENBQUM7S0FDSCxtQkFBQztBQUFELEVBQUM7QUFFRDtLQUdFLGlDQUEyQixVQUFpQztTQUFqQyxlQUFVLEdBQVYsVUFBVSxDQUF1QjtTQUMxRCxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztTQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7S0FDOUUsQ0FBQztLQUVELHNCQUFXLGdEQUFXO2NBQXRCO2FBQ0UsTUFBTSwyQ0FBMkI7U0FDbkMsQ0FBQzs7O1FBQUE7S0FFTSxpREFBZSxHQUF0QixVQUF1QixFQUFrQixFQUFFLFFBQW1DLEVBQUUsT0FBK0I7U0FBL0csaUJBTUM7U0FMQyxJQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksS0FBSyxFQUFnQixDQUFDO1NBQ2pFLElBQU0sWUFBWSxHQUFHLElBQUksWUFBWSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUN6RCxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDO1NBQzlCLE1BQU0sQ0FBQyxjQUFNLFlBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEVBQUUsWUFBWSxDQUFDLEVBQXpDLENBQXlDLENBQUM7S0FDekQsQ0FBQztLQUVPLGdFQUE4QixHQUF0QyxVQUF1QyxFQUFrQjtTQUN2RCxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDM0MsQ0FBQztLQUVPLGdEQUFjLEdBQXRCLFVBQXVCLFlBQTBCO1NBQy9DLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDdEUsTUFBTSxDQUFDO1NBQ1QsQ0FBQztTQUVELDRFQUE0RTtTQUM1RSxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBQyxJQUFJLFFBQUMsQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFuQyxDQUFtQyxDQUFDLENBQUM7S0FDaEcsQ0FBQztLQUVPLG9EQUFrQixHQUExQixVQUEyQixFQUFrQixFQUFFLFlBQTBCO1NBQ3ZFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUM3QyxNQUFNLENBQUM7U0FDVCxDQUFDO1NBRUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFHLElBQUksVUFBRyxLQUFLLFlBQVksRUFBcEIsQ0FBb0IsQ0FBQyxDQUFDO0tBQzlFLENBQUM7S0FDSCw4QkFBQztBQUFELEVBQUM7QUF4Q1ksMkRBQXVCOzs7Ozs7Ozs7QUNsQnBDLHVEQVF3QztBQUV4QywrQ0FBNkQ7QUFDN0QsMkNBQTRDO0FBSTVDO0tBQ0UsK0JBQTJCLFVBQWlDO1NBQWpDLGVBQVUsR0FBVixVQUFVLENBQXVCO0tBQzVELENBQUM7S0FFRCxzQkFBVyw4Q0FBVztjQUF0QjthQUNFLE1BQU0sdUNBQXlCO1NBQ2pDLENBQUM7OztRQUFBO0tBRU0sMERBQTBCLEdBQWpDLFVBQWtDLFNBQW9CLEVBQUUsS0FBcUI7U0FDM0UsSUFBTSxVQUFVO2FBQ2QsR0FBQyxtQ0FBVyxDQUFDLFNBQVMsSUFBRyxTQUFTO2dCQUNuQyxDQUFDO1NBRUYsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLDhCQUFNLENBQUMscUJBQXFCLEVBQUUsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFRO2FBQ3BGLHlCQUF5QjthQUV6QixJQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBOEIsQ0FBQzthQUN2RCxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyx1QkFBYTtpQkFDN0IsSUFBTSxJQUFJLEdBQUcsSUFBSSw2QkFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2lCQUM5QyxNQUFNLENBQUMsSUFBSSxxQkFBUyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQzthQUNwQyxDQUFDLENBQUMsQ0FBQztTQUNMLENBQUMsQ0FBQyxDQUFDOztLQUNMLENBQUM7S0FFTSx5REFBeUIsR0FBaEMsVUFBaUMsU0FBaUIsRUFBRSxRQUFnQjtTQUNsRSxJQUFNLFVBQVU7YUFDZCxHQUFDLG1DQUFXLENBQUMsa0JBQWtCLElBQUcsU0FBUzthQUMzQyxHQUFDLG1DQUFXLENBQUMsY0FBYyxJQUFHLFFBQVE7Z0JBQ3ZDLENBQUM7U0FFRixNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsOEJBQU0sQ0FBQyxvQkFBb0IsRUFBRSxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQVE7YUFDbkYsSUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQXVCLENBQUM7YUFDaEQsTUFBTSxDQUFDLE1BQU0sQ0FBQztTQUNoQixDQUFDLENBQUMsQ0FBQzs7S0FDTCxDQUFDO0tBRU0sd0RBQXdCLEdBQS9CLFVBQWdDLElBQVksRUFBRSxLQUFxQjtTQUNqRSxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7S0FDekQsQ0FBQztLQUVNLG1FQUFtQyxHQUExQyxVQUEyQyxTQUFpQixFQUFFLEtBQXFCO1NBQ2pGLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztLQUM5RCxDQUFDO0tBRU8sa0RBQWtCLEdBQTFCLFVBQ0UsS0FBcUIsRUFDckIsSUFBd0IsRUFDeEIsU0FBNkI7U0FDN0IsSUFBTSxVQUFVLEdBQXNCLEVBQUUsQ0FBQztTQUN6QyxFQUFFLENBQUMsQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQzthQUN2QixVQUFVLENBQUMsbUNBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLElBQUksQ0FBQztTQUNsRCxDQUFDO1NBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO2FBQ25DLFVBQVUsQ0FBQyxtQ0FBVyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsU0FBUyxDQUFDO1NBQ3pELENBQUM7U0FBQyxJQUFJLENBQUMsQ0FBQzthQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQztTQUMzRCxDQUFDO1NBRUQsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLDhCQUFNLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBUTthQUM1RSxJQUFNLHVCQUF1QixHQUFHLFVBQUMsTUFBYTtpQkFDNUMsTUFBTSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUM7YUFDL0IsQ0FBQyxDQUFDO2FBRUYsZ0VBQWdFO2FBQ2hFLEVBQUUsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzdDLElBQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUF1QixDQUFDO2lCQUNoRCxJQUFNLElBQUksR0FBRyxJQUFJLDZCQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7aUJBQ3ZDLE1BQU0sQ0FBQyxJQUFJLHFCQUFTLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQ3BDLENBQUM7YUFBQyxJQUFJLENBQUMsQ0FBQztpQkFDTixNQUFNLENBQUMsU0FBUyxDQUFDO2FBQ25CLENBQUM7U0FDSCxDQUFDLENBQUMsQ0FBQztLQUNMLENBQUM7S0FDSCw0QkFBQztBQUFELEVBQUM7QUF4RVksdURBQXFCOzs7Ozs7Ozs7QUNoQmxDLHdDQUEyRDtBQUMzRCx1REFBK0U7QUFDL0UsMkNBQTJDO0FBRTNDLGdFQUFnRztBQUNoRyx1REFBd0U7QUFDeEUsK0NBQW9EO0FBR3BELGlEQUErRTtBQUUvRSx3REFBa0U7QUFFbEU7S0FLRSx1QkFBbUIsYUFBNEI7U0FDN0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0tBQ3ZDLENBQUM7S0FFRCxzQkFBVywrQkFBSTtjQUFmO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDO1NBQ2xDLENBQUM7OztRQUFBO0tBRUQsc0JBQVcsdUNBQVk7Y0FBdkI7YUFDRSxNQUFNLENBQUMsSUFBSSx5QkFBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUNoSCxDQUFDOzs7UUFBQTtLQUVELHNCQUFXLG1DQUFRO2NBQW5CO2FBQ0UsTUFBTSxDQUFDLCtEQUE4QixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN2RixDQUFDOzs7UUFBQTtLQUVELHNCQUFXLDBDQUFlO2NBQTFCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztTQUMvQixDQUFDOzs7UUFBQTtLQUVNLHdDQUFnQixHQUF2QixVQUF3QixRQUEwQztTQUFsRSxpQkFPQztTQU5DLElBQUksWUFBWSxHQUFHLGlCQUFLLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDMUQsSUFBTSxpQkFBaUIsR0FBRyxvQ0FBa0IsQ0FBQyxRQUFRLENBQUMsVUFBVSx1Q0FBNEMsQ0FBQztTQUM3RyxNQUFNLENBQUMsaUJBQWlCLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyx1QkFBYTthQUN4RyxLQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDckMsTUFBTSxDQUFDLEtBQUksQ0FBQyxZQUFZLENBQUM7U0FDM0IsQ0FBQyxDQUFDLENBQUM7S0FDTCxDQUFDO0tBRUQ7Ozs7Ozs7UUFPRztLQUNJLHdDQUFnQixHQUF2QixVQUF3QixLQUFxQjtTQUE3QyxpQkF1QkM7U0F0QkMsSUFBTSxPQUFPLEdBQUcsSUFBSSxLQUFLLEVBQXNCLENBQUM7U0FDaEQsSUFBSSxtQkFBd0MsQ0FBQztTQUU3QyxJQUFJLENBQUM7YUFDSCxtQkFBbUIsR0FBRyxvQ0FBa0IsQ0FBQyxRQUFRLENBQUMsVUFBVSwyQ0FBZ0QsQ0FBQztTQUMvRyxDQUFDO1NBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNYLHdEQUF3RDthQUN4RCxNQUFNLENBQUMsT0FBTyxDQUFDO1NBQ2pCLENBQUM7U0FFRCw0RUFBNEU7U0FDNUUsSUFBTSxjQUFjLEdBQUcsSUFBSSwrQ0FBc0IsQ0FBd0IsUUFBUSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDckgsbUJBQW1CLENBQUMsZUFBZSxDQUFDLHNDQUFjLENBQUMsZ0JBQWdCLEVBQUUsVUFBQyxLQUFLO2FBQ3pFLElBQU0sU0FBUyxHQUFHLEtBQWUsQ0FBQzthQUNsQyxNQUFNLENBQUMsU0FBUyxLQUFLLEtBQUksQ0FBQyxnQkFBZ0IsQ0FBQztTQUM3QyxDQUFDLEVBQUUsVUFBQyxTQUFpQjthQUNuQixjQUFjLENBQUMsWUFBWSxDQUFDLGNBQU0sV0FBSSw2Q0FBcUIsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQTNDLENBQTJDLENBQUMsQ0FBQztTQUNqRixDQUFDLENBQUMsQ0FBQztTQUVILE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7U0FFN0IsTUFBTSxDQUFDLE9BQU8sQ0FBQztLQUNqQixDQUFDO0tBRU8sd0NBQWdCLEdBQXhCLFVBQXlCLGFBQTRCO1NBQ25ELElBQUksQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFDO1NBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDO1NBRWhELElBQU0sSUFBSSxHQUFHLCtEQUE4QixDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLENBQUM7U0FDdkcsSUFBSSxVQUF3QyxDQUFDO1NBQzdDLElBQUksUUFBK0IsQ0FBQztTQUNwQyxJQUFJLFFBQStCLENBQUM7U0FDcEMsSUFBSSxRQUE0QixDQUFDO1NBQ2pDLElBQUksY0FBK0MsQ0FBQztTQUVwRCxFQUFFLENBQUMsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDOUMsSUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUM7YUFDbkQsVUFBVSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsYUFBRyxJQUFJLFdBQUkseUJBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBNUMsQ0FBNEMsQ0FBQyxDQUFDO1NBQy9FLENBQUM7U0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQ3RELFFBQVEsR0FBRyxhQUFhLENBQUMsUUFBUSxJQUFJLElBQUkseUJBQVMsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQ3hILFFBQVEsR0FBRyxhQUFhLENBQUMsUUFBUSxJQUFJLElBQUkseUJBQVMsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQ3hILFFBQVEsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDO2FBQ2xDLGNBQWMsR0FBRyxhQUFhLENBQUMsY0FBYztpQkFDNUIsK0RBQThCLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDdkcsQ0FBQztTQUVELElBQUksQ0FBQyxnQkFBZ0IsR0FBRzthQUN0QixJQUFJLEVBQUUsSUFBSTthQUNWLGVBQWUsRUFBRSxVQUFVO2FBQzNCLFFBQVEsRUFBRSxRQUFRO2FBQ2xCLFFBQVEsRUFBRSxRQUFRO2FBQ2xCLFFBQVEsRUFBRSxRQUFRO2FBQ2xCLGNBQWMsRUFBRSxjQUFjO1VBQy9CLENBQUM7S0FDSixDQUFDO0tBQ0gsb0JBQUM7QUFBRCxFQUFDO0FBbEdZLHVDQUFhOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDYjFCLHdDQUEyRDtBQUczRCxpREFBK0U7QUFDL0UsbURBQXdEO0FBRXhEO0tBQTJDLHlDQUFpQjtLQUMxRCwrQkFBMkIsZ0JBQXdCLEVBQUUsS0FBcUI7U0FBMUUsWUFDRSxrQkFBTSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLFNBQ3pEO1NBRjBCLHNCQUFnQixHQUFoQixnQkFBZ0IsQ0FBUTs7S0FFbkQsQ0FBQztLQUVNLGlEQUFpQixHQUF4QjtTQUNFLHdFQUF3RTtTQUN4RSxJQUFNLE9BQU8sR0FBRyxvQ0FBa0IsQ0FBQyxRQUFRLENBQUMsVUFBVSx1Q0FBNEMsQ0FBQztTQUNuRyxNQUFNLENBQUMsT0FBTyxDQUFDLG1DQUFtQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFTO2FBQ2xHLEVBQUUsQ0FBQyxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO2lCQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7YUFDOUMsQ0FBQzthQUVELE1BQU0sQ0FBQyxTQUFTLENBQUM7U0FDbkIsQ0FBQyxDQUFDLENBQUM7S0FDTCxDQUFDO0tBQ0gsNEJBQUM7QUFBRCxFQUFDLENBaEIwQyxxQ0FBaUIsR0FnQjNEO0FBaEJZLHVEQUFxQjs7Ozs7Ozs7O0FDMkNsQztLQUdFO1NBQ0UsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7S0FDdEIsQ0FBQztLQUVNLDZDQUFlLEdBQXRCLFVBQXVCLE9BQW1CO1NBQ3hDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLE9BQU8sQ0FBQztLQUNoRCxDQUFDO0tBRU0sd0NBQVUsR0FBakIsVUFBd0MsV0FBbUI7U0FDekQsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDaEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBYyxXQUFXLG1CQUFnQixDQUFDLENBQUM7U0FDN0QsQ0FBQztTQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBTSxDQUFDO0tBQzFDLENBQUM7S0FDSCwwQkFBQztBQUFELEVBQUM7QUFFRDs7O0lBR0c7QUFDSDtLQXlCRSw0Q0FBNEM7S0FDNUM7S0FBdUIsQ0FBQztLQXRCeEIsc0JBQWtCLDhCQUFRO1NBSDFCOztZQUVHO2NBQ0g7YUFDRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLENBQUM7aUJBQ3hDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxJQUFJLG1CQUFtQixFQUFFLENBQUMsQ0FBQzthQUM1RCxDQUFDO2FBRUQsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDO2lCQUN4QyxNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7YUFDdkQsQ0FBQzthQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsMkJBQTJCLENBQUM7U0FDNUMsQ0FBQzs7O1FBQUE7S0FFRDs7OztRQUlHO0tBQ1csOEJBQVcsR0FBekIsVUFBMEIsZUFBaUM7U0FDekQsTUFBTSxDQUFDLDJCQUEyQixHQUFHLGVBQWUsQ0FBQztLQUN2RCxDQUFDO0tBSUgseUJBQUM7QUFBRCxFQUFDO0FBM0JZLGlEQUFrQjs7Ozs7Ozs7O0FDekUvQix3Q0FBMkQ7QUFDM0QsdURBUXdDO0FBQ3hDLGlEQU1zQztBQUl0QztLQUdFLDhCQUFtQixVQUFpQztTQUNsRCxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztLQUNoQyxDQUFDO0tBRUQsc0JBQVcsNkNBQVc7Y0FBdEI7YUFDRSxNQUFNLHFDQUF3QjtTQUNoQyxDQUFDOzs7UUFBQTtLQUVEOzs7O1FBSUc7S0FDSSxzREFBdUIsR0FBOUIsVUFBK0IsUUFBa0I7U0FDL0MsSUFBTSxVQUFVLGFBQXVCLEdBQUMsbUNBQVcsQ0FBQyxRQUFRLElBQUcsUUFBUSxLQUFDLENBQUM7U0FDekUsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLDhCQUFNLENBQUMsa0JBQWtCLEVBQUUsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFPLGtCQUFRO2FBQ3hGLE1BQU0sQ0FBRSxDQUFDLHdEQUF3RDtTQUNuRSxDQUFDLENBQUMsQ0FBQzs7S0FDTCxDQUFDO0tBRUQ7Ozs7OztRQU1HO0tBQ0ksc0RBQXVCLEdBQTlCLFVBQStCLFFBQWtCLEVBQ2xCLGtCQUFxRCxFQUNyRCxtQkFBaUQ7U0FDOUUsRUFBRSxDQUFDLENBQUMsa0JBQWtCLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDcEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO1NBQ3JFLENBQUM7U0FFRCxJQUFNLGFBQWEsR0FBVyxJQUFJLENBQUMsMkJBQTJCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztTQUNwRixJQUFJLHFCQUFxQixHQUEwQixJQUFJLENBQUMseUJBQXlCLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN6RyxJQUFJLHVCQUF1QixHQUE2QixJQUFJLENBQUMsbUJBQW1CLENBQUMsa0JBQWtCLEVBQUUscUJBQXFCLENBQUMsQ0FBQztTQUU1SCxJQUFNLFVBQVU7YUFDZCxHQUFDLG1DQUFXLENBQUMsUUFBUSxJQUFHLFFBQVE7YUFDaEMsR0FBQyxtQ0FBVyxDQUFDLG1CQUFtQixJQUFHLGFBQWE7Z0JBQ2pELENBQUM7U0FFRixNQUFNLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUM7YUFDOUIsS0FBSyxxQkFBcUIsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2lCQUM1QyxVQUFVLENBQUMsbUNBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLHVCQUF1QixDQUFDLFlBQVksQ0FBQztpQkFDdEYsS0FBSyxDQUFDO2FBQ1IsQ0FBQzthQUNELEtBQUsscUJBQXFCLENBQUMsU0FBUyxFQUFFLENBQUM7aUJBQ3JDLFVBQVUsQ0FBQyxtQ0FBVyxDQUFDLHlCQUF5QixDQUFDLEdBQUcsdUJBQXVCLENBQUMsYUFBYSxDQUFDO2lCQUMxRixLQUFLLENBQUM7YUFDUixDQUFDO2FBQ0QsS0FBSyxxQkFBcUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztpQkFDekMsVUFBVSxDQUFDLG1DQUFXLENBQUMscUJBQXFCLENBQUMsR0FBRyx1QkFBdUIsQ0FBQyxXQUFXLENBQUM7aUJBQ3BGLEtBQUssQ0FBQzthQUNSLENBQUM7YUFDRDtpQkFDRSxLQUFLLENBQUM7U0FDVixDQUFDO1NBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLDhCQUFNLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBTyxrQkFBUTthQUNuRix3REFBd0Q7YUFDeEQsTUFBTSxDQUFDO2FBQ1AsK0ZBQStGO1NBQ2pHLENBQUMsQ0FBQyxDQUFDOztLQUNMLENBQUM7S0FFQzs7Ozs7O01BTUM7S0FDSSxtREFBb0IsR0FBM0IsVUFBNEIsUUFBa0IsRUFDbEIsS0FBK0IsRUFDL0IsbUJBQWlEO1NBQzNFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7U0FDNUQsQ0FBQztTQUVELElBQU0sYUFBYSxHQUFXLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1NBQ3BGLElBQUksdUJBQXVCLEdBQTZCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUV0RixJQUFNLFVBQVU7YUFDZCxHQUFDLG1DQUFXLENBQUMsUUFBUSxJQUFHLFFBQVE7YUFDaEMsR0FBQyxtQ0FBVyxDQUFDLG1CQUFtQixJQUFHLGFBQWE7YUFDaEQsR0FBQyxtQ0FBVyxDQUFDLFNBQVMsSUFBRyx1QkFBdUIsQ0FBQyxTQUFTO2dCQUMzRCxDQUFDO1NBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLDhCQUFNLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBTyxrQkFBUTthQUNuRix3REFBd0Q7YUFDeEQsTUFBTSxDQUFDO2FBQ1AsK0ZBQStGO1NBQ2pHLENBQUMsQ0FBQyxDQUFDOztLQUNMLENBQUM7S0FFRDs7O1FBR0c7S0FDSyxnREFBaUIsR0FBekIsVUFBMEIsS0FBK0I7U0FDdkQsSUFBSSxHQUFHLEdBQWtCLEVBQUUsQ0FBQztTQUM1QixJQUFJLHVCQUF1QixHQUE2QixJQUFJLDBDQUF3QixFQUFFLENBQUM7U0FDdkYsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7YUFDdEMsSUFBSSxPQUFPLEdBQXdCLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7YUFDcEQsRUFBRSxDQUFDLENBQUMsT0FBTyxLQUFLLFNBQVMsSUFBSSxPQUFPLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztpQkFDN0MsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLHdCQUF3QjthQUN6RCxDQUFDO2FBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO2FBQy9DLENBQUM7U0FDSCxDQUFDO1NBQ0QsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3JCLElBQUksbUJBQW1CLEdBQXdCLElBQUkscUNBQW1CLEVBQUUsQ0FBQzthQUN6RSxtQkFBbUIsQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDO2FBQzdDLG1CQUFtQixDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7YUFDcEMsdUJBQXVCLENBQUMsU0FBUyxHQUFHLG1CQUFtQixDQUFDO1NBQzFELENBQUM7U0FDRCxNQUFNLENBQUMsdUJBQXVCLENBQUM7S0FDakMsQ0FBQztLQUNEOzs7Ozs7Ozs7Ozs7O1FBYUc7S0FDSyxrREFBbUIsR0FBM0IsVUFBNEIsa0JBQXFELEVBQ3JELGFBQW9DO1NBQzlELElBQUksdUJBQXVCLEdBQTZCLElBQUksMENBQXdCLEVBQUUsQ0FBQztTQUN2RixJQUFJLG9CQUFvQixHQUFZLEtBQUssQ0FBQztTQUUxQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2FBQ25ELElBQU0sRUFBRSxHQUFHLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2pDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxLQUFLLFNBQVMsSUFBSSxFQUFFLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDbEUsSUFBSSxRQUFRLEdBQUcsSUFBSSxNQUFNLENBQUMscUJBQXFCLEVBQUUsR0FBRyxDQUFDLENBQUM7aUJBQ3RELElBQUksV0FBVyxHQUF3QixFQUFFLENBQUMsS0FBNEIsQ0FBQztpQkFDdkUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUNoQyxFQUFFLENBQUMsQ0FBQyxhQUFhLEtBQUsscUJBQXFCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO3lCQUM3RCxJQUFJLFNBQVMsR0FBNEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQzt5QkFDdEgsdUJBQXVCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztxQkFDdkQsQ0FBQztxQkFBQyxJQUFJLENBQUMsQ0FBQzt5QkFDTixvQkFBb0IsR0FBRyxJQUFJLENBQUM7eUJBQzVCLEtBQUssQ0FBQztxQkFDUixDQUFDO2lCQUNILENBQUM7aUJBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUF3QixXQUFZLENBQUMsR0FBRyxLQUFLLFNBQVM7d0JBQzlCLFdBQVksQ0FBQyxHQUFHLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztxQkFDakUsRUFBRSxDQUFDLENBQUMsYUFBYSxLQUFLLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7eUJBQ3RELElBQUksVUFBVSxHQUF3QixJQUFJLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQzt5QkFDM0YsdUJBQXVCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztxQkFDekQsQ0FBQztxQkFBQyxJQUFJLENBQUMsQ0FBQzt5QkFDTixvQkFBb0IsR0FBRyxJQUFJLENBQUM7eUJBQzVCLEtBQUssQ0FBQztxQkFDUixDQUFDO2lCQUNILENBQUM7aUJBQUMsSUFBSSxDQUFDLENBQUM7cUJBQ04sRUFBRSxDQUFDLENBQUMsYUFBYSxLQUFLLHFCQUFxQixDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7eUJBQzFELElBQUksUUFBUSxHQUFzRCxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO3lCQUMvRyx1QkFBdUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO3FCQUNyRCxDQUFDO3FCQUFDLElBQUksQ0FBQyxDQUFDO3lCQUNOLG9CQUFvQixHQUFHLElBQUksQ0FBQzt5QkFDNUIsS0FBSyxDQUFDO3FCQUNSLENBQUM7aUJBQ0gsQ0FBQzthQUNILENBQUM7U0FDSCxDQUFDO1NBRUQsRUFBRSxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO2FBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQztTQUN0RSxDQUFDO1NBQ0QsTUFBTSxDQUFDLHVCQUF1QixDQUFDO0tBQ2pDLENBQUM7S0FFRDs7O1FBR0c7S0FDSyx3REFBeUIsR0FBakMsVUFBa0MsaUJBQTZDO1NBQzdFLElBQUksYUFBb0MsQ0FBQztTQUN6QyxxRkFBcUY7U0FDckYsSUFBSSxJQUFJLEdBQStCLGlCQUFpQixDQUFDO1NBRXpELElBQUksUUFBUSxHQUFHLElBQUksTUFBTSxDQUFDLHFCQUFxQixFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ3RELElBQUksV0FBVyxHQUF3QixJQUFJLENBQUMsS0FBNEIsQ0FBQztTQUV6RSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDeEUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNsQyxhQUFhLEdBQUcscUJBQXFCLENBQUMsZ0JBQWdCLENBQUM7YUFDekQsQ0FBQzthQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBd0IsV0FBWSxDQUFDLEdBQUcsS0FBSyxTQUFTO29CQUM1QixXQUFZLENBQUMsR0FBRyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7aUJBQ25FLGFBQWEsR0FBRyxxQkFBcUIsQ0FBQyxTQUFTLENBQUM7YUFDbEQsQ0FBQzthQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNOLGFBQWEsR0FBRyxxQkFBcUIsQ0FBQyxhQUFhLENBQUM7YUFDdEQsQ0FBQztTQUNILENBQUM7U0FBQyxJQUFJLENBQUMsQ0FBQzthQUNOLE1BQU0sSUFBSSxLQUFLLENBQUUsb0NBQW9DLENBQUMsQ0FBQztTQUN6RCxDQUFDO1NBQ0QsTUFBTSxDQUFDLGFBQWEsQ0FBQztLQUN2QixDQUFDO0tBRUQ7Ozs7OztRQU1HO0tBQ0ssOENBQWUsR0FBdkIsVUFBd0IsU0FBaUIsRUFBRSxLQUFhO1NBQ3RELElBQUksbUJBQW1CLEdBQXdCLElBQUkscUNBQW1CLEVBQUUsQ0FBQztTQUN6RSxJQUFJLFVBQVUsR0FBa0IsRUFBRSxDQUFDO1NBRW5DLEVBQUUsQ0FBQyxDQUFDLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQzNCLElBQUksUUFBUSxHQUFrQixLQUFLLENBQUM7YUFDcEMsR0FBRyxDQUFDLENBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7aUJBQzFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7YUFDMUMsQ0FBQztTQUNILENBQUM7U0FBQyxJQUFJLENBQUMsQ0FBQzthQUNOLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FDcEMsQ0FBQztTQUVELG1CQUFtQixDQUFDLHFCQUFxQixHQUFHLFNBQVMsQ0FBQztTQUN0RCxtQkFBbUIsQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDO1NBQzlDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQztLQUM3QixDQUFDO0tBRUQ7Ozs7Ozs7O1FBUUc7S0FDSyxtREFBb0IsR0FBNUIsVUFBNkIsU0FBaUIsRUFBRSxLQUEwQjtTQUN4RSxJQUFJLG1CQUFtQixHQUF3QixJQUFJLHFDQUFtQixFQUFFLENBQUM7U0FDekUsbUJBQW1CLENBQUMscUJBQXFCLEdBQUcsU0FBUyxDQUFDO1NBQ3RELEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQzthQUNsRCxtQkFBbUIsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUN0RCxDQUFDO1NBQ0QsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO2FBQ2xELG1CQUFtQixDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ3RELENBQUM7U0FDRCxtQkFBbUIsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUM3RSxNQUFNLENBQUMsbUJBQW1CLENBQUM7S0FDN0IsQ0FBQztLQUVEOzs7O1FBSUc7S0FDSywwREFBMkIsR0FBbkMsVUFBb0MsbUJBQWlEO1NBQ25GLEVBQUUsQ0FBQyxDQUFDLG1CQUFtQixLQUFLLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2FBQ2pFLE1BQU0sQ0FBQywyQ0FBMkIsQ0FBQyxPQUFPLENBQUM7U0FDN0MsQ0FBQztTQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxtQkFBbUIsS0FBSyxRQUFRLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUNwRSxNQUFNLENBQUMsMkNBQTJCLENBQUMsR0FBRyxDQUFDO1NBQ3pDLENBQUM7U0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsbUJBQW1CLEtBQUssUUFBUSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7YUFDdkUsTUFBTSxDQUFDLDJDQUEyQixDQUFDLE1BQU0sQ0FBQztTQUM1QyxDQUFDO1NBQ0QsTUFBTSxDQUFDLDJDQUEyQixDQUFDLE9BQU8sQ0FBQztLQUM3QyxDQUFDO0tBRUQ7Ozs7UUFJRztLQUNLLHFEQUFzQixHQUE5QixVQUErQixVQUFpRDtTQUM5RSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO2FBQ2YsRUFBRSxDQUFDLENBQUMsVUFBVSxLQUFLLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO2lCQUN4RCxNQUFNLENBQUMsa0RBQTBCLENBQUMsV0FBVyxDQUFDO2FBQ2hELENBQUM7YUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxLQUFLLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO2lCQUNsRSxNQUFNLENBQUMsa0RBQTBCLENBQUMsY0FBYyxDQUFDO2FBQ25ELENBQUM7YUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxLQUFLLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2lCQUM5RCxNQUFNLENBQUMsa0RBQTBCLENBQUMsVUFBVSxDQUFDO2FBQy9DLENBQUM7U0FDSCxDQUFDO1NBRUQsTUFBTSxDQUFDLGtEQUEwQixDQUFDLFVBQVUsQ0FBQztLQUMvQyxDQUFDO0tBRUgsMkJBQUM7QUFBRCxFQUFDO0FBalNZLHFEQUFvQjtBQW1TakM7O0lBRUc7QUFDSCxLQUFLLHFCQUtKO0FBTEQsWUFBSyxxQkFBcUI7S0FDeEIseUZBQW9CO0tBQ3BCLDJFQUFhO0tBQ2IsbUZBQWlCO0tBQ2pCLDZFQUFjO0FBQ2hCLEVBQUMsRUFMSSxxQkFBcUIsS0FBckIscUJBQXFCLFFBS3pCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDL1REOztJQUVHO0FBQ0g7S0FBQTtLQUVBLENBQUM7S0FBRCxxQkFBQztBQUFELEVBQUM7QUFGWSx5Q0FBYztBQUkzQjs7SUFFRztBQUNIO0tBQXlDLHVDQUFjO0tBQXZEO1NBQUEscUVBRUM7U0FEQyxrQkFBWSxHQUFrQixFQUFFLENBQUM7O0tBQ25DLENBQUM7S0FBRCwwQkFBQztBQUFELEVBQUMsQ0FGd0MsY0FBYyxHQUV0RDtBQUZZLG1EQUFtQjtBQUloQzs7SUFFRztBQUNIO0tBQWdELDhDQUFtQjtLQUFuRTs7S0FDQSxDQUFDO0tBQUQsaUNBQUM7QUFBRCxFQUFDLENBRCtDLG1CQUFtQixHQUNsRTtBQURZLGlFQUEwQjtBQUd2Qzs7SUFFRztBQUNIO0tBQXlDLHVDQUFjO0tBQXZEOztLQUlBLENBQUM7S0FBRCwwQkFBQztBQUFELEVBQUMsQ0FKd0MsY0FBYyxHQUl0RDtBQUpZLG1EQUFtQjtBQU1oQzs7SUFFRztBQUNIO0tBQTZDLDJDQUFtQjtLQUFoRTs7S0FDQSxDQUFDO0tBQUQsOEJBQUM7QUFBRCxFQUFDLENBRDRDLG1CQUFtQixHQUMvRDtBQURZLDJEQUF1QjtBQUVwQzs7SUFFRztBQUNIO0tBQUE7U0FFRSxjQUFTLEdBQWtCLEVBQUUsQ0FBQztLQUNoQyxDQUFDO0tBQUQsMEJBQUM7QUFBRCxFQUFDO0FBSFksbURBQW1CO0FBS2hDOztJQUVHO0FBQ0g7S0FBQTtTQUNFLGlCQUFZLEdBQXNDLEVBQUUsQ0FBQztTQUNyRCxnQkFBVyxHQUFtQyxFQUFFLENBQUM7U0FDakQsa0JBQWEsR0FBK0IsRUFBRSxDQUFDO0tBRWpELENBQUM7S0FBRCwrQkFBQztBQUFELEVBQUM7QUFMWSw2REFBd0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMxQ3JDLHVDQUFnQztBQUVoQztLQUErQiw2QkFBSztLQUNsQyxtQkFBMkIsY0FBNkI7U0FBeEQsWUFDRSxrQkFBTSxjQUFjLENBQUMsU0FFdEI7U0FIMEIsb0JBQWMsR0FBZCxjQUFjLENBQWU7U0FFdEQsY0FBYyxDQUFDLDhCQUE4QixDQUFDLEtBQUksQ0FBQyxDQUFDOztLQUN0RCxDQUFDO0tBRUQsc0JBQVcsaUNBQVU7Y0FBckI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUM7U0FDeEMsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyw4QkFBTztjQUFsQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQztTQUNyQyxDQUFDOzs7UUFBQTtLQUNILGdCQUFDO0FBQUQsRUFBQyxDQWI4QixhQUFLLEdBYW5DO0FBYlksK0JBQVM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNIdEIsMkNBQTJEO0FBSTNEO0tBQTJCLHlCQUFvQjtLQUM3QyxlQUEyQixVQUFxQjtTQUFoRCxZQUNFLGlCQUFPLFNBQ1I7U0FGMEIsZ0JBQVUsR0FBVixVQUFVLENBQVc7O0tBRWhELENBQUM7S0FFRCxzQkFBVyx1QkFBSTtjQUFmO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1NBQzlCLENBQUM7OztRQUFBO0tBRUQsc0JBQVcsNEJBQVM7Y0FBcEI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUM7U0FDbkMsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyx1QkFBSTtjQUFmO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1NBQzlCLENBQUM7OztRQUFBO0tBRU0sa0NBQWtCLEdBQXpCLFVBQTBCLGFBQXFCO1NBQzdDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztLQUNqRSxDQUFDO0tBRU0sa0NBQWtCLEdBQXpCO1NBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDbEQsQ0FBQztLQUNILFlBQUM7QUFBRCxFQUFDLENBeEIwQixpQ0FBb0IsR0F3QjlDO0FBeEJZLHVCQUFLOzs7Ozs7Ozs7QUNKbEI7Ozs7SUFJRztBQUNIO0tBQ0UsMEJBQTJCLFVBQThCO1NBQTlCLGVBQVUsR0FBVixVQUFVLENBQW9CO0tBQUksQ0FBQztLQUU5RCxzQkFBVyx1Q0FBUztjQUFwQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1NBQ3pCLENBQUM7OztRQUFBO0tBQ0gsdUJBQUM7QUFBRCxFQUFDO0FBTlksNkNBQWdCOzs7Ozs7Ozs7QUNKN0IsMkNBQXFGO0FBRXJGOzs7O0lBSUc7QUFDSDtLQVNFLHFCQUFtQixnQkFBa0M7U0FDbkQsSUFBSSxDQUFDLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUM7U0FDL0MsSUFBSSxDQUFDLFFBQVEsR0FBRywyQ0FBWSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDakYsSUFBSSxDQUFDLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUM7U0FDaEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUM7U0FDNUMsSUFBSSxDQUFDLEtBQUssR0FBRywyQ0FBWSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDeEUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLGVBQWUsQ0FBQztTQUN6RCxJQUFJLENBQUMsZUFBZSxHQUFHLGdCQUFnQixDQUFDLGNBQWMsQ0FBQztLQUN6RCxDQUFDO0tBRUQsc0JBQVcsbUNBQVU7Y0FBckI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUMxQixDQUFDOzs7UUFBQTtLQUVELHNCQUFXLGdDQUFPO2NBQWxCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7U0FDdkIsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyxpQ0FBUTtjQUFuQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQ3hCLENBQUM7OztRQUFBO0tBRUQsc0JBQVcsK0JBQU07Y0FBakI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUN0QixDQUFDOzs7UUFBQTtLQUVELHNCQUFXLDZCQUFJO2NBQWY7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUNwQixDQUFDOzs7UUFBQTtLQUVELHNCQUFXLHdDQUFlO2NBQTFCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztTQUMvQixDQUFDOzs7UUFBQTtLQUVELHNCQUFXLHVDQUFjO2NBQXpCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7U0FDOUIsQ0FBQzs7O1FBQUE7S0FDSCxrQkFBQztBQUFELEVBQUM7QUE5Q1ksbUNBQVc7Ozs7Ozs7OztBQ0x4Qjs7SUFFRztBQUNIO0tBQ0Usa0JBQTJCLFlBQTBCO1NBQTFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO0tBQUksQ0FBQztLQUVuRCx3QkFBSyxHQUFaLFVBQWEsR0FBVztTQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUMvQixDQUFDO0tBRU0sc0JBQUcsR0FBVixVQUFXLEdBQVc7U0FDcEIsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ3BDLENBQUM7S0FFTSx5QkFBTSxHQUFiO1NBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7S0FDcEMsQ0FBQztLQUVELHNCQUFXLGdDQUFVO2NBQXJCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDO1NBQ3RDLENBQUM7OztRQUFBO0tBRU0sNEJBQVMsR0FBaEI7U0FDRSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsQ0FBQztLQUN2QyxDQUFDO0tBRU0sc0JBQUcsR0FBVixVQUFXLEdBQVcsRUFBRSxLQUFhO1NBQ25DLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztLQUNwQyxDQUFDO0tBQ0gsZUFBQztBQUFELEVBQUM7QUExQlksNkJBQVE7Ozs7Ozs7OztBQ1ByQiwyQ0FBeUQ7QUFFekQsMkRBQTZFO0FBQzdFLHFEQUFrRTtBQUVsRSxtQ0FBeUMsVUFBaUM7S0FDeEUsK0JBQWtCLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLHFEQUF5QixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7S0FDdkYsK0JBQWtCLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLHlDQUFtQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDbkYsRUFBQztBQUhELDZEQUdDOzs7Ozs7Ozs7QUNURCxzREFBbUc7QUFLbkc7S0FDRSxtQ0FBMkIsVUFBaUM7U0FBakMsZUFBVSxHQUFWLFVBQVUsQ0FBdUI7S0FBSSxDQUFDO0tBRWpFLHNCQUFXLGtEQUFXO2NBQXRCO2FBQ0UsTUFBTSxxREFBeUM7U0FDakQsQ0FBQzs7O1FBQUE7S0FFTSxpRUFBNkIsR0FBcEM7U0FDRSxnR0FBZ0c7U0FDaEcsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLDhCQUFNLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBcUIsa0JBQVE7YUFDMUYsK0JBQStCO2FBRS9CLElBQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUE0QixDQUFDO2FBQ3JELE1BQU0sQ0FBQyxNQUFNLENBQUM7U0FDaEIsQ0FBQyxDQUFDLENBQUM7S0FDTCxDQUFDO0tBQ0gsZ0NBQUM7QUFBRCxFQUFDO0FBaEJZLCtEQUF5Qjs7Ozs7Ozs7O0FDTHRDLHNEQU13QztBQUt4QztLQUNFLDZCQUEyQixVQUFpQztTQUFqQyxlQUFVLEdBQVYsVUFBVSxDQUF1QjtLQUFJLENBQUM7S0FFakUsc0JBQVcsNENBQVc7Y0FBdEI7YUFDRSxNQUFNLHlDQUFtQztTQUMzQyxDQUFDOzs7UUFBQTtLQUVNLCtDQUFpQixHQUF4QixVQUF5QixRQUE0QjtTQUNuRCxJQUFNLFVBQVUsYUFBdUIsR0FBQyxtQ0FBVyxDQUFDLGNBQWMsSUFBRyxRQUFRLEtBQUMsQ0FBQztTQUUvRSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsOEJBQU0sQ0FBQyxpQkFBaUIsRUFBRSxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQXFCLGVBQUs7YUFDakcsSUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQTJCLENBQUM7YUFFakQsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztpQkFDdEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO2FBQ3JELENBQUM7YUFFRCxNQUFNLEVBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQ2hDLENBQUMsQ0FBQyxDQUFDOztLQUNMLENBQUM7S0FDSCwwQkFBQztBQUFELEVBQUM7QUFwQlksbURBQW1COzs7Ozs7Ozs7QUNQaEM7O0lBRUc7QUFDSDtLQWdCRSw4REFBOEQ7S0FDOUQsdUJBQW9CLGFBQXFCO1NBQ3ZDLElBQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQUMsSUFBSSxlQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFmLENBQWUsQ0FBQyxDQUFDO1NBQ2pFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixHQUFHLGFBQWEsQ0FBQyxDQUFDO1NBQzlELENBQUM7U0FFRCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN2QixDQUFDO0tBbEJELHNCQUFrQix5QkFBUTtTQUgxQjs7WUFFRztjQUNIO2FBQ0UsTUFBTSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUM7U0FDakMsQ0FBQzs7O1FBQUE7S0FrQkQsc0JBQVcsZ0NBQUs7Y0FBaEI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUNyQixDQUFDOzs7UUFBQTtLQUVELHNCQUFXLGdDQUFLO2NBQWhCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7U0FDckIsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyw4QkFBRztjQUFkO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDbkIsQ0FBQzs7O1FBQUE7S0FwQ0QsMEdBQTBHO0tBQzNGLHVCQUFTLEdBQWtCLElBQUksYUFBYSxDQUFDLFNBQXdCLENBQUMsQ0FBQztLQW9DeEYsb0JBQUM7RUFBQTtBQXZDWSx1Q0FBYTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1AxQix3Q0FBMkQ7QUFDM0Qsc0RBQThHO0FBQzlHLDJDQUFrRjtBQUVsRixpREFBcUQ7QUFDckQsMkNBQXlDO0FBQ3pDLDJDQUF3QztBQUN4QywrQ0FBZ0Q7QUFDaEQsK0NBQWdEO0FBRWhEO0tBQW1DLGlDQUFTO0tBSTFDLHVCQUEyQixLQUF5QixFQUFVLFVBQXFCO1NBQW5GLFlBQ0Usa0JBQU0sSUFBSSw2QkFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxpQkFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUN6RztTQUYwQixXQUFLLEdBQUwsS0FBSyxDQUFvQjtTQUFVLGdCQUFVLEdBQVYsVUFBVSxDQUFXOztLQUVuRixDQUFDO0tBRUQsc0JBQVcscUNBQVU7Y0FBckI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUMxQixDQUFDOzs7UUFBQTtLQUVELHNCQUFXLGtDQUFPO2NBQWxCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7U0FDdkIsQ0FBQzs7O1FBQUE7S0FFTSxzREFBOEIsR0FBckMsVUFBc0MsU0FBNkI7U0FDakUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLEtBQUssRUFBYSxDQUFDO1NBQzFDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxLQUFLLEVBQTRCLENBQUM7U0FFdEQsOERBQThEO1NBQzlELEdBQUcsQ0FBQyxDQUFlLFVBQWdCLEVBQWhCLFNBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFoQixjQUFnQixFQUFoQixJQUFnQjthQUE5QixJQUFNLElBQUk7YUFDYixJQUFJLFNBQVMsR0FBMEIsU0FBUyxDQUFDO2FBRWpELElBQU0sUUFBUSxHQUFHLElBQUksaUJBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUVuRCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLDJDQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7aUJBQ3BELElBQU0sU0FBUyxHQUFHLElBQUksNkJBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2lCQUN2RixJQUFNLEtBQUssR0FBYTtxQkFDdEIsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJO3FCQUNwQixTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJO3FCQUMxQixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVO3FCQUN0QyxlQUFlLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlO3FCQUNoRCxZQUFZLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZO2tCQUMzQyxDQUFDO2lCQUVGLElBQU0sYUFBYSxHQUFHLElBQUksNkJBQWEsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2lCQUNyRSxTQUFTLEdBQUcsSUFBSSxxQkFBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO2lCQUN6QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUNuQyxDQUFDO2FBRUQsSUFBTSxTQUFTLEdBQUcsSUFBSSxrQkFBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBRTVDLElBQU0sZUFBZSxHQUFHLElBQUksaUNBQWUsQ0FDekMsU0FBUyxFQUNULDJDQUE4QixDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQ3pFLFNBQVMsRUFDVCxRQUFRLEVBQ1IsU0FBUyxDQUNWLENBQUM7YUFFRixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztVQUNyQztLQUNILENBQUM7S0FDSCxvQkFBQztBQUFELEVBQUMsQ0F0RGtDLHFCQUFTLEdBc0QzQztBQXREWSx1Q0FBYTs7Ozs7Ozs7QWxDVjFCOzs7O0lBSUc7Ozs7O0FBTUgsbUNBQXdCOzs7Ozs7Ozs7QW1DUnhCOzs7SUFHRztBQUNIO0tBQ0UseUJBQ1UsVUFBOEIsRUFDOUIsS0FBbUMsRUFDbkMsU0FBeUIsRUFDekIsS0FBb0IsRUFDcEIsVUFBMEM7U0FKMUMsZUFBVSxHQUFWLFVBQVUsQ0FBb0I7U0FDOUIsVUFBSyxHQUFMLEtBQUssQ0FBOEI7U0FDbkMsY0FBUyxHQUFULFNBQVMsQ0FBZ0I7U0FDekIsVUFBSyxHQUFMLEtBQUssQ0FBZTtTQUNwQixlQUFVLEdBQVYsVUFBVSxDQUFnQztLQUNoRCxDQUFDO0tBRUwsc0JBQVcsc0NBQVM7Y0FBcEI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztTQUN6QixDQUFDOzs7UUFBQTtLQUVELHNCQUFXLGlDQUFJO2NBQWY7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUNwQixDQUFDOzs7UUFBQTtLQUVELHNCQUFXLHFDQUFRO2NBQW5CO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7U0FDeEIsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyxpQ0FBSTtjQUFmO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDcEIsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyxzQ0FBUztjQUFwQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1NBQ3pCLENBQUM7OztRQUFBO0tBQ0gsc0JBQUM7QUFBRCxFQUFDO0FBNUJZLDJDQUFlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDSjVCLHVDQUFnQztBQUloQztLQUErQiw2QkFBSztLQUNsQyxtQkFBMkIsY0FBNkI7U0FBeEQsWUFDRSxrQkFBTSxjQUFjLENBQUMsU0FJdEI7U0FMMEIsb0JBQWMsR0FBZCxjQUFjLENBQWU7U0FHdEQsOEZBQThGO1NBQzlGLEtBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsS0FBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQUMsSUFBSSxZQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUF2QixDQUF1QixDQUFDLENBQUM7O0tBQ25GLENBQUM7S0FFRCxzQkFBVyxzQ0FBZTtjQUExQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQztTQUM3QyxDQUFDOzs7UUFBQTtLQUVNLG9DQUFnQixHQUF2QixVQUNFLFNBQWlCLEVBQUUsTUFBcUIsRUFBRSxVQUFxQyxFQUFFLE9BQStCO1NBQzlHLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQ3hGLENBQUM7S0FFTSx5Q0FBcUIsR0FBNUIsVUFBNkIsU0FBaUIsRUFBRSxhQUEwQztTQUN4RixNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDLENBQUM7S0FDN0UsQ0FBQztLQUVNLG9DQUFnQixHQUF2QixVQUF3QixTQUFpQjtTQUN2QyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUN6RCxDQUFDO0tBRU0sMkNBQXVCLEdBQTlCO1NBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0tBQ25ELENBQUM7S0FFTSx1Q0FBbUIsR0FBMUI7U0FDRSxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0tBQ25ELENBQUM7S0FFTSxxQ0FBaUIsR0FBeEI7U0FDRSxNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7S0FDbkQsQ0FBQztLQUVNLG1DQUFlLEdBQXRCO1NBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLENBQUM7S0FDL0MsQ0FBQztLQUVNLHlDQUFxQixHQUE1QjtTQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLHFCQUFxQixFQUFFLENBQUM7S0FDckQsQ0FBQztLQUVNLDRDQUF3QixHQUEvQjtTQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLHdCQUF3QixFQUFFLENBQUM7S0FDeEQsQ0FBQztLQUVNLHVDQUFtQixHQUExQixVQUEyQixPQUF1QztTQUNoRSxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUMxRCxDQUFDO0tBRU0sMENBQXNCLEdBQTdCLFVBQThCLE9BQTBDO1NBQ3RFLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQzdELENBQUM7S0FFTSwyQ0FBdUIsR0FBOUI7U0FDRSxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO0tBQ3ZELENBQUM7S0FFTSx3Q0FBb0IsR0FBM0IsVUFBNEIsU0FBbUMsRUFBRSxVQUF3QztTQUN2RyxNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7S0FDbkQsQ0FBQztLQUVNLDJDQUF1QixHQUE5QixVQUErQixVQUE2QyxFQUM3QyxtQkFBaUQ7U0FDOUUsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsdUJBQXVCLENBQUMsVUFBVSxFQUFFLG1CQUFtQixDQUFDLENBQUM7S0FDdEYsQ0FBQztLQUVNLHdDQUFvQixHQUEzQixVQUE0QixVQUFvQyxFQUNwQyxtQkFBaUQ7U0FDM0UsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUMsVUFBVSxFQUFFLG1CQUFtQixDQUFDLENBQUM7S0FDbkYsQ0FBQztLQUNILGdCQUFDO0FBQUQsRUFBQyxDQTFFOEIsYUFBSyxHQTBFbkM7QUExRVksK0JBQVM7Ozs7Ozs7OztBQ0h0QiwyQ0FBMEY7QUFJMUY7S0FDRSxtQkFBMkIsY0FBNkI7U0FBN0IsbUJBQWMsR0FBZCxjQUFjLENBQWU7S0FDeEQsQ0FBQztLQUVELHNCQUFXLDJCQUFJO2NBQWY7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7U0FDbEMsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyxnQ0FBUztjQUFwQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQztTQUN2QyxDQUFDOzs7UUFBQTtLQUVELHNCQUFXLGdDQUFTO2NBQXBCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDO1NBQ3ZDLENBQUM7OztRQUFBO0tBRUQsc0JBQVcsMkJBQUk7Y0FBZjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQztTQUN2QyxDQUFDOzs7UUFBQTtLQUVNLHNDQUFrQixHQUF6QixVQUEwQixhQUFxQixFQUFFLEtBQXFCO1NBQ3BFLElBQU0sT0FBTyxHQUFHLCtCQUFrQixDQUFDLFFBQVEsQ0FBQyxVQUFVLHVDQUE0QyxDQUFDO1NBQ25HLE1BQU0sQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQ2hFLENBQUM7S0FFTSxzQ0FBa0IsR0FBekIsVUFBMEIsS0FBcUI7U0FDN0MsSUFBTSxPQUFPLEdBQUcsK0JBQWtCLENBQUMsUUFBUSxDQUFDLFVBQVUsdUNBQTRDLENBQUM7U0FDbkcsTUFBTSxDQUFDLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQ25FLENBQUM7S0FDSCxnQkFBQztBQUFELEVBQUM7QUE3QlksK0JBQVM7Ozs7Ozs7OztBQ1B0Qix1REFBaUU7QUFHakU7S0FDRSx1QkFDVSxLQUFhLEVBQ2IsVUFBcUIsRUFDckIsVUFBZ0I7U0FGaEIsVUFBSyxHQUFMLEtBQUssQ0FBUTtTQUNiLGVBQVUsR0FBVixVQUFVLENBQVc7U0FDckIsZUFBVSxHQUFWLFVBQVUsQ0FBTTtLQUN0QixDQUFDO0tBRUwsc0JBQVcsK0JBQUk7Y0FBZjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ3BCLENBQUM7OztRQUFBO0tBRUQsc0JBQVcsb0NBQVM7Y0FBcEI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztTQUN6QixDQUFDOzs7UUFBQTtLQUVELHNCQUFXLG9DQUFTO2NBQXBCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDekIsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyxvQ0FBUztjQUFwQjthQUNFLE1BQU0sQ0FBQztpQkFDTCxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUk7aUJBQ3BCLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxLQUFLLGlDQUFTLENBQUMsU0FBUztpQkFDbkQsaUJBQWlCO2NBQ2xCLENBQUM7U0FDSixDQUFDOzs7UUFBQTtLQUNILG9CQUFDO0FBQUQsRUFBQztBQTFCWSx1Q0FBYTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0gxQix3Q0FBMkQ7QUFDM0Qsc0RBTXdDO0FBRXhDLDJDQWE2QjtBQUU3Qiw0Q0FBMkM7QUFHM0MsZ0RBQWtEO0FBQ2xELDJDQUF3QztBQUd4QyxLQUFNLGlCQUFpQixHQUFHLFVBQVMsQ0FBVyxFQUFFLENBQVc7S0FDekQsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDO1NBQ1gsQ0FBQyxDQUFDLFNBQVMsS0FBSyxDQUFDLENBQUMsU0FBUztTQUMzQixDQUFDLENBQUMsU0FBUyxLQUFLLENBQUMsQ0FBQyxTQUFTO1NBQzNCLENBQUMsQ0FBQyxVQUFVLEtBQUssQ0FBQyxDQUFDLFVBQVU7U0FDN0IsQ0FBQyxDQUFDLFlBQVksS0FBSyxDQUFDLENBQUMsWUFBWTtTQUNqQyxDQUFDLENBQUMsZUFBZSxLQUFLLENBQUMsQ0FBQyxlQUFlLENBQUM7QUFDNUMsRUFBQyxDQUFDO0FBRUY7S0FBbUMsaUNBQVM7S0FDMUMsdUJBQW1CLGFBQTRCLEVBQ3BCLFNBQW1CLEVBQ25CLGdCQUFvQztTQUYvRCxZQUdFLGtCQUFNLGFBQWEsQ0FBQyxTQUNyQjtTQUgwQixlQUFTLEdBQVQsU0FBUyxDQUFVO1NBQ25CLHNCQUFnQixHQUFoQixnQkFBZ0IsQ0FBb0I7O0tBRS9ELENBQUM7S0FFRCxzQkFBVywwQ0FBZTtjQUExQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7U0FDL0IsQ0FBQzs7O1FBQUE7S0FFRDs7Ozs7OztRQU9HO0tBQ0ksd0NBQWdCLEdBQXZCLFVBQXdCLFNBQW9CO1NBQTVDLGlCQWtDQztTQWpDQyxJQUFNLE9BQU8sR0FBRyxJQUFJLEtBQUssRUFBc0IsQ0FBQztTQUNoRCxJQUFJLG1CQUF3QyxDQUFDO1NBRTdDLElBQUksQ0FBQzthQUNILG1CQUFtQixHQUFHLCtCQUFrQixDQUFDLFFBQVEsQ0FBQyxVQUFVLDJDQUFnRCxDQUFDO1NBQy9HLENBQUM7U0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ1gsd0RBQXdEO2FBQ3hELE1BQU0sQ0FBQyxPQUFPLENBQUM7U0FDakIsQ0FBQztTQUVELDRFQUE0RTtTQUM1RSxJQUFNLFVBQVUsR0FBRyxJQUFJLG1DQUFzQixDQUFxQixRQUFRLENBQUMsZ0JBQWdCLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUNsSCxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsc0NBQWMsQ0FBQyxvQkFBb0IsRUFBRSxVQUFDLEtBQUs7YUFDN0UsSUFBTSxRQUFRLEdBQUcsS0FBaUIsQ0FBQzthQUNuQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLEtBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNwRCxDQUFDLEVBQUUsVUFBQyxHQUFhO2FBQ2YsVUFBVSxDQUFDLFlBQVksQ0FBQyxjQUFNLFdBQUksK0JBQWtCLENBQUMsU0FBUyxDQUFDLEVBQWpDLENBQWlDLENBQUMsQ0FBQztTQUNuRSxDQUFDLENBQUMsQ0FBQztTQUVILElBQU0sV0FBVyxHQUFHLElBQUksbUNBQXNCLENBQXFCLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUM1RyxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsc0NBQWMsQ0FBQyxhQUFhLEVBQUUsVUFBQyxLQUFLO2FBQ3RFLElBQU0sbUJBQW1CLEdBQUcsS0FBb0IsQ0FBQzthQUNqRCxNQUFNLENBQUMsS0FBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEtBQUssbUJBQW1CLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztTQUM1RSxDQUFDLEVBQUUsVUFBQyxLQUFrQjthQUNwQixXQUFXLENBQUMsWUFBWSxDQUFDLGNBQU0sV0FBSSwrQkFBa0IsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFsRCxDQUFrRCxDQUFDLENBQUM7U0FDckYsQ0FBQyxDQUFDLENBQUM7U0FFSCxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ3pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FFMUIsMkJBQTJCO1NBRTNCLE1BQU0sQ0FBQyxPQUFPLENBQUM7S0FDakIsQ0FBQztLQUVELHNCQUFXLG1DQUFRO2NBQW5CO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7U0FDeEIsQ0FBQzs7O1FBQUE7S0FFTSx3Q0FBZ0IsR0FBdkIsVUFDRSxTQUFpQixFQUFFLE1BQXFCLEVBQUUsVUFBcUMsRUFBRSxPQUErQjtTQUM5RyxJQUFNLE9BQU8sR0FBRywrQkFBa0IsQ0FBQyxRQUFRLENBQUMsVUFBVSwrQkFBb0MsQ0FBQztTQUMzRixNQUFNLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDekYsQ0FBQztLQUVJLDZDQUFxQixHQUE1QixVQUE2QixTQUFpQixFQUFFLGFBQTBDO1NBQ3hGLElBQU0sT0FBTyxHQUFHLCtCQUFrQixDQUFDLFFBQVEsQ0FBQyxVQUFVLCtCQUFvQyxDQUFDO1NBQzNGLE1BQU0sQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsYUFBYSxDQUFDLENBQUM7S0FDaEYsQ0FBQztLQUVNLHdDQUFnQixHQUF2QixVQUF3QixTQUFpQjtTQUN2QyxJQUFNLE9BQU8sR0FBRywrQkFBa0IsQ0FBQyxRQUFRLENBQUMsVUFBVSwrQkFBb0MsQ0FBQztTQUMzRixNQUFNLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7S0FDNUQsQ0FBQztLQUVNLDJDQUFtQixHQUExQjtTQUFBLGlCQXNCQztTQXJCQyxJQUFNLE9BQU8sR0FBRywrQkFBa0IsQ0FBQyxRQUFRLENBQUMsVUFBVSwrQ0FBbUQsQ0FBQztTQUUxRyxNQUFNLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLENBQUMsSUFBSSxDQUE2QixnQkFBTTthQUMxRSxJQUFNLFVBQVUsR0FBZSxNQUFvQixDQUFDO2FBQ3BELElBQU0sdUJBQXVCLEdBQTRCLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFFdEcsSUFBSSxXQUFXLEdBQStCLEVBQUUsQ0FBQzthQUVqRCwyRkFBMkY7YUFDM0YsSUFBSSxTQUFTLEdBQVcsdUJBQXVCLENBQUMsaUJBQWlCLENBQUM7YUFDbEUsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBRTFGLDhEQUE4RDthQUM5RCxHQUFHLENBQUMsQ0FBb0IsVUFBZ0QsRUFBaEQsNEJBQXVCLENBQUMsd0JBQXdCLEVBQWhELGNBQWdELEVBQWhELElBQWdEO2lCQUFuRSxJQUFJLFdBQVc7aUJBQ2xCLEVBQUUsQ0FBQyxDQUFDLFdBQVcsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO3FCQUM5QixXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ2hHLENBQUM7Y0FDRjthQUVELE1BQU0sQ0FBQyxXQUFXLENBQUM7U0FDckIsQ0FBQyxDQUFDLENBQUM7S0FDTCxDQUFDO0tBRU0sdUNBQWUsR0FBdEI7U0FDRSxJQUFNLE9BQU8sR0FBRywrQkFBa0IsQ0FBQyxRQUFRLENBQUMsVUFBVSwrQkFBb0MsQ0FBQztTQUMzRixNQUFNLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDaEQsQ0FBQztLQUVNLDZDQUFxQixHQUE1QjtTQUNFLElBQU0sT0FBTyxHQUFHLCtCQUFrQixDQUFDLFFBQVEsQ0FBQyxVQUFVLGtDQUFzQyxDQUFDO1NBQzdGLE1BQU0sQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQ3RELENBQUM7S0FFTSxnREFBd0IsR0FBL0I7U0FDRSxJQUFNLE9BQU8sR0FBRywrQkFBa0IsQ0FBQyxRQUFRLENBQUMsVUFBVSxrQ0FBc0MsQ0FBQztTQUM3RixNQUFNLENBQUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUN6RCxDQUFDO0tBRU0sMkNBQW1CLEdBQTFCLFVBQTJCLE9BQXVDO1NBQ2hFLElBQU0sT0FBTyxHQUFHLCtCQUFrQixDQUFDLFFBQVEsQ0FBQyxVQUFVLGtDQUFzQyxDQUFDO1NBQzdGLE9BQU8sR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDO1NBRXhCLE1BQU0sQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQ25DLElBQUksQ0FBQyxRQUFRLEVBQUUsd0JBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0tBQ25HLENBQUM7S0FFSSw4Q0FBc0IsR0FBN0IsVUFBOEIsT0FBMEM7U0FDdEUsSUFBTSxPQUFPLEdBQUcsK0JBQWtCLENBQUMsUUFBUSxDQUFDLFVBQVUsa0NBQXNDLENBQUM7U0FDN0YsT0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7U0FDeEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FDbkMsSUFBSSxDQUFDLFFBQVEsRUFDYix3QkFBVyxDQUFDLFVBQVUsRUFDdEIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQ3ZCLENBQUMsQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUN6QixDQUFDLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUMzQixPQUFPLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDO0tBQzFCLENBQUM7S0FFTSwrQ0FBdUIsR0FBOUI7U0FDRSxJQUFNLE9BQU8sR0FBRywrQkFBa0IsQ0FBQyxRQUFRLENBQUMsVUFBVSxxQ0FBMEMsQ0FBQztTQUNqRyxNQUFNLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUN4RCxDQUFDO0tBRU0sK0NBQXVCLEdBQTlCLFVBQStCLFVBQTZDLEVBQzdDLG1CQUFpRDtTQUM5RSxJQUFNLE9BQU8sR0FBRywrQkFBa0IsQ0FBQyxRQUFRLENBQUMsVUFBVSxxQ0FBMEMsQ0FBQztTQUNqRyxNQUFNLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixDQUFDLENBQUM7S0FDekYsQ0FBQztLQUVNLDRDQUFvQixHQUEzQixVQUE0QixVQUFvQyxFQUNwQyxtQkFBaUQ7U0FDM0UsSUFBTSxPQUFPLEdBQUcsK0JBQWtCLENBQUMsUUFBUSxDQUFDLFVBQVUscUNBQTBDLENBQUM7U0FDakcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0tBQ3RGLENBQUM7S0FFTyw0Q0FBb0IsR0FBNUIsVUFBNkIsRUFBVSxFQUFFLGNBQThCO1NBQ3JFLElBQU0sY0FBYyxHQUFHLElBQUksK0JBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUMxRCxJQUFNLFVBQVUsR0FBRyxJQUFJLHVCQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDbEQsTUFBTSxDQUFDLFVBQVUsQ0FBQztLQUNwQixDQUFDO0tBQ0gsb0JBQUM7QUFBRCxFQUFDLENBNUprQyxxQkFBUyxHQTRKM0M7QUE1SlksdUNBQWE7Ozs7Ozs7OztBQ3BDMUI7S0FDRSxvQkFBMkIsZUFBK0I7U0FBL0Isb0JBQWUsR0FBZixlQUFlLENBQWdCO0tBQUksQ0FBQztLQUUvRCxzQkFBVyw0QkFBSTtjQUFmO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDO1NBQ25DLENBQUM7OztRQUFBO0tBRUQsc0JBQVcsMEJBQUU7Y0FBYjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztTQUNqQyxDQUFDOzs7UUFBQTtLQUVELHNCQUFXLDhCQUFNO2NBQWpCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDO1NBQ3JDLENBQUM7OztRQUFBO0tBRUQsc0JBQVcsMkNBQW1CO2NBQTlCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsbUJBQW1CLENBQUM7U0FDbEQsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyx5Q0FBaUI7Y0FBNUI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQztTQUNoRCxDQUFDOzs7UUFBQTtLQUVELHNCQUFXLGlDQUFTO2NBQXBCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDO1NBQ3hDLENBQUM7OztRQUFBO0tBRU0saUNBQVksR0FBbkI7U0FDRSxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztLQUM3QyxDQUFDO0tBRU0sc0NBQWlCLEdBQXhCLFVBQXlCLE9BQWtEO1NBRXpFLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixFQUFFLENBQUM7S0FDbEQsQ0FBQztLQUNILGlCQUFDO0FBQUQsRUFBQztBQW5DWSxpQ0FBVTs7Ozs7Ozs7O0FDRnZCLDJDQUEwRjtBQUUxRiwyQ0FBd0M7QUFFeEMsdUNBQWlDO0FBRWpDO0tBR0Usd0JBQTJCLGVBQTRDO1NBQXZFLGlCQUtFO1NBTHlCLG9CQUFlLEdBQWYsZUFBZSxDQUE2QjtTQUNyRSxJQUFJLENBQUMsT0FBTyxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLG9CQUFVO2FBQ2xELElBQU0sU0FBUyxHQUFHLElBQUkscUJBQVMsQ0FBQyxVQUFVLEVBQUUsS0FBSSxDQUFDLENBQUM7YUFDbEQsTUFBTSxDQUFDLElBQUksYUFBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQzlCLENBQUMsQ0FBQyxDQUFDO0tBQ0osQ0FBQztLQUVGLHNCQUFXLGdDQUFJO2NBQWY7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUM7U0FDbkMsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyw4QkFBRTtjQUFiO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1NBQ2pDLENBQUM7OztRQUFBO0tBRUQsc0JBQVcsNkNBQWlCO2NBQTVCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsaUJBQWlCLENBQUM7U0FDaEQsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyxrQ0FBTTtjQUFqQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1NBQ3RCLENBQUM7OztRQUFBO0tBRUQsc0JBQVcscUNBQVM7Y0FBcEI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUM7U0FDeEMsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVywrQ0FBbUI7Y0FBOUI7YUFDRSxNQUFNLElBQUksS0FBSyxDQUFDLHlEQUF5RCxDQUFDLENBQUM7U0FDN0UsQ0FBQzs7O1FBQUE7S0FFTSxxQ0FBWSxHQUFuQjtTQUNFLElBQU0saUJBQWlCLEdBQUcsK0JBQWtCLENBQUMsUUFBUSxDQUFDLFVBQVUsK0NBQy9CLENBQUM7U0FFbEMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0tBQ2pFLENBQUM7S0FFTSwwQ0FBaUIsR0FBeEIsVUFBeUIsT0FBa0Q7U0FFekUsTUFBTSxJQUFJLEtBQUssQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO0tBQzNFLENBQUM7S0FDSCxxQkFBQztBQUFELEVBQUM7QUE3Q1kseUNBQWM7Ozs7Ozs7OztBQ04zQiwyQ0FBcUU7QUFFckU7S0FDRSxtQkFBMkIsVUFBa0MsRUFDbEMsaUJBQXNDO1NBRHRDLGVBQVUsR0FBVixVQUFVLENBQXdCO1NBQ2xDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBcUI7S0FBSyxDQUFDO0tBRXZFLHNCQUFXLDJCQUFJO2NBQWY7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7U0FDOUIsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyx5QkFBRTtjQUFiO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1NBQzVCLENBQUM7OztRQUFBO0tBRUQsc0JBQVcsa0NBQVc7Y0FBdEI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUM7U0FDckMsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyxrQ0FBVztjQUF0QjthQUNFLE1BQU0sQ0FBQywyQ0FBOEIsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUNsRyxDQUFDOzs7UUFBQTtLQUVELHNCQUFXLGlDQUFVO2NBQXJCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztTQUNoQyxDQUFDOzs7UUFBQTtLQUVELHNCQUFXLDJCQUFJO2NBQWY7YUFDRSxNQUFNLENBQUMsMkNBQThCLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3BGLENBQUM7OztRQUFBO0tBRUQsc0JBQVcsK0JBQVE7Y0FBbkI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7U0FDbEMsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyxrQ0FBVztjQUF0QjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQztTQUNyQyxDQUFDOzs7UUFBQTtLQUVELHNCQUFXLHdDQUFpQjtjQUE1QjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDO1NBQzNDLENBQUM7OztRQUFBO0tBRUQsc0JBQVcsc0NBQWU7Y0FBMUI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUM7U0FDekMsQ0FBQzs7O1FBQUE7S0FFTSwyQ0FBdUIsR0FBOUI7U0FDRSxNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUM7S0FDL0UsQ0FBQztLQUNILGdCQUFDO0FBQUQsRUFBQztBQS9DWSwrQkFBUzs7Ozs7Ozs7O0FDQXRCO0tBQ0UsZUFBMkIsVUFBcUI7U0FBckIsZUFBVSxHQUFWLFVBQVUsQ0FBVztLQUFJLENBQUM7S0FFckQsc0JBQVcsdUJBQUk7Y0FBZjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztTQUM5QixDQUFDOzs7UUFBQTtLQUVELHNCQUFXLHFCQUFFO2NBQWI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7U0FDNUIsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyw4QkFBVztjQUF0QjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQztTQUNyQyxDQUFDOzs7UUFBQTtLQUVELHNCQUFXLDhCQUFXO2NBQXRCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDO1NBQ3JDLENBQUM7OztRQUFBO0tBRUQsc0JBQVcsNkJBQVU7Y0FBckI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7U0FDcEMsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyx1QkFBSTtjQUFmO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1NBQzlCLENBQUM7OztRQUFBO0tBRUQsc0JBQVcsMkJBQVE7Y0FBbkI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7U0FDbEMsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyw4QkFBVztjQUF0QjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQztTQUNyQyxDQUFDOzs7UUFBQTtLQUVELHNCQUFXLG9DQUFpQjtjQUE1QjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDO1NBQzNDLENBQUM7OztRQUFBO0tBRUQsc0JBQVcsNkJBQVU7Y0FBckI7YUFDRSxNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7U0FDM0QsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyxrQ0FBZTtjQUExQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQztTQUN6QyxDQUFDOzs7UUFBQTtLQUVNLHVDQUF1QixHQUE5QjtTQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLHVCQUF1QixFQUFFLENBQUM7S0FDbkQsQ0FBQztLQUNILFlBQUM7QUFBRCxFQUFDO0FBbERZLHVCQUFLOzs7Ozs7Ozs7QUNIbEIsMkNBQXlEO0FBQ3pELDJDQUEyQztBQUszQztLQVFFLHNCQUFtQixZQUErQjtTQUpsRCx1RUFBdUU7U0FDdkUsb0ZBQW9GO1NBQzVFLG9CQUFlLEdBQVksS0FBSyxDQUFDO1NBR3ZDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztLQUN4QyxDQUFDO0tBRU0sNEJBQUssR0FBWixVQUFhLEdBQVc7U0FDdEIsaUJBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBRTlCLHNEQUFzRDtTQUN0RCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQy9CLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO2FBRWpDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2xDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1NBQzFCLENBQUM7S0FDSCxDQUFDO0tBRU0sMEJBQUcsR0FBVixVQUFXLEdBQVc7U0FDcEIsaUJBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQzlCLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDcEMsQ0FBQztLQUVNLDZCQUFNLEdBQWI7U0FDRSx5Q0FBeUM7U0FDekMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0tBQ2xELENBQUM7S0FFRCxzQkFBVyxvQ0FBVTtjQUFyQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1NBQzFCLENBQUM7OztRQUFBO0tBRU0sZ0NBQVMsR0FBaEI7U0FBQSxpQkFvQkM7U0FuQkMsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7U0FFakMscURBQXFEO1NBQ3JELEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7YUFDdEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQXFCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQ3BFLENBQUM7U0FFRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztTQUU1QixtREFBbUQ7U0FDbkQsSUFBTSxlQUFlLEdBQUcsK0JBQWtCLENBQUMsUUFBUSxDQUFDLFVBQVUseUNBQzFCLENBQUM7U0FFckMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQXFCLHFCQUFXO2FBQ2xHLEtBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO2FBQzdCLEtBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO2FBQ3pCLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSSxDQUFDLGdCQUFnQixFQUFFLFdBQVcsQ0FBQyxDQUFDO2FBQ2xELE1BQU0sQ0FBQyxXQUFXLENBQUM7U0FDckIsQ0FBQyxDQUFDLENBQUM7S0FDTCxDQUFDO0tBRU0sMEJBQUcsR0FBVixVQUFXLEdBQVcsRUFBRSxLQUFhO1NBQ25DLGlCQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLG9DQUFvQztTQUNuRSxpQkFBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxpQ0FBaUM7U0FDckUsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7U0FFakMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztTQUNuQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztLQUMxQixDQUFDO0tBRU8seUNBQWtCLEdBQTFCLFVBQTJCLFlBQStCO1NBQ3hELGlCQUFLLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxjQUFjLENBQUMsQ0FBQztTQUNoRCxpQkFBSyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLDZCQUE2QixDQUFDLENBQUM7U0FFOUUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFlBQVksQ0FBQyxjQUFjLENBQUM7U0FFcEQsNEJBQTRCO1NBQzVCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0tBQzNCLENBQUM7S0FFRDs7O1FBR0c7S0FDSyxnREFBeUIsR0FBakM7U0FDRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQzthQUN6QixNQUFNLElBQUksS0FBSyxDQUFDLDhEQUE4RCxDQUFDLENBQUM7U0FDbEYsQ0FBQztLQUNILENBQUM7S0FDSCxtQkFBQztBQUFELEVBQUM7QUF4RlkscUNBQVk7Ozs7Ozs7O0FqQ1B6Qjs7OztJQUlHOztBQUVILCtDQUFnRDtBQUF2QyxzREFBYTtBQUN0Qix1Q0FBZ0M7QUFBdkIsOEJBQUs7Ozs7Ozs7OztBa0NIZDs7SUFFRztBQUNIO0tBQ0UsZUFBMkIsU0FBb0I7U0FBcEIsY0FBUyxHQUFULFNBQVMsQ0FBVztTQUM3QyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztLQUM3QixDQUFDO0tBRUQsc0JBQVcsbUNBQWdCO2NBQTNCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUM7U0FDekMsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyw4QkFBVztjQUF0QjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQztTQUNwQyxDQUFDOzs7UUFBQTtLQUVELHNCQUFXLDJCQUFRO2NBQW5CO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO1NBQ2pDLENBQUM7OztRQUFBO0tBRUQsc0JBQVcscUJBQUU7Y0FBYjthQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQztTQUNsRCxDQUFDOzs7UUFBQTtLQUVNLCtCQUFlLEdBQXRCO1NBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLENBQUM7S0FDMUMsQ0FBQztLQUNILFlBQUM7QUFBRCxFQUFDO0FBeEJZLHVCQUFLIiwiZmlsZSI6IkB0YWJsZWF1L2FkZGluLWFwaS4wLjQuMC5qcyIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcInRhYmxlYXVcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1widGFibGVhdVwiXSA9IGZhY3RvcnkoKTtcbn0pKHRoaXMsIGZ1bmN0aW9uKCkge1xucmV0dXJuIFxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIHdlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvblxuICoqLyIsIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKVxuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuXG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRleHBvcnRzOiB7fSxcbiBcdFx0XHRpZDogbW9kdWxlSWQsXG4gXHRcdFx0bG9hZGVkOiBmYWxzZVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sb2FkZWQgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIi9kaXN0L1wiO1xuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogd2VicGFjay9ib290c3RyYXAgNDBmNTEyNDQ3YzY5YjBhODY3NjRcbiAqKi8iLCIvKipcclxuICogVGhpcyBpcyB5b3VyIG1haW4uIFRoaXMgaXMgd2hlcmUgeW91IHJlLWV4cG9ydCBldmVyeXRoaW5nIHlvdSB3YW50IHRvIGJlIHB1YmxpY2x5IGF2YWlsYWJsZS5cclxuICpcclxuICogVGhlIGJ1aWxkIGVuZm9yY2VzIHRoYXQgdGhlIGZpbGUgaGFzIHRoZSBzYW1lIG5hbWUgYXMgdGhlIGdsb2JhbCB2YXJpYWJsZSB0aGF0IGlzIGV4cG9ydGVkLlxyXG4gKi9cclxuXHJcbi8vIER1ZSB0byB0aGUgd2F5IHdlIGNvbmZpZ3VyZWQgd2VicGFjaywgd2Ugc2hvdWxkIGJlIGV4cG9ydGluZyB0aGluZ3Mgd2hpY2ggd2lsbCBiZSB1bmRlclxyXG4vLyBhIGdsb2JhbCB2YXJpYWJsZSBjYWxsZWQgXCJ0YWJsZWF1XCIuIEV4cG9ydCBldmVyeXRoaW5nIHdlIHdhbnQgdG8gYmUgdmlzaWJsZSB1bmRlciB0YWJsZWF1XHJcbi8vIGZyb20gdGhpcyBmaWxlLlxyXG5cclxuaW1wb3J0IHsgQWRkSW5JbXBsIH0gZnJvbSAnLi9JbnRlcm5hbC9BZGRJbkltcGwnO1xyXG5pbXBvcnQgeyBBZGRJbiB9IGZyb20gJy4vTmFtZXNwYWNlcy9BZGRJbic7XHJcblxyXG5jb25zdCBhZGRJbkltcGwgPSBuZXcgQWRkSW5JbXBsKCk7XHJcbmV4cG9ydCBjb25zdCBhZGRJbiA9IG5ldyBBZGRJbihhZGRJbkltcGwpO1xyXG5cclxuLy8gRXhwb3J0IEVudW1zXHJcbi8vIFRoZXNlIHNob3cgdXAgdW5kZXIgdGhlIHRhYmxlYXUgb2JqZWN0LiBJLmUuIHRhYmxlYXUuQWRkSW5Db250ZXh0LlNlcnZlclxyXG5leHBvcnQge1xyXG4gIEFkZEluQ29udGV4dCxcclxuICBBZGRJbk1vZGUsXHJcbiAgQW5hbHl0aWNzT2JqZWN0VHlwZSxcclxuICBDb2x1bW5UeXBlLFxyXG4gIERhc2hib2FyZE9iamVjdFR5cGUsXHJcbiAgRGF0YVR5cGUsXHJcbiAgRGF0ZVJhbmdlVHlwZSxcclxuICBEaWFsb2dFdmVudFR5cGUsXHJcbiAgRW5jb2RpbmdUeXBlLFxyXG4gIEVycm9yQ29kZXMsXHJcbiAgRmllbGRBZ2dyZWdhdGlvblR5cGUsXHJcbiAgRmllbGRSb2xlVHlwZSxcclxuICBGaWx0ZXJUeXBlLFxyXG4gIEZpbHRlclVwZGF0ZVR5cGUsXHJcbiAgRmlsdGVyTnVsbE9wdGlvbixcclxuICBNYXJrVHlwZSxcclxuICBQYXJhbWV0ZXJWYWx1ZVR5cGUsXHJcbiAgUGVyaW9kVHlwZSxcclxuICBRdWlja1RhYmxlQ2FsY1R5cGUsXHJcbiAgU2VsZWN0aW9uVXBkYXRlVHlwZSxcclxuICBTaGVldFR5cGUsXHJcbiAgU29ydERpcmVjdGlvbixcclxuICBUYWJsZWF1RXZlbnRUeXBlLFxyXG4gIFRyZW5kTGluZU1vZGVsVHlwZVxyXG59IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4uL3NyYy9BZGRJbkFwaS50c1xuICoqLyIsImltcG9ydCB7XHJcbiAgQWRkSW5EYXNoYm9hcmRJbmZvLFxyXG4gIEFkZEluU2V0dGluZ3NJbmZvLFxyXG4gIEludGVybmFsQXBpRGlzcGF0Y2hlcixcclxuICBJbnRlcm5hbEFwaURpc3BhdGNoZXJIb2xkZXIsXHJcbiAgU2hlZXRQYXRoLFxyXG59IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XHJcbmltcG9ydCB7IEFwaVNlcnZpY2VSZWdpc3RyeSwgcmVnaXN0ZXJBbGxTaGFyZWRTZXJ2aWNlcyB9IGZyb20gJ0B0YWJsZWF1L2FwaS1zaGFyZWQnO1xyXG5cclxuaW1wb3J0IHsgRGFzaGJvYXJkIH0gZnJvbSAnLi4vRGFzaGJvYXJkJztcclxuaW1wb3J0IHsgRGFzaGJvYXJkQ29udGVudCB9IGZyb20gJy4uL05hbWVzcGFjZXMvRGFzaGJvYXJkQ29udGVudCc7XHJcbmltcG9ydCB7IEVudmlyb25tZW50IH0gZnJvbSAnLi4vTmFtZXNwYWNlcy9FbnZpcm9ubWVudCc7XHJcbmltcG9ydCB7IFNldHRpbmdzIH0gZnJvbSAnLi4vTmFtZXNwYWNlcy9TZXR0aW5ncyc7XHJcbmltcG9ydCB7IEFkZEluU2VydmljZU5hbWVzIH0gZnJvbSAnLi4vU2VydmljZXMvQWRkSW5TZXJ2aWNlTmFtZXMnO1xyXG5pbXBvcnQgeyBJbml0aWFsaXphdGlvblNlcnZpY2UgfSBmcm9tICcuLi9TZXJ2aWNlcy9Jbml0aWFsaXphdGlvblNlcnZpY2UnO1xyXG5pbXBvcnQgeyByZWdpc3RlckFsbEFkZEluU2VydmljZXMgfSBmcm9tICcuLi9TZXJ2aWNlcy9SZWdpc3RlckFsbEFkZEluU2VydmljZXMnO1xyXG5pbXBvcnQgeyBWZXJzaW9uTnVtYmVyIH0gZnJvbSAnLi4vVmVyc2lvbk51bWJlcic7XHJcbmltcG9ydCB7IERhc2hib2FyZEltcGwgfSBmcm9tICcuL0Rhc2hib2FyZEltcGwnO1xyXG5pbXBvcnQgeyBTZXR0aW5nc0ltcGwgfSBmcm9tICcuL1NldHRpbmdzSW1wbCc7XHJcblxyXG5leHBvcnQgY2xhc3MgQWRkSW5JbXBsIHtcclxuICBwcml2YXRlIF9pbml0aWFsaXphdGlvblByb21pc2U6IFByb21pc2U8dm9pZD47XHJcblxyXG4gIHB1YmxpYyBkYXNoYm9hcmRDb250ZW50OiBEYXNoYm9hcmRDb250ZW50O1xyXG4gIHB1YmxpYyBlbnZpcm9ubWVudDogRW52aXJvbm1lbnQ7XHJcbiAgcHVibGljIHNldHRpbmdzOiBTZXR0aW5ncztcclxuXHJcbiAgcHVibGljIGluaXRpYWxpemVBc3luYygpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICghdGhpcy5faW5pdGlhbGl6YXRpb25Qcm9taXNlKSB7XHJcbiAgICAgIHRoaXMuX2luaXRpYWxpemF0aW9uUHJvbWlzZSA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAvLyBGaXJzdCB0aGluZyB3ZSB3YW50IHRvIGRvIGlzIGNoZWNrIHRvIHNlZSBpZiB0aGVyZSBpcyBhIGRlc2t0b3AgZGlzcGF0Y2hlciBhbHJlYWR5IHJlZ2lzdGVyZWQgZm9yIHVzXHJcbiAgICAgICAgaWYgKEludGVybmFsQXBpRGlzcGF0Y2hlckhvbGRlci5oYXNEZXNrdG9wQXBpRGlzcGF0Y2hlclByb21pc2UoKSkge1xyXG4gICAgICAgICAgLy8gUnVubmluZyBpbiBkZXNrdG9wLCB1c2UgdGhpcyBwcm9taXNlXHJcbiAgICAgICAgICBjb25zdCBkZXNrdG9wRGlzcGF0Y2hlclByb21pc2UgPSBJbnRlcm5hbEFwaURpc3BhdGNoZXJIb2xkZXIuZ2V0RGVza3RvcERpc3BhdGNoZXJQcm9taXNlKCk7XHJcbiAgICAgICAgICBkZXNrdG9wRGlzcGF0Y2hlclByb21pc2UudGhlbih0aGlzLm9uRGlzcGF0Y2hlclJlY2VpdmVkLmJpbmQodGhpcykpLnRoZW4oKCkgPT4geyByZXNvbHZlKCk7IH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZWplY3QoJ05vdCBydW5uaW5nIGluIGRlc2t0b3AuIFNlcnZlciBzdXBwb3J0IGNvbWluZyBzb29uIScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuX2luaXRpYWxpemF0aW9uUHJvbWlzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25EaXNwYXRjaGVyUmVjZWl2ZWQoZGlzcGF0Y2hlcjogSW50ZXJuYWxBcGlEaXNwYXRjaGVyKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBkaXNwYXRjaGVyLnNldFZlcnNpb25OdW1iZXIoVmVyc2lvbk51bWJlci5JbnN0YW5jZSk7XHJcblxyXG4gICAgLy8gQ2FsbCB0byByZWdpc3RlciBhbGwgdGhlIHNlcnZpY2VzIHdoaWNoIHdpbGwgdXNlIHRoZSBuZXdseSBpbml0aWFsaXplZCBkaXNwYXRjaGVyXHJcbiAgICByZWdpc3RlckFsbFNoYXJlZFNlcnZpY2VzKGRpc3BhdGNoZXIpO1xyXG4gICAgcmVnaXN0ZXJBbGxBZGRJblNlcnZpY2VzKGRpc3BhdGNoZXIpO1xyXG5cclxuICAgIC8vIEdldCB0aGUgaW5pdGlhbGl6YXRpb24gc2VydmljZSBhbmQgaW5pdGlhbGl6ZSB0aGlzIGFkZC1pblxyXG4gICAgY29uc3QgaW5pdGlhbGl6YXRpb25TZXJ2aWNlID0gQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2U8SW5pdGlhbGl6YXRpb25TZXJ2aWNlPihcclxuICAgICAgQWRkSW5TZXJ2aWNlTmFtZXMuSW5pdGlhbGl6YXRpb25TZXJ2aWNlKTtcclxuXHJcbiAgICByZXR1cm4gaW5pdGlhbGl6YXRpb25TZXJ2aWNlLmluaXRpYWxpemVEYXNoYm9hcmRBZGRJbkFzeW5jKCkudGhlbihyZXN1bHQgPT4ge1xyXG4gICAgICBpZiAoIXJlc3VsdC5hZGRJbkluc3RhbmNlLmxvY2F0b3IuZGFzaGJvYXJkUGF0aCkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRGFzaGJvYXJkUGF0aCBpcyB1bmRlZmluZWQnKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5kYXNoYm9hcmRDb250ZW50ID0gdGhpcy5pbml0aWFsaXplRGFzaGJvYXJkQ29udGVudChyZXN1bHQuYWRkaW5EYXNoYm9hcmRJbmZvLCByZXN1bHQuYWRkSW5JbnN0YW5jZS5sb2NhdG9yLmRhc2hib2FyZFBhdGgpO1xyXG4gICAgICB0aGlzLmVudmlyb25tZW50ID0gbmV3IEVudmlyb25tZW50KHJlc3VsdC5hZGRJbkVudmlyb25tZW50KTtcclxuICAgICAgdGhpcy5zZXR0aW5ncyA9IHRoaXMuaW5pdGlhbGl6ZVNldHRpbmdzKHJlc3VsdC5hZGRJblNldHRpbmdzSW5mbyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdGlhbGl6ZURhc2hib2FyZENvbnRlbnQoaW5mbzogQWRkSW5EYXNoYm9hcmRJbmZvLCBzaGVldFBhdGg6IFNoZWV0UGF0aCk6IERhc2hib2FyZENvbnRlbnQge1xyXG4gICAgY29uc3QgZGFzaGJvYXJkSW1wbCA9IG5ldyBEYXNoYm9hcmRJbXBsKGluZm8sIHNoZWV0UGF0aCk7XHJcbiAgICBjb25zdCBkYXNoYm9hcmQgPSBuZXcgRGFzaGJvYXJkKGRhc2hib2FyZEltcGwpO1xyXG4gICAgcmV0dXJuIG5ldyBEYXNoYm9hcmRDb250ZW50KGRhc2hib2FyZCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRpYWxpemVTZXR0aW5ncyhzZXR0aW5nc0luZm86IEFkZEluU2V0dGluZ3NJbmZvKTogU2V0dGluZ3Mge1xyXG4gICAgY29uc3Qgc2V0dGluZ3NJbXBsID0gbmV3IFNldHRpbmdzSW1wbChzZXR0aW5nc0luZm8pO1xyXG4gICAgcmV0dXJuIG5ldyBTZXR0aW5ncyhzZXR0aW5nc0ltcGwpO1xyXG4gIH1cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuLi9zcmMvSW50ZXJuYWwvQWRkSW5JbXBsLnRzXG4gKiovIiwiLyoqXG4gKiBUaGlzIGlzIHlvdXIgbWFpbi4gVGhpcyBpcyB3aGVyZSB5b3UgcmUtZXhwb3J0IGV2ZXJ5dGhpbmcgeW91IHdhbnQgdG8gYmUgcHVibGljbHkgYXZhaWxhYmxlLlxuICpcbiAqIFRoZSBidWlsZCBlbmZvcmNlcyB0aGF0IHRoZSBmaWxlIGhhcyB0aGUgc2FtZSBuYW1lIGFzIHRoZSBnbG9iYWwgdmFyaWFibGUgdGhhdCBpcyBleHBvcnRlZC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZS9FbnVtcyc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZS9JbnRlcm5hbEFwaURpc3BhdGNoZXInO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2UvTW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlL05vdGlmaWNhdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2UvUGFyYW1ldGVycyc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZS9WZXJicyc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZS9WZXJzaW9uTnVtYmVyJztcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi90eXBlc2NyaXB0L2pzLWFwaS9hcGktaW50ZXJuYWwtY29udHJhY3Qvc3JjL0FwaUludGVybmFsQ29udHJhY3QudHNcbiAqKi8iLCJleHBvcnQgZW51bSBBZGRJbkNvbnRleHQge1xyXG4gIERlc2t0b3AgPSAnZGVza3RvcCcsXHJcbiAgU2VydmVyID0gJ3NlcnZlcicsXHJcbiAgVW5rbm93biA9ICd1bmtub3duJ1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBBZGRJbk1vZGUge1xyXG4gIEF1dGhvcmluZyA9ICdhdXRob3JpbmcnLFxyXG4gIFZpZXdpbmcgPSAndmlld2luZycsXHJcbiAgVW5rbm93biA9ICd1bmtub3duJ1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBDb2x1bW5UeXBlIHtcclxuICBEaXNjcmV0ZSA9ICdkaXNjcmV0ZScsXHJcbiAgQ29udGludW91cyA9ICdjb250aW51b3VzJ1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBEYXNoYm9hcmRPYmplY3RUeXBlIHtcclxuICBCbGFuayA9ICdibGFuaycsXHJcbiAgV29ya3NoZWV0ID0gJ3dvcmtzaGVldCcsXHJcbiAgUXVpY2tGaWx0ZXIgPSAncXVpY2stZmlsdGVyJyxcclxuICBQYXJhbWV0ZXJDb250cm9sID0gJ3BhcmFtZXRlci1jb250cm9sJyxcclxuICBQYWdlRmlsdGVyID0gJ3BhZ2UtZmlsdGVyJyxcclxuICBMZWdlbmQgPSAnbGVnZW5kJyxcclxuICBUaXRsZSA9ICd0aXRsZScsXHJcbiAgVGV4dCA9ICd0ZXh0JyxcclxuICBJbWFnZSA9ICdpbWFnZScsXHJcbiAgV2ViUGFnZSA9ICd3ZWItcGFnZScsXHJcbiAgQWRkSW4gPSAnYWRkaW4nXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIERhdGFUeXBlIHtcclxuICBTdHJpbmcgPSAnc3RyaW5nJyxcclxuICBJbnQgPSAnaW50JyxcclxuICBGbG9hdCA9ICdmbG9hdCcsXHJcbiAgQm9vbCA9ICdib29sJyxcclxuICBEYXRlID0gJ2RhdGUnLFxyXG4gIERhdGVUaW1lID0gJ2RhdGUtdGltZScsXHJcbiAgU3BhdGlhbCA9ICdzcGF0aWFsJ1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBFbmNvZGVkRGF0YVR5cGUge1xyXG4gIE51bWJlciA9ICdudW1iZXInLFxyXG4gIFN0cmluZyA9ICdzdHJpbmcnLFxyXG4gIERhdGUgPSAnZGF0ZScsXHJcbiAgQm9vbGVhbiA9ICdib29sZWFuJ1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBFcnJvckNvZGUge1xyXG4gIFNlcnZlckVycm9yID0gJ3NlcnZlci1lcnJvcicsXHJcbiAgSW52YWxpZEFnZ3JlZ2F0aW9uRmllbGROYW1lID0gJ2ludmFsaWQtYWdncmVnYXRpb24tZmllbGQtbmFtZScsXHJcbiAgSW52YWxpZEZpbHRlckZpZWxkTmFtZSA9ICdpbnZhbGlkLWZpbHRlci1maWVsZG5hbWUnLFxyXG4gIEludmFsaWRGaWx0ZXJGaWVsZFZhbHVlID0gJ2ludmFsaWQtZmlsdGVyLWZpZWxkLXZhbHVlJ1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBGaWVsZEFnZ3JlZ2F0aW9uVHlwZSB7XHJcbiAgU3VtID0gJ3N1bScsXHJcbiAgQXZnID0gJ2F2ZycsXHJcbiAgTWluID0gJ21pbicsXHJcbiAgTWF4ID0gJ21heCcsXHJcbiAgU3RkZXYgPSAnc3RkZXYnLFxyXG4gIFN0ZGV2cCA9ICdzdGRldnAnLFxyXG4gIFZhciA9ICd2YXInLFxyXG4gIFZhcnAgPSAndmFycCcsXHJcbiAgQ291bnQgPSAnY291bnQnLFxyXG4gIENvdW50ZCA9ICdjb3VudGQnLFxyXG4gIE1lZGlhbiA9ICdtZWRpYW4nLFxyXG4gIEF0dHIgPSAnYXR0cicsXHJcbiAgTm9uZSA9ICdub25lJyxcclxuICBZZWFyID0gJ3llYXInLFxyXG4gIFF0ciA9ICdxdHInLFxyXG4gIE1vbnRoID0gJ21vbnRoJyxcclxuICBEYXkgPSAnZGF5JyxcclxuICBIb3VyID0gJ2hvdXInLFxyXG4gIE1pbnV0ZSA9ICdtaW51dGUnLFxyXG4gIFNlY29uZCA9ICdzZWNvbmQnLFxyXG4gIFdlZWsgPSAnd2VlaycsXHJcbiAgV2Vla2RheSA9ICd3ZWVrZGF5JyxcclxuICBNb250aFllYXIgPSAnbW9udGgteWVhcicsXHJcbiAgTWR5ID0gJ21keScsXHJcbiAgRW5kID0gJ2VuZCcsXHJcbiAgVHJ1bmNZZWFyID0gJ3RydW5jLXllYXInLFxyXG4gIFRydW5jUXRyID0gJ3RydW5jLXF0cicsXHJcbiAgVHJ1bmNNb250aCA9ICd0cnVuYy1tb250aCcsXHJcbiAgVHJ1bmNXZWVrID0gJ3RydW5jLXdlZWsnLFxyXG4gIFRydW5jRGF5ID0gJ3RydW5jLWRheScsXHJcbiAgVHJ1bmNIb3VyID0gJ3RydW5jLWhvdXInLFxyXG4gIFRydW5jTWludXRlID0gJ3RydW5jLW1pbnV0ZScsXHJcbiAgVHJ1bmNTZWNvbmQgPSAndHJ1bmMtc2Vjb25kJyxcclxuICBRdWFydDEgPSAncXVhcnQxJyxcclxuICBRdWFydDMgPSAncXVhcnQzJyxcclxuICBTa2V3bmVzcyA9ICdza2V3bmVzcycsXHJcbiAgS3VydG9zaXMgPSAna3VydG9zaXMnLFxyXG4gIEluT3V0ID0gJ2luLW91dCcsXHJcbiAgVXNlciA9ICd1c2VyJ1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBGaWVsZFJvbGVUeXBlIHtcclxuICBEaW1lbnNpb24gPSAnZGltZW5zaW9uJyxcclxuICBNZWFzdXJlID0gJ21lYXN1cmUnLFxyXG4gIFVua25vd24gPSAndW5rbm93bidcclxufVxyXG5cclxuLyoqXHJcbiAqICBUaGUgZGlmZmVyZW50IHVwZGF0ZSB0eXBlcyBmb3IgYXBwbHlpbmcgZmlsdGVyLlxyXG4gKi9cclxuZXhwb3J0IGVudW0gRmlsdGVyVXBkYXRlVHlwZSB7XHJcbiAgQWRkID0gJ2FkZCcsXHJcbiAgQWxsID0gJ2FsbCcsXHJcbiAgUmVwbGFjZSA9ICdyZXBsYWNlJyxcclxuICBSZW1vdmUgPSAncmVtb3ZlJ1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBTaGVldFR5cGUge1xyXG4gIERhc2hib2FyZCA9ICdkYXNoYm9hcmQnLFxyXG4gIFN0b3J5ID0gJ3N0b3J5JyxcclxuICBXb3Jrc2hlZXQgPSAnd29ya3NoZWV0JyxcclxuICBBZGRpbiA9ICdhZGRpbidcclxufVxyXG5cclxuZXhwb3J0IGVudW0gRG9tYWluUmVzdHJpY3Rpb25UeXBlIHtcclxuICBBbGwgPSAnYWxsJyxcclxuICBMaXN0ID0gJ2xpc3QnLFxyXG4gIFJhbmdlID0gJ3JhbmdlJ1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBEYXRlU3RlcFBlcmlvZCB7XHJcbiAgWWVhcnMgPSAneWVhcnMnLFxyXG4gIFF1YXJ0ZXJzID0gJ3F1YXJ0ZXJzJyxcclxuICBNb250aHMgPSAnbW9udGhzJyxcclxuICBXZWVrcyA9ICd3ZWVrcycsXHJcbiAgRGF5cyA9ICdkYXlzJyxcclxuICBIb3VycyA9ICdob3VycycsXHJcbiAgTWludXRlcyA9ICdtaW51dGVzJyxcclxuICBTZWNvbmRzID0gJ3NlY29uZHMnXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUaGUgb3B0aW9uIGZvciBzcGVjaWZ5aW5nIHdoaWNoIHZhbHVlcyB0byBpbmNsdWRlIGZvciBmaWx0ZXJpbmcuXHJcbiAqL1xyXG5leHBvcnQgZW51bSBGaWx0ZXJOdWxsT3B0aW9uIHtcclxuICBOdWxsVmFsdWVzID0gJ251bGx2YWx1ZXMnLFxyXG4gIE5vbk51bGxWYWx1ZXMgPSAnbm9ubnVsbHZhbHVlcycsXHJcbiAgQWxsVmFsdWVzID0gJ2FsbHZhbHVlcydcclxufVxyXG5cclxuLyoqXHJcbiAqIEludGVybmFsIGVudW0gZm9yIHNwZWNpZnlpbmcgdGhlIHNlbGVjdGlvbiB0eXBlIGZvciBzZWxlY3QgbWFya3MgYXBpLlxyXG4gKi9cclxuZXhwb3J0IGVudW0gU2VsZWN0aW9uVXBkYXRlVHlwZSB7XHJcbiAgUmVwbGFjZSA9ICdzZWxlY3QtcmVwbGFjZScsXHJcbiAgQWRkID0gJ3NlbGVjdC1hZGQnLFxyXG4gIFJlbW92ZSA9ICdzZWxlY3QtcmVtb3ZlJ1xyXG59XHJcblxyXG4vKipcclxuICogSW50ZXJuYWwgZW51bSBmb3Igc3BlY2lmeWluZyB0aGUgaW5jbHVkZWQgdmFsdWVzIHR5cGUgZm9yIHJhbmdlIHNlbGVjdGlvbi5cclxuICovXHJcbmV4cG9ydCBlbnVtIFF1YW50aXRhdGl2ZUluY2x1ZGVkVmFsdWVzIHtcclxuICBJbmNsdWRlTnVsbCA9ICdpbmNsdWRlLW51bGwnLFxyXG4gIEluY2x1ZGVOb25OdWxsID0gJ2luY2x1ZGUtbm9uLW51bGwnLFxyXG4gIEluY2x1ZGVBbGwgPSAnaW5jbHVkZS1hbGwnXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUeXBlIG9mIG1hcmsgZm9yIGEgZ2l2ZW4gbWFya3MgY2FyZCBpbiBhIHZpei5cclxuICovXHJcbmV4cG9ydCBlbnVtIE1hcmtUeXBlIHtcclxuICAgIEJhciA9ICdiYXInLFxyXG4gICAgTGluZSA9ICdsaW5lJyxcclxuICAgIEFyZWEgPSAnYXJlYScsXHJcbiAgICBTcXVhcmUgPSAnc3F1YXJlJyxcclxuICAgIENpcmNsZSA9ICdjaXJjbGUnLFxyXG4gICAgU2hhcGUgPSAnc2hhcGUnLFxyXG4gICAgVGV4dCA9ICd0ZXh0JyxcclxuICAgIE1hcCA9ICdtYXAnLFxyXG4gICAgUGllID0gJ3BpZScsXHJcbiAgICBHYW50dEJhciA9ICdnYW50dC1iYXInLFxyXG4gICAgUG9seWdvbiA9ICdwb2x5Z29uJyxcclxufVxyXG5cclxuLyoqXHJcbiAqIEludGVybmFsIGVudW0gZm9yIHNwZWNpZnlpbmcgdGhlIHR5cGUgb2YgZmlsdGVyXHJcbiAqL1xyXG5leHBvcnQgZW51bSBGaWx0ZXJUeXBlIHtcclxuICBDYXRlZ29yaWNhbCA9ICdjYXRlZ29yaWNhbCcsXHJcbiAgUmFuZ2UgPSAncmFuZ2UnLFxyXG4gIFJlbGF0aXZlRGF0ZSA9ICdyZWxhdGl2ZURhdGUnLFxyXG4gIEhpZXJhcmNoaWNhbCA9ICdoaWVyYXJjaGljYWwnXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBJbnRlcm5hbCBlbnVtIGZvciBzcGVjaWZ5aW5nIHRoZSBEYXRlUmFuZ2VUeXBlIG9mIGEgcmVsYXRpdmUgZGF0ZSBmaWx0ZXJcclxuICovXHJcbmV4cG9ydCBlbnVtIERhdGVSYW5nZVR5cGUge1xyXG4gIC8qKlxyXG4gICAqIFJlZmVycyB0byB0aGUgbGFzdCBkYXksIHdlZWssIG1vbnRoLCBldGMuIG9mIHRoZSBkYXRlIHBlcmlvZC5cclxuICAgKi9cclxuICBMYXN0ID0gJ2xhc3QnLFxyXG4gIC8qKlxyXG4gICAqIFJlZmVycyB0byB0aGUgbGFzdCBOIGRheXMsIHdlZWtzLCBtb250aHMsIGV0Yy4gb2YgdGhlIGRhdGUgcGVyaW9kLlxyXG4gICAqL1xyXG4gIExhc3ROID0gJ2xhc3ROJyxcclxuICAvKipcclxuICAgKiBSZWZlcnMgdG8gdGhlIG5leHQgZGF5LCB3ZWVrLCBtb250aCwgZXRjLiBvZiB0aGUgZGF0ZSBwZXJpb2QuXHJcbiAgICovXHJcbiAgTmV4dCA9ICduZXh0JyxcclxuICAvKipcclxuICAgKiBSZWZlcnMgdG8gdGhlIG5leHQgTiBkYXlzLCB3ZWVrcywgbW9udGhzLCBldGMuIG9mIHRoZSBkYXRlIHBlcmlvZC5cclxuICAgKi9cclxuICBOZXh0TiA9ICduZXh0TicsXHJcbiAgLyoqXHJcbiAgICogUmVmZXJzIHRvIHRoZSBjdXJyZW50IGRheSwgd2VlaywgbW9udGgsIGV0Yy4gb2YgdGhlIGRhdGUgcGVyaW9kLlxyXG4gICAqL1xyXG4gIEN1cnJlbnQgPSAnY3VycmVudCcsXHJcbiAgLyoqXHJcbiAgICogUmVmZXJzIHRvIGV2ZXJ5dGhpbmcgdXAgdG8gYW5kIGluY2x1ZGluZyB0aGUgY3VycmVudCBkYXksIHdlZWssIG1vbnRoLCBldGMuIG9mIHRoZSBkYXRlIHBlcmlvZC5cclxuICAgKi9cclxuICBUb0RhdGUgPSAndG9EYXRlJ1xyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi90eXBlc2NyaXB0L2pzLWFwaS9hcGktaW50ZXJuYWwtY29udHJhY3Qvc3JjL2ludGVyZmFjZS9FbnVtcy50c1xuICoqLyIsImltcG9ydCB7IE1vZGVsIH0gZnJvbSAnLi9Nb2RlbHMnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uSWQgfSBmcm9tICcuL05vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHsgVmVyYklkIH0gZnJvbSAnLi9WZXJicyc7XG5pbXBvcnQgeyBWZXJzaW9uTnVtYmVyIH0gZnJvbSAnLi9WZXJzaW9uTnVtYmVyJztcblxuZXhwb3J0IHR5cGUgTm90aWZpY2F0aW9uSGFuZGxlciA9IChub3RpZmljYXRpb246IE5vdGlmaWNhdGlvbikgPT4gdm9pZDtcblxuZXhwb3J0IGludGVyZmFjZSBFeGVjdXRlUGFyYW1ldGVycyB7XG4gIFtrZXk6IHN0cmluZ106IE1vZGVsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWN1dGVSZXNwb25zZSB7XG4gIHJlc3VsdDogTW9kZWw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm90aWZpY2F0aW9uIHtcbiAgbm90aWZpY2F0aW9uSWQ6IE5vdGlmaWNhdGlvbklkO1xuICBkYXRhOiBNb2RlbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnRlcm5hbEFwaURpc3BhdGNoZXIge1xuICBzZXRWZXJzaW9uTnVtYmVyKHZlcnNpb25OdW1iZXI6IFZlcnNpb25OdW1iZXIpOiB2b2lkO1xuICBleGVjdXRlKHZlcmI6IFZlcmJJZCwgcGFyYW1ldGVyczogRXhlY3V0ZVBhcmFtZXRlcnMpOiBQcm9taXNlPEV4ZWN1dGVSZXNwb25zZT47XG4gIHJlZ2lzdGVyTm90aWZpY2F0aW9uSGFuZGxlcihoYW5kbGVyOiBOb3RpZmljYXRpb25IYW5kbGVyKTogdm9pZDtcbiAgdW5yZWdpc3Rlck5vdGlmaWNhdGlvbkhhbmRsZXIoaGFuZGxlcjogTm90aWZpY2F0aW9uSGFuZGxlcik6IHZvaWQ7XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIFdpbmRvdyB7IF9fdGFibGVhdURlc2t0b3BEaXNwYXRjaGVyOiBQcm9taXNlPEludGVybmFsQXBpRGlzcGF0Y2hlcj47IH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBJbnRlcm5hbEFwaURpc3BhdGNoZXJIb2xkZXIge1xuICBleHBvcnQgZnVuY3Rpb24gZ2V0RGVza3RvcERpc3BhdGNoZXJQcm9taXNlKCk6IFByb21pc2U8SW50ZXJuYWxBcGlEaXNwYXRjaGVyPiB7XG4gICAgcmV0dXJuIHdpbmRvdy5fX3RhYmxlYXVEZXNrdG9wRGlzcGF0Y2hlcjtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBoYXNEZXNrdG9wQXBpRGlzcGF0Y2hlclByb21pc2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhSW50ZXJuYWxBcGlEaXNwYXRjaGVySG9sZGVyLmdldERlc2t0b3BEaXNwYXRjaGVyUHJvbWlzZSgpO1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIHNldERlc2t0b3BEaXNwYXRjaGVyUHJvbWlzZShkaXNwYXRjaGVyOiBQcm9taXNlPEludGVybmFsQXBpRGlzcGF0Y2hlcj4pOiB2b2lkIHtcbiAgICB3aW5kb3cuX190YWJsZWF1RGVza3RvcERpc3BhdGNoZXIgPSBkaXNwYXRjaGVyO1xuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBEOi9kZXYvdHlwZXNjcmlwdC9qcy1hcGkvYXBpLWludGVybmFsLWNvbnRyYWN0L3NyYy9pbnRlcmZhY2UvSW50ZXJuYWxBcGlEaXNwYXRjaGVyLnRzXG4gKiovIiwiZXhwb3J0IGVudW0gTm90aWZpY2F0aW9uSWQge1xyXG4gIFNlbGVjdGVkTWFya3NDaGFuZ2VkID0gJ3NlbGVjdGVkLW1hcmtzLWNoYW5nZWQnLFxyXG4gIFBhcmFtZXRlckNoYW5nZWQgPSAncGFyYW1ldGVyLWNoYW5nZWQnLFxyXG4gIEZpbHRlckNoYW5nZWQgPSAnZmlsdGVyLWNoYW5nZWQnXHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogRDovZGV2L3R5cGVzY3JpcHQvanMtYXBpL2FwaS1pbnRlcm5hbC1jb250cmFjdC9zcmMvaW50ZXJmYWNlL05vdGlmaWNhdGlvbnMudHNcbiAqKi8iLCJleHBvcnQgZW51bSBQYXJhbWV0ZXJJZCB7XHJcbiAgQWRkSW5Mb2NhdG9yID0gJ2FkZC1pbi1sb2NhdG9yJyxcclxuICBBZGRJbkJvb3RzdHJhcEluZm8gPSAnYWRkLWluLWJvb3RzdHJhcC1pbmZvJyxcclxuICBBZGRJblNldHRpbmdzSW5mbyA9ICdhZGQtaW4tc2V0dGluZ3MtaW5mbycsXHJcbiAgVmlzdWFsSWQgPSAndmlzdWFsLWlkJyxcclxuICBTaGVldFBhdGggPSAnc2hlZXQtcGF0aCcsXHJcbiAgSWdub3JlQWxpYXNlcyA9ICdpZ25vcmUtYWxpYXNlcycsXHJcbiAgSWdub3JlU2VsZWN0aW9uID0gJ2lnbm9yZS1zZWxlY3Rpb24nLFxyXG4gIEluY2x1ZGVBbGxDb2x1bW5zID0gJ2luY2x1ZGUtYWxsLWNvbHVtbnMnLFxyXG4gIE1heFJvd3MgPSAnbWF4LXJvd3MnLFxyXG4gIFVuZGVybHlpbmdEYXRhVGFibGUgPSAndW5kZXJseWluZy1kYXRhLXRhYmxlJyxcclxuICBVbmRlcmx5aW5nU3VtbWFyeURhdGFUYWJsZSA9ICd1bmRlcmx5aW5nLXN1bW1hcnktZGF0YS10YWJsZScsXHJcbiAgU2V0dGluZ3NWYWx1ZXMgPSAnc2V0dGluZ3MtdmFsdWVzJyxcclxuICBTZWxlY3RlZERhdGEgPSAnc2VsZWN0ZWQtZGF0YScsXHJcbiAgSGlnaGxpZ2h0ZWREYXRhID0gJ2hpZ2hsaWdodGVkLWRhdGEnLFxyXG5cclxuICAgLy8gRmlsdGVyIFBhcmFtc1xyXG4gIEZpZWxkTmFtZSA9ICdmaWVsZC1uYW1lJyxcclxuICBGaWx0ZXJWYWx1ZXMgPSAnZmlsdGVyLXZhbHVlcycsXHJcbiAgRmlsdGVyVXBkYXRlVHlwZSA9ICdmaWx0ZXItdXBkYXRlLXR5cGUnLFxyXG4gIElzRXhjbHVkZU1vZGUgPSAnaXMtZXhjbHVkZScsXHJcbiAgRmlsdGVyUmFuZ2VNaW4gPSAnZmlsdGVyLXJhbmdlLW1pbicsXHJcbiAgRmlsdGVyUmFuZ2VNYXggPSAnZmlsdGVyLXJhbmdlLW1heCcsXHJcbiAgRmlsdGVyUmFuZ2VOdWxsT3B0aW9uID0gJ2ZpbHRlci1yYW5nZS1udWxsLW9wdGlvbicsXHJcbiAgV29ya3NoZWV0RmlsdGVycyA9ICd3b3Jrc2hlZXQtZmlsdGVycycsXHJcblxyXG4gIFdvcmtzaGVldE5hbWUgPSAnd29ya3NoZWV0LW5hbWUnLFxyXG4gIERhc2hib2FyZE5hbWUgPSAnZGFzaGJvYXJkJyxcclxuXHJcbiAgUGFyYW1ldGVySW5mbyA9ICdwYXJhbWV0ZXItaW5mbycsXHJcbiAgUGFyYW1ldGVySW5mb3MgPSAncGFyYW1ldGVyLWluZm9zJyxcclxuICBQYXJhbWV0ZXJDYXB0aW9uID0gJ3BhcmVtZXRlci1jYXB0aW9uJyxcclxuICBQYXJhbWV0ZXJGaWVsZE5hbWUgPSAncGFyYW1ldGVyLWZpZWxkLW5hbWUnLFxyXG4gIFBhcmFtZXRlclZhbHVlID0gJ3BhcmFtZXRlci12YWx1ZScsXHJcbiAgU2VsZWN0aW9uID0gJ3NlbGVjdGlvbicsXHJcbiAgU2VsZWN0aW9uVXBkYXRlVHlwZSA9ICdzZWxlY3Rpb25VcGRhdGVUeXBlJyxcclxuICBIaWVyVmFsU2VsZWN0aW9uTW9kZWxzID0gJ2hpZXJhcmNoaWNhbFZhbHVlU2VsZWN0aW9uTW9kZWxzJyxcclxuICBRdWFudFJhbmdlU2VsZWN0aW9uTW9kZWxzID0gJ3F1YW50YXRpdmVSYW5nZVNlbGVjdGlvbk1vZGVscycsXHJcbiAgRGltVmFsU2VsZWN0aW9uTW9kZWxzID0gJ2RpbWVuc2lvblZhbHVlU2VsZWN0aW9uTW9kZWxzJyxcclxuXHJcbiAgRGF0YVNvdXJjZUlkID0gJ2RhdGEtc291cmNlLWlkJyxcclxuICBEYXRhU2NoZW1hID0gJ2RhdGEtc2NoZW1hJyxcclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBEOi9kZXYvdHlwZXNjcmlwdC9qcy1hcGkvYXBpLWludGVybmFsLWNvbnRyYWN0L3NyYy9pbnRlcmZhY2UvUGFyYW1ldGVycy50c1xuICoqLyIsIi8vIERlY2xhcmUgdGhpcyBrZXkgdHlwZSBhbmQgZXhwb3J0IHRoZSBOb3RpZmljYXRpb25JZCB0byBtYWtlIHRoaXMgYmVoYXZlIGxpa2UgYSBzdHJpbmcgZW51bVxyXG5leHBvcnQgZW51bSBWZXJiSWQge1xyXG4gIEFwcGx5Q2F0ZWdvcmljYWxGaWx0ZXIgPSAnY2F0ZWdvcmljYWwtZmlsdGVyJyxcclxuICBBcHBseVJhbmdlRmlsdGVyID0gJ3JhbmdlLWZpbHRlcicsXHJcbiAgQ2xlYXJGaWx0ZXIgPSAnY2xlYXItZmlsdGVyJyxcclxuICBJbml0aWFsaXplQWRkSW4gPSAnaW5pdGlhbGl6ZS1hZGQtaW4nLFxyXG4gIEdldERhdGFTdW1tYXJ5RGF0YSA9ICdnZXQtc3VtbWFyeS1kYXRhJyxcclxuICBHZXRVbmRlcmx5aW5nRGF0YSA9ICdnZXQtdW5kZXJseWluZy1kYXRhJyxcclxuICBTYXZlQWRkSW5TZXR0aW5ncyA9ICdzYXZlLWFkZC1pbi1zZXR0aW5ncycsXHJcbiAgR2V0U2VsZWN0ZWRNYXJrcyA9ICdnZXQtc2VsZWN0ZWQtbWFya3MnLFxyXG4gIEdldEhpZ2hsaWdodGVkTWFya3MgPSAnZ2V0LWhpZ2hsaWdodGVkLW1hcmtzJyxcclxuICBHZXRQYXJhbWV0ZXJzRm9yU2hlZXQgPSAnZ2V0LXBhcmFtZXRlcnMtZm9yLXNoZWV0JyxcclxuICBGaW5kUGFyYW1ldGVyID0gJ2ZpbmQtcGFyYW1ldGVyJyxcclxuICBDaGFuZ2VQYXJhbWV0ZXJWYWx1ZSA9ICdjaGFuZ2UtcGFyYW1ldGVyLXZhbHVlJyxcclxuICBDbGVhclNlbGVjdGVkTWFya3MgPSAnY2xlYXItc2VsZWN0ZWQtbWFya3MnLFxyXG4gIFNlbGVjdEJ5VmFsdWUgPSAnc2VsZWN0LWJ5LXZhbHVlJyxcclxuICBHZXREYXRhU291cmNlcyA9ICdnZXQtZGF0YS1zb3VyY2VzJyxcclxuICBSZWZyZXNoRGF0YVNvdXJjZSA9ICdyZWZyZXNoLWRhdGEtc291cmNlJyxcclxuICBHZXRGaWx0ZXJzID0gJ2dldC1maWx0ZXJzJ1xyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi90eXBlc2NyaXB0L2pzLWFwaS9hcGktaW50ZXJuYWwtY29udHJhY3Qvc3JjL2ludGVyZmFjZS9WZXJicy50c1xuICoqLyIsIi8qKlxyXG4gKiBUaGlzIGlzIHlvdXIgbWFpbi4gVGhpcyBpcyB3aGVyZSB5b3UgcmUtZXhwb3J0IGV2ZXJ5dGhpbmcgeW91IHdhbnQgdG8gYmUgcHVibGljbHkgYXZhaWxhYmxlLlxyXG4gKlxyXG4gKiBUaGUgYnVpbGQgZW5mb3JjZXMgdGhhdCB0aGUgZmlsZSBoYXMgdGhlIHNhbWUgbmFtZSBhcyB0aGUgZ2xvYmFsIHZhcmlhYmxlIHRoYXQgaXMgZXhwb3J0ZWQuXHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9FdmVudExpc3RlbmVyTWFuYWdlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vUGFyYW1ldGVyJztcclxuZXhwb3J0IHsgUG9pbnQgfSBmcm9tICcuL1BvaW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9TaW5nbGVFdmVudE1hbmFnZXInO1xyXG5leHBvcnQgeyBTaXplIH0gZnJvbSAnLi9TaXplJztcclxuZXhwb3J0ICogZnJvbSAnLi9Nb2RlbHMvR2V0RGF0YU1vZGVscyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vRXhjZXB0aW9ucy9UYWJsZWF1RXhjZXB0aW9ucyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vRXZlbnRzL0ZpbHRlckNoYW5nZWRFdmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vRXZlbnRzL01hcmtzU2VsZWN0ZWRFdmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vRXZlbnRzL1RhYmxlYXVFdmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vRXZlbnRzL1RhYmxlYXVTaGVldEV2ZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9FdmVudHMvVGFibGVhdVdvcmtzaGVldEV2ZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9JbnRlcm5hbC9TaW5nbGVFdmVudE1hbmFnZXJJbXBsJztcclxuZXhwb3J0ICogZnJvbSAnLi9TZXJ2aWNlcy9EYXRhU291cmNlU2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vU2VydmljZXMvR2V0RGF0YVNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL1NlcnZpY2VzL0ZpbHRlclNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL1NlcnZpY2VzL05vdGlmaWNhdGlvblNlcnZpY2UnO1xyXG5leHBvcnQgeyBQYXJhbWV0ZXJzU2VydmljZSB9IGZyb20gJy4vU2VydmljZXMvUGFyYW1ldGVyc1NlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL1NlcnZpY2VzL1JlZ2lzdGVyQWxsU2hhcmVkU2VydmljZXMnO1xyXG5leHBvcnQgKiBmcm9tICcuL1NlcnZpY2VzL1NlbGVjdGlvblNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL1NlcnZpY2VzL1NlcnZpY2VSZWdpc3RyeSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vRW51bU1hcHBpbmdzL0ludGVybmFsVG9FeHRlcm5hbEVudW1NYXBwaW5ncyc7XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi90eXBlc2NyaXB0L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9BcGlTaGFyZWQudHNcbiAqKi8iLCJpbXBvcnQgKiBhcyBDb250cmFjdCBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xyXG5cclxuaW1wb3J0IHsgU2luZ2xlRXZlbnRNYW5hZ2VyIH0gZnJvbSAnLi9TaW5nbGVFdmVudE1hbmFnZXInO1xyXG5cclxuLyoqXHJcbiAqIENsYXNzIGRlc2lnbmVkIHRvIHJlZ2lzdGVyIGFuZCB1bnJlZ2lzdGVyIGhhbmRsZXJzIGZyb20gYSB1c2VyLiBPbmx5IHRob3NlIGV2ZW50c1xyXG4gKiB3aGljaCBhcmUgYWRkZWQgdmlhIEFkZE5ld0V2ZW50VHlwZSB3aWxsIGJlIHN1cHBvcnRlZCBieSB0aGlzIGluc3RhbmNlXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRXZlbnRMaXN0ZW5lck1hbmFnZXIgaW1wbGVtZW50cyAgQ29udHJhY3QuRXZlbnRMaXN0ZW5lck1hbmFnZXIge1xyXG4gIHByaXZhdGUgX2V2ZW50TGlzdGVuZXJNYW5hZ2VyczogeyBbdGFibGVhdUV2ZW50VHlwZTogc3RyaW5nXTogU2luZ2xlRXZlbnRNYW5hZ2VyOyB9O1xyXG5cclxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLl9ldmVudExpc3RlbmVyTWFuYWdlcnMgPSB7fTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZTogQ29udHJhY3QuVGFibGVhdUV2ZW50VHlwZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyOiBDb250cmFjdC5UYWJsZWF1RXZlbnRIYW5kbGVyRm4pOiBDb250cmFjdC5UYWJsZWF1RXZlbnRVbnJlZ2lzdGVyRm4ge1xyXG4gICAgaWYgKCF0aGlzLl9ldmVudExpc3RlbmVyTWFuYWdlcnMuaGFzT3duUHJvcGVydHkoZXZlbnRUeXBlKSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGV2ZW50IHR5cGUgOiAke2V2ZW50VHlwZX1gKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5fZXZlbnRMaXN0ZW5lck1hbmFnZXJzW2V2ZW50VHlwZV0uYWRkRXZlbnRMaXN0ZW5lcihoYW5kbGVyKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZTogQ29udHJhY3QuVGFibGVhdUV2ZW50VHlwZSwgaGFuZGxlcjogQ29udHJhY3QuVGFibGVhdUV2ZW50SGFuZGxlckZuKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuX2V2ZW50TGlzdGVuZXJNYW5hZ2Vycy5oYXNPd25Qcm9wZXJ0eShldmVudFR5cGUpKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgZXZlbnQgdHlwZSA6ICR7ZXZlbnRUeXBlfWApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLl9ldmVudExpc3RlbmVyTWFuYWdlcnNbZXZlbnRUeXBlXS5yZW1vdmVFdmVudExpc3RlbmVyKGhhbmRsZXIpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGFkZE5ld0V2ZW50VHlwZShldmVudE1hbmFnZXI6IFNpbmdsZUV2ZW50TWFuYWdlcik6IHZvaWQge1xyXG4gICAgdGhpcy5fZXZlbnRMaXN0ZW5lck1hbmFnZXJzW2V2ZW50TWFuYWdlci5ldmVudFR5cGVdID0gZXZlbnRNYW5hZ2VyO1xyXG4gIH1cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBEOi9kZXYvdHlwZXNjcmlwdC9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvRXZlbnRMaXN0ZW5lck1hbmFnZXIudHNcbiAqKi8iLCJpbXBvcnQgKiBhcyBDb250cmFjdCBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xyXG5cclxuaW1wb3J0IHsgRXZlbnRMaXN0ZW5lck1hbmFnZXIgfSBmcm9tICcuL0V2ZW50TGlzdGVuZXJNYW5hZ2VyJztcclxuaW1wb3J0IHsgUGFyYW1ldGVySW1wbCB9IGZyb20gJy4vSW50ZXJuYWwvUGFyYW1ldGVySW1wbCc7XHJcblxyXG4vKipcclxuICogSW1wbGVtZW50YXRpb24gb2YgdGhlIFBhcmFtZXRlciBjb250cmFjdC4gQ2FsbHMgZG93biB0byB0aGUgaW1wbFxyXG4gKiBjbGFzcyBmb3IgYWxtb3N0IGFsbCBvZiB0aGUgd29yayBpdCBkb2VzLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFBhcmFtZXRlciBleHRlbmRzIEV2ZW50TGlzdGVuZXJNYW5hZ2VyIGltcGxlbWVudHMgQ29udHJhY3QuUGFyYW1ldGVyIHtcclxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBwYXJhbWV0ZXJJbXBsOiBQYXJhbWV0ZXJJbXBsLCBzaGVldDogQ29udHJhY3QuU2hlZXQpIHtcclxuICAgIHN1cGVyKCk7XHJcblxyXG4gICAgLy8gSW5pdGlhbGl6ZSBvdXIgZXZlbnQgaGFuZGxpbmcgZm9yIHRoaXMgY2xhc3NcclxuICAgIHRoaXMucGFyYW1ldGVySW1wbC5pbml0aWFsaXplRXZlbnRzKHNoZWV0KS5mb3JFYWNoKGUgPT4gdGhpcy5hZGROZXdFdmVudFR5cGUoZSkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJJbXBsLm5hbWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGN1cnJlbnRWYWx1ZSgpOiBDb250cmFjdC5EYXRhVmFsdWUge1xyXG4gICAgcmV0dXJuIHRoaXMucGFyYW1ldGVySW1wbC5jdXJyZW50VmFsdWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGRhdGFUeXBlKCk6IENvbnRyYWN0LkRhdGFUeXBlIHtcclxuICAgIHJldHVybiB0aGlzLnBhcmFtZXRlckltcGwuZGF0YVR5cGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGFsbG93YWJsZVZhbHVlcygpOiBDb250cmFjdC5QYXJhbWV0ZXJEb21haW5SZXN0cmljdGlvbiB7XHJcbiAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJJbXBsLmFsbG93YWJsZVZhbHVlcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGFuZ2VWYWx1ZUFzeW5jKG5ld1ZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgRGF0ZSk6IFByb21pc2U8Q29udHJhY3QuRGF0YVZhbHVlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJJbXBsLmNoYW5nZVZhbHVlQXN5bmMobmV3VmFsdWUpO1xyXG4gIH1cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBEOi9kZXYvdHlwZXNjcmlwdC9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvUGFyYW1ldGVyLnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcclxuXHJcbmV4cG9ydCBjbGFzcyBQb2ludCBpbXBsZW1lbnRzIENvbnRyYWN0LlBvaW50IHtcclxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBfeDogbnVtYmVyLCBwcml2YXRlIF95OiBudW1iZXIpIHsgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl94O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCB5KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5feTtcclxuICB9XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogRDovZGV2L3R5cGVzY3JpcHQvanMtYXBpL2FwaS1zaGFyZWQvc3JjL1BvaW50LnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcclxuXHJcbmV4cG9ydCBjbGFzcyBTaXplIGltcGxlbWVudHMgQ29udHJhY3QuU2l6ZSB7XHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgX2hlaWdodDogbnVtYmVyLCBwcml2YXRlIF93aWR0aDogbnVtYmVyKSB7IH1cclxuXHJcbiAgcHVibGljIGdldCBoZWlnaHQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9oZWlnaHQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHdpZHRoKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fd2lkdGg7XHJcbiAgfVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi90eXBlc2NyaXB0L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9TaXplLnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcclxuXHJcbmV4cG9ydCBjbGFzcyBEYXRhVGFibGUgaW1wbGVtZW50cyBDb250cmFjdC5EYXRhVGFibGUge1xyXG4gIHByaXZhdGUgX25hbWU6IHN0cmluZztcclxuXHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfZGF0YTogQXJyYXk8QXJyYXk8Q29udHJhY3QuRGF0YVZhbHVlPj4sXHJcbiAgICBwcml2YXRlIF9jb2x1bW5zOiBBcnJheTxDb250cmFjdC5Db2x1bW4+LFxyXG4gICAgcHJpdmF0ZSBfdG90YWxSb3dDb3VudDogbnVtYmVyLFxyXG4gICAgcHJpdmF0ZSBfaXNTdW1tYXJ5RGF0YTogYm9vbGVhbixcclxuICAgIHByaXZhdGUgX21hcmtzSW5mbz86IEFycmF5PE1hcmtJbmZvPikge1xyXG4gICAgICAgIC8vIFRPRE86IGdldCByaWQgb2YgdGhpcyBpbiByZWRlc2lnbi5cclxuICAgICAgICB0aGlzLl9uYW1lID0gX2lzU3VtbWFyeURhdGEgPyAnU3VtbWFyeSBEYXRhIFRhYmxlJyA6ICdVbmRlcmx5aW5nIERhdGEgVGFibGUnO1xyXG4gICAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IG5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9uYW1lO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBkYXRhKCk6IEFycmF5PEFycmF5PENvbnRyYWN0LkRhdGFWYWx1ZT4+IHtcclxuICAgIHJldHVybiB0aGlzLl9kYXRhO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjb2x1bW5zKCk6IEFycmF5PENvbnRyYWN0LkNvbHVtbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbHVtbnM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IG1hcmtzSW5mbygpOiBBcnJheTxDb250cmFjdC5NYXJrSW5mbz4gfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX21hcmtzSW5mbztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgdG90YWxSb3dDb3VudCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RvdGFsUm93Q291bnQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGlzU3VtbWFyeURhdGEoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5faXNTdW1tYXJ5RGF0YTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBNYXJrSW5mbyBpbXBsZW1lbnRzIENvbnRyYWN0Lk1hcmtJbmZvIHtcclxuICBwdWJsaWMgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF90eXBlOiBDb250cmFjdC5NYXJrVHlwZSxcclxuICAgIHByaXZhdGUgX2NvbG9yOiBzdHJpbmcsXHJcbiAgICBwcml2YXRlIF90dXBsZUlkPzogTnVtYmVyXHJcbiAgKSB7fVxyXG5cclxuICBwdWJsaWMgZ2V0IHR5cGUoKTogQ29udHJhY3QuTWFya1R5cGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX3R5cGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNvbG9yKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29sb3I7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHR1cGxlSWQoKTogTnVtYmVyIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl90dXBsZUlkO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENvbHVtbiBpbXBsZW1lbnRzIENvbnRyYWN0LkNvbHVtbiB7XHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfZmllbGROYW1lOiBzdHJpbmcsXHJcbiAgICBwcml2YXRlIF9kYXRhVHlwZTogQ29udHJhY3QuRGF0YVR5cGUsIC8vIFRPRE86IHRoaXMgc2hvdWRsIGJlIGFuIGVudW0gdHlwZVxyXG4gICAgcHJpdmF0ZSBfaXNSZWZlcmVuY2VkOiBib29sZWFuLFxyXG4gICAgcHJpdmF0ZSBfaW5kZXg6IG51bWJlcikge31cclxuXHJcbiAgcHVibGljIGdldCBmaWVsZE5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9maWVsZE5hbWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGRhdGFUeXBlKCk6IENvbnRyYWN0LkRhdGFUeXBlIHtcclxuICAgIHJldHVybiB0aGlzLl9kYXRhVHlwZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaXNSZWZlcmVuY2VkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lzUmVmZXJlbmNlZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaW5kZXgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9pbmRleDtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBEYXRhVmFsdWUgaW1wbGVtZW50cyBDb250cmFjdC5EYXRhVmFsdWUge1xyXG4gIC8qIHRzbGludDpkaXNhYmxlOm5vLWFueSAqL1xyXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX3ZhbHVlOiBhbnksXHJcbiAgICBwcml2YXRlIF9mb3JtYXR0ZWRWYWx1ZTogc3RyaW5nKSB7fVxyXG5cclxuICBwdWJsaWMgZ2V0IHZhbHVlKCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGZvcm1hdHRlZFZhbHVlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fZm9ybWF0dGVkVmFsdWU7XHJcbiAgfVxyXG4gIC8qIHRzbGludDplbmFibGU6bm8tYW55ICovXHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogRDovZGV2L3R5cGVzY3JpcHQvanMtYXBpL2FwaS1zaGFyZWQvc3JjL01vZGVscy9HZXREYXRhTW9kZWxzLnRzXG4gKiovIiwiZXhwb3J0IGNsYXNzIFRhYmxlYXVFeGNlcHRpb25zIHtcbiAgLy8gVE9ETywgQXBpRXJyb3JDb2RlcyBuZWVkIHRvIGJlIGFkZGVkIHRvIGV4dGVybmFsIGludGVyZmFjZXMuXG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBEOi9kZXYvdHlwZXNjcmlwdC9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvRXhjZXB0aW9ucy9UYWJsZWF1RXhjZXB0aW9ucy50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XHJcblxyXG5pbXBvcnQgeyBUYWJsZWF1V29ya3NoZWV0RXZlbnQgfSBmcm9tICcuL1RhYmxlYXVXb3Jrc2hlZXRFdmVudCc7XHJcblxyXG5leHBvcnQgY2xhc3MgRmlsdGVyQ2hhbmdlZEV2ZW50IGV4dGVuZHMgVGFibGVhdVdvcmtzaGVldEV2ZW50IGltcGxlbWVudHMgQ29udHJhY3QuRmlsdGVyQ2hhbmdlZEV2ZW50IHtcclxuICBwdWJsaWMgY29uc3RydWN0b3Iod29ya3NoZWV0OiBDb250cmFjdC5Xb3Jrc2hlZXQsIHByaXZhdGUgX2ZpZWxkTmFtZTogc3RyaW5nKSB7XHJcbiAgICBzdXBlcihDb250cmFjdC5UYWJsZWF1RXZlbnRUeXBlLkZpbHRlckNoYW5nZWQsIHdvcmtzaGVldCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGZpZWxkTmFtZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkTmFtZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRGaWx0ZXJBc3luYygpOiBQcm9taXNlPENvbnRyYWN0LkZpbHRlcj4ge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKCdBUEkgY2FsbCBub3QgeWV0IGltcGxtZW1lbnRlZCcpO1xyXG4gIH1cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBEOi9kZXYvdHlwZXNjcmlwdC9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvRXZlbnRzL0ZpbHRlckNoYW5nZWRFdmVudC50c1xuICoqLyIsIi8qKlxyXG4gKiBUaGlzIGlzIHlvdXIgbWFpbi4gVGhpcyBpcyB3aGVyZSB5b3UgcmUtZXhwb3J0IGV2ZXJ5dGhpbmcgeW91IHdhbnQgdG8gYmUgcHVibGljbHkgYXZhaWxhYmxlLlxyXG4gKlxyXG4gKiBUaGUgYnVpbGQgZW5mb3JjZXMgdGhhdCB0aGUgZmlsZSBoYXMgdGhlIHNhbWUgbmFtZSBhcyB0aGUgZ2xvYmFsIHZhcmlhYmxlIHRoYXQgaXMgZXhwb3J0ZWQuXHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9BbmFseXRpY3NJbnRlcmZhY2VzJztcclxuZXhwb3J0ICogZnJvbSAnLi9EYXRhU291cmNlSW50ZXJmYWNlcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vRGF0YVRhYmxlSW50ZXJmYWNlcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vRW5jb2RpbmdJbnRlcmZhY2VzJztcclxuZXhwb3J0ICogZnJvbSAnLi9FbnVtcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vRXZlbnRJbnRlcmZhY2VzJztcclxuZXhwb3J0ICogZnJvbSAnLi9GaWx0ZXJJbnRlcmZhY2VzJztcclxuZXhwb3J0ICogZnJvbSAnLi9TZWxlY3Rpb25JbnRlcmZhY2VzJztcclxuZXhwb3J0ICogZnJvbSAnLi9QYXJhbWV0ZXJJbnRlcmZhY2VzJztcclxuZXhwb3J0ICogZnJvbSAnLi9TZWxlY3Rpb25JbnRlcmZhY2VzJztcclxuZXhwb3J0ICogZnJvbSAnLi9TaGVldEludGVyZmFjZXMnO1xyXG5cclxuZXhwb3J0IHsgQWRkSW4gfSBmcm9tICcuL05hbWVzcGFjZXMvQWRkSW4nO1xyXG5leHBvcnQgeyBEYXNoYm9hcmRDb250ZW50IH0gZnJvbSAnLi9OYW1lc3BhY2VzL0Rhc2hib2FyZENvbnRlbnQnO1xyXG5leHBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4vTmFtZXNwYWNlcy9FbnZpcm9ubWVudCc7XHJcbmV4cG9ydCB7IFNldHRpbmdzIH0gZnJvbSAnLi9OYW1lc3BhY2VzL1NldHRpbmdzJztcclxuZXhwb3J0IHsgVUkgfSBmcm9tICcuL05hbWVzcGFjZXMvVUknO1xyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBEOi9kZXYvdHlwZXNjcmlwdC9qcy1hcGkvYXBpLWV4dGVybmFsLWNvbnRyYWN0L3NyYy9BcGlFeHRlcm5hbENvbnRyYWN0LnRzXG4gKiovIiwiLy8gQWxsIGVudW0gdmFsdWVzIG1hZGUgYXZhaWxhYmxlIHRvIEFkZEluIGRldmVsb3BlcnMuXHJcbi8vIEVudW1zIHNob3VsZCBiZSBrZXB0IGluIGFscGhhYmV0aWNhbCBvcmRlci5cclxuXHJcbi8qKlxyXG4gKiBUaGUgY29udGV4dCBpbiB3aGljaCB0aGUgQWRkSW4gaXMgY3VycmVudGx5IHJ1bm5pbmcuXHJcbiAqL1xyXG5leHBvcnQgZW51bSBBZGRJbkNvbnRleHQge1xyXG4gIERlc2t0b3AgPSAnZGVza3RvcCcsXHJcbiAgU2VydmVyID0gJ3NlcnZlcidcclxufVxyXG5cclxuLyoqXHJcbiAqIFRoZSBtb2RlIGluIHdoaWNoIHRoZSBBZGRJbiBpcyBjdXJyZW50bHkgcnVubmluZy5cclxuICovXHJcbmV4cG9ydCBlbnVtIEFkZEluTW9kZSB7XHJcbiAgQXV0aG9yaW5nID0gJ2F1dGhvcmluZycsXHJcbiAgVmlld2luZyA9ICd2aWV3aW5nJ1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBBbmFseXRpY3NPYmplY3RUeXBlIHtcclxuICBDbHVzdGVyID0gJ2NsdXN0ZXInLFxyXG4gIEZvcmVjYXN0ID0gJ2ZvcmVjYXN0JyxcclxuICBUcmVuZExpbmUgPSAndHJlbmQtbGluZSdcclxufVxyXG5cclxuZXhwb3J0IGVudW0gQ29sdW1uVHlwZSB7XHJcbiAgRGlzY3JldGUgPSAnZGlzY3JldGUnLFxyXG4gIENvbnRpbnVvdXMgPSAnY29udGludW91cydcclxufVxyXG5cclxuLyoqXHJcbiAqIFdoYXQgdGhlIG9iamVjdCByZXByZXNlbnRzIGluIGEgZGFzaGJvYXJkLlxyXG4gKi9cclxuZXhwb3J0IGVudW0gRGFzaGJvYXJkT2JqZWN0VHlwZSB7XHJcbiAgQmxhbmsgPSAnYmxhbmsnLFxyXG4gIFdvcmtzaGVldCA9ICd3b3Jrc2hlZXQnLFxyXG4gIFF1aWNrRmlsdGVyID0gJ3F1aWNrLWZpbHRlcicsXHJcbiAgUGFyYW1ldGVyQ29udHJvbCA9ICdwYXJhbWV0ZXItY29udHJvbCcsXHJcbiAgUGFnZUZpbHRlciA9ICdwYWdlLWZpbHRlcicsXHJcbiAgTGVnZW5kID0gJ2xlZ2VuZCcsXHJcbiAgVGl0bGUgPSAndGl0bGUnLFxyXG4gIFRleHQgPSAndGV4dCcsXHJcbiAgSW1hZ2UgPSAnaW1hZ2UnLFxyXG4gIFdlYlBhZ2UgPSAnd2ViLXBhZ2UnLFxyXG4gIEFkZEluID0gJ2FkZGluJ1xyXG59XHJcblxyXG4vKipcclxuICogVGhlIGRpZmZlcmVudCB0eXBlcyBvZiBkYXRhIGEgdmFsdWUgY2FuIGhhdmVcclxuICovXHJcbmV4cG9ydCBlbnVtIERhdGFUeXBlIHtcclxuICBTdHJpbmcgPSAnc3RyaW5nJyxcclxuICBJbnQgPSAnaW50JyxcclxuICBGbG9hdCA9ICdmbG9hdCcsXHJcbiAgQm9vbCA9ICdib29sJyxcclxuICBEYXRlID0gJ2RhdGUnLFxyXG4gIERhdGVUaW1lID0gJ2RhdGUtdGltZScsXHJcbiAgU3BhdGlhbCA9ICdzcGF0aWFsJ1xyXG59XHJcblxyXG4vKipcclxuICogVmFsaWQgZGF0ZSByYW5nZXMgZm9yIGEgcmVsYXRpdmUgZGF0ZSBmaWx0ZXIuXHJcbiAqL1xyXG5leHBvcnQgZW51bSBEYXRlUmFuZ2VUeXBlIHtcclxuICBMYXN0ID0gJ2xhc3QnLFxyXG4gIExhc3ROID0gJ2xhc3QtbicsXHJcbiAgTmV4dCA9ICduZXh0JyxcclxuICBOZXh0TiA9ICduZXh0LW4nLFxyXG4gIEN1cnJlbnQgPSAnY3VycmVudCcsXHJcbiAgVG9EYXRlID0gJ3RvLWRhdGUnXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUeXBlcyBvZiBkaWFsb2cgZXZlbnQgZm9yIGV2ZW50IGxpc3RlbmluZyBiZXR3ZWVuIGEgcGFyZW50IEFkZEluIGFuZCBhIHBvcHVwIGRpYWxvZy5cclxuICovXHJcbmV4cG9ydCBlbnVtIERpYWxvZ0V2ZW50VHlwZSB7XHJcbiAgRGlhbG9nTWVzc2FnZSA9ICdkaWFsb2ctbWVzc2FnZScsXHJcbiAgRGlhbG9nRXZlbnQgPSAnZGlhbG9nLWV2ZW50J1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBFbmNvZGluZ1R5cGUge1xyXG4gIENvbHVtbiA9ICdjb2x1bW4nLFxyXG4gIFJvdyA9ICdyb3cnLFxyXG4gIFBhZ2UgPSAncGFnZScsXHJcbiAgRmlsdGVyID0gJ2ZpbHRlcicsXHJcbiAgTWFya3NUeXBlID0gJ21hcmtzLXR5cGUnLFxyXG4gIE1lYXN1cmVWYWx1ZXMgPSAnbWVhc3VyZS12YWx1ZXMnLFxyXG4gIENvbG9yID0gJ2NvbG9yJyxcclxuICBTaXplID0gJ3NpemUnLFxyXG4gIExhYmVsID0gJ2xhYmVsJyxcclxuICBEZXRhaWwgPSAnZGV0YWlsJyxcclxuICBUb29sdGlwID0gJ3Rvb2x0aXAnLFxyXG4gIFNoYXBlID0gJ3NoYXBlJyxcclxuICBQYXRoID0gJ3BhdGgnLFxyXG4gIEFuZ2xlID0gJ2FuZ2xlJ1xyXG59XHJcblxyXG4vKipcclxuICogQWxsIGVycm9yIGNvZGVzIHVzZWQgYnkgdGhlIEFkZEluIEFQSS5cclxuICovXHJcbmV4cG9ydCBlbnVtIEVycm9yQ29kZXMge1xyXG4gIC8qKlxyXG4gICAqIE9ubHkgb25lIGRpYWxvZyBjYW4gYmUgb3BlbmVkIGF0IHRpbWUgd2l0aCB0aGUgVUkgbmFtZXNwYWNlIGZ1bmN0aW9uYWxpdHkuXHJcbiAgICovXHJcbiAgRGlhbG9nQWxyZWFkeU9wZW4gPSAnZGlhbG9nLWFscmVhZHktb3BlbicsXHJcbiAgLyoqXHJcbiAgICogVGhlIG9wZW4gZGlhbG9nIHdhcyBjbG9zZWQgYnkgdGhlIHVzZXIuXHJcbiAgICovXHJcbiAgRGlhbG9nQ2xvc2VkQnlVc2VyID0gJ2RpYWxvZy1jbG9zZWQtYnktdXNlcicsXHJcbiAgLyoqXHJcbiAgICogQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgYXR0ZW1wdGluZyB0byBwZXJmb3JtIGEgZmlsdGVyIG9wZXJhdGlvbi5cclxuICAgKi9cclxuICBGaWx0ZXJDYW5ub3RCZVBlcmZvcm1lZCA9ICdmaWx0ZXItY2Fubm90LWJlLXBlcmZvcm1lZCcsXHJcbiAgLyoqXHJcbiAgICogQW4gZXJyb3Igb2NjdXJyZWQgd2l0aGluIHRoZSBUYWJsZWF1IEFkZEluIEFQSS4gQ29udGFjdCBUYWJsZWF1IFN1cHBvcnQuXHJcbiAgICovXHJcbiAgSW50ZXJuYWxFcnJvciA9ICdpbnRlcm5hbC1lcnJvcicsXHJcbiAgLyoqXHJcbiAgICogQW4gaW52YWxpZCBhZ2dyZWdhdGlvbiB3YXMgc3BlY2lmaWVkIGZvciB0aGUgZmlsdGVyLCBzdWNoIGFzIHNldHRpbmcgYSByYW5nZSBmaWx0ZXIgdG8gXCJTVU0oU2FsZXMpXCIgaW5zdGVhZCBvZiBcIlNhbGVzXCIuXHJcbiAgICovXHJcbiAgSW52YWxpZEFnZ3JlZ2F0aW9uRmllbGROYW1lID0gJ2ludmFsaWQtYWdncmVnYXRpb24tZmllbGQtbmFtZScsXHJcbiAgLyoqXHJcbiAgICogQSBkaWFsb2cgbXVzdCBmaXJzdCBsYXVuY2ggdG8sIGFuZCBzZW5kIG1lc3NhZ2VzIGZyb20sIHRoZSBzYW1lIGRvbWFpbiBhcyB0aGUgcGFyZW50IEFkZEluLlxyXG4gICAqL1xyXG4gIEludmFsaWREb21haW5EaWFsb2cgPSAnaW52YWxpZC1kaWFsb2ctZG9tYWluJyxcclxuICAvKipcclxuICAgKiBBbiBpbnZhbGlkIGRhdGUgd2FzIHNwZWNpZmllZCBpbiBhIG1ldGhvZCB0aGF0IHJlcXVpcmVkIGEgZGF0ZSBwYXJhbWV0ZXIuXHJcbiAgICovXHJcbiAgSW52YWxpZERhdGVQYXJhbWV0ZXIgPSAnaW52YWxpZC1kYXRlLXBhcmFtZXRlcicsXHJcbiAgLyoqXHJcbiAgICogQSBmaWx0ZXIgb3BlcmF0aW9uIHdhcyBhdHRlbXB0ZWQgb24gYSBmaWVsZCB0aGF0IGRvZXMgbm90IGV4aXN0IGluIHRoZSBkYXRhIHNvdXJjZS5cclxuICAgKi9cclxuICBJbnZhbGlkRmlsdGVyRmllbGROYW1lID0gJ2ludmFsaWQtZmlsdGVyLWZpZWxkLW5hbWUnLFxyXG4gIC8qKlxyXG4gICAqIEEgZmlsdGVyIG9wZXJhdGlvbiB3YXMgYXR0ZW1wdGVkIHVzaW5nIGEgdmFsdWUgdGhhdCBpcyB0aGUgd3JvbmcgZGF0YSB0eXBlIG9yIGZvcm1hdC5cclxuICAgKi9cclxuICBJbnZhbGlkRmlsdGVyRmllbGRWYWx1ZSA9ICdpbnZhbGlkLWZpbHRlci1maWVsZC12YWx1ZScsXHJcbiAgLyoqXHJcbiAgICogQSBwYXJhbWV0ZXIgaXMgbm90IHRoZSBjb3JyZWN0IGRhdGEgdHlwZSBvciBmb3JtYXQuIFRoZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXIgaXMgc3BlY2lmaWVkIGluIHRoZSBFcnJvci5tZXNzYWdlIGZpZWxkLlxyXG4gICAqL1xyXG4gIEludmFsaWRQYXJhbWV0ZXIgPSAnaW52YWxpZC1wYXJhbWV0ZXInLFxyXG4gIC8qKlxyXG4gICAqIEFuIGludmFsaWQgZGF0ZSB2YWx1ZSB3YXMgc3BlY2lmaWVkIGluIGEgU2hlZXQuc2VsZWN0TWFya3NBc3luYygpIGNhbGwgZm9yIGEgZGF0ZSBmaWVsZC5cclxuICAgKi9cclxuICBJbnZhbGlkU2VsZWN0aW9uRGF0ZSA9ICdpbnZhbGlkLXNlbGVjdGlvbi1kYXRlJyxcclxuICAvKipcclxuICAgKiBBIGZpZWxkIHdhcyBzcGVjaWZpZWQgaW4gYSBTaGVldC5zZWxlY3RNYXJrc0FzeW5jKCkgY2FsbCB0aGF0IGRvZXMgbm90IGV4aXN0IGluIHRoZSBkYXRhIHNvdXJjZS5cclxuICAgKi9cclxuICBJbnZhbGlkU2VsZWN0aW9uRmllbGROYW1lID0gJ2ludmFsaWQtc2VsZWN0aW9uLWZpZWxkLW5hbWUnLFxyXG4gIC8qKlxyXG4gICAqIEFuIGludmFsaWQgdmFsdWUgd2FzIHNwZWNpZmllZCBpbiBhIFNoZWV0LnNlbGVjdE1hcmtzQXN5bmMoKSBjYWxsLlxyXG4gICAqL1xyXG4gIEludmFsaWRTZWxlY3Rpb25WYWx1ZSA9ICdpbnZhbGlkLXNlbGVjdGlvbi12YWx1ZScsXHJcbiAgLyoqXHJcbiAgICogQSByZXF1aXJlZCBwYXJhbWV0ZXIgd2FzIG5vdCBzcGVjaWZpZWQsIG51bGwsIG9yIGFuIGVtcHR5IHN0cmluZy9hcnJheS5cclxuICAgKi9cclxuICBOdWxsT3JFbXB0eVBhcmFtZXRlciA9ICdudWxsLW9yLWVtcHR5LXBhcmFtZXRlcicsXHJcbiAgLyoqXHJcbiAgICogQW4gdW5rbm93biBldmVudCBuYW1lIHdhcyBzcGVjaWZpZWQgaW4gdGhlIGNhbGwgdG8gVml6LmFkZEV2ZW50TGlzdGVuZXJvciBWaXoucmVtb3ZlRXZlbnRMaXN0ZW5lci5cclxuICAgKi9cclxuICBVbnN1cHBvcnRlZEV2ZW50TmFtZSA9ICd1bnN1cHBvcnRlZC1ldmVudC1uYW1lJ1xyXG59XHJcblxyXG4vKipcclxuICogIFR5cGUgb2YgYWdncmVnYXRpb24gb24gYSBmaWVsZC5cclxuICovXHJcbmV4cG9ydCBlbnVtIEZpZWxkQWdncmVnYXRpb25UeXBlIHtcclxuICBTdW0gPSAnc3VtJyxcclxuICBBdmcgPSAnYXZnJyxcclxuICBNaW4gPSAnbWluJyxcclxuICBNYXggPSAnbWF4JyxcclxuICBTdGRldiA9ICdzdGRldicsXHJcbiAgU3RkZXZwID0gJ3N0ZGV2cCcsXHJcbiAgVmFyID0gJ3ZhcicsXHJcbiAgVmFycCA9ICd2YXJwJyxcclxuICBDb3VudCA9ICdjb3VudCcsXHJcbiAgQ291bnRkID0gJ2NvdW50ZCcsXHJcbiAgTWVkaWFuID0gJ21lZGlhbicsXHJcbiAgQXR0ciA9ICdhdHRyJyxcclxuICBOb25lID0gJ25vbmUnLFxyXG4gIFllYXIgPSAneWVhcicsXHJcbiAgUXRyID0gJ3F0cicsXHJcbiAgTW9udGggPSAnbW9udGgnLFxyXG4gIERheSA9ICdkYXknLFxyXG4gIEhvdXIgPSAnaG91cicsXHJcbiAgTWludXRlID0gJ21pbnV0ZScsXHJcbiAgU2Vjb25kID0gJ3NlY29uZCcsXHJcbiAgV2VlayA9ICd3ZWVrJyxcclxuICBXZWVrZGF5ID0gJ3dlZWtkYXknLFxyXG4gIE1vbnRoWWVhciA9ICdtb250aC15ZWFyJyxcclxuICBNZHkgPSAnbWR5JyxcclxuICBFbmQgPSAnZW5kJyxcclxuICBUcnVuY1llYXIgPSAndHJ1bmMteWVhcicsXHJcbiAgVHJ1bmNRdHIgPSAndHJ1bmMtcXRyJyxcclxuICBUcnVuY01vbnRoID0gJ3RydW5jLW1vbnRoJyxcclxuICBUcnVuY1dlZWsgPSAndHJ1bmMtd2VlaycsXHJcbiAgVHJ1bmNEYXkgPSAndHJ1bmMtZGF5JyxcclxuICBUcnVuY0hvdXIgPSAndHJ1bmMtaG91cicsXHJcbiAgVHJ1bmNNaW51dGUgPSAndHJ1bmMtbWludXRlJyxcclxuICBUcnVuY1NlY29uZCA9ICd0cnVuYy1zZWNvbmQnLFxyXG4gIFF1YXJ0MSA9ICdxdWFydDEnLFxyXG4gIFF1YXJ0MyA9ICdxdWFydDMnLFxyXG4gIFNrZXduZXNzID0gJ3NrZXduZXNzJyxcclxuICBLdXJ0b3NpcyA9ICdrdXJ0b3NpcycsXHJcbiAgSW5PdXQgPSAnaW4tb3V0JyxcclxuICBVc2VyID0gJ3VzZXInXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSb2xlIG9mIGEgZmllbGQuXHJcbiAqL1xyXG5leHBvcnQgZW51bSBGaWVsZFJvbGVUeXBlIHtcclxuICBEaW1lbnNpb24gPSAnZGltZW5zaW9uJyxcclxuICBNZWFzdXJlID0gJ21lYXN1cmUnLFxyXG4gIFVua25vd24gPSAndW5rbm93bidcclxufVxyXG5cclxuLyoqXHJcbiAqIEFuIGVudW1lcmF0aW9uIG9mIHRoZSB2YWxpZCB0eXBlcyBvZiBmaWx0ZXJzIHRoYXQgY2FuIGJlIGFwcGxpZWQuXHJcbiAqL1xyXG5leHBvcnQgZW51bSBGaWx0ZXJUeXBlIHtcclxuICBDYXRlZ29yaWNhbCA9ICdjYXRlZ29yaWNhbCcsXHJcbiAgUmFuZ2UgPSAncmFuZ2UnLFxyXG4gIEhpZXJhcmNoaWNhbCA9ICdoaWVyYXJjaGljYWwnLFxyXG4gIFJlbGF0aXZlRGF0ZSA9ICdyZWxhdGl2ZS1kYXRlJ1xyXG59XHJcblxyXG4vKipcclxuICogVGhlIGRpZmZlcmVudCB1cGRhdGUgdHlwZXMgZm9yIGFwcGx5aW5nIGZpbHRlclxyXG4gKi9cclxuZXhwb3J0IGVudW0gRmlsdGVyVXBkYXRlVHlwZSB7XHJcbiAgQWRkID0gJ2FkZCcsXHJcbiAgQWxsID0gJ2FsbCcsXHJcbiAgUmVwbGFjZSA9ICdyZXBsYWNlJyxcclxuICBSZW1vdmUgPSAncmVtb3ZlJ1xyXG59XHJcblxyXG4vKipcclxuICogVGhlIGRvbWFpbiB0eXBlIGZvciBhIGZpbHRlclxyXG4gKi9cclxuZXhwb3J0IGVudW0gRmlsdGVyRG9tYWluVHlwZSB7XHJcbiAgLyoqXHJcbiAgICogVGhlIGRvbWFpbiB2YWx1ZXMgdGhhdCBhcmUgcmVsZXZhbnQgdG8gdGhlIHNwZWNpZmllZCBmaWx0ZXJcclxuICAgKiBpLmUuIHRoZSBkb21haW4gaXMgcmVzdHJpY3RlZCBieSBhIHByZXZpb3VzIGZpbHRlclxyXG4gICAqL1xyXG4gIFJlbGV2YW50ID0gJ3JlbGV2YW50JyxcclxuICAvKipcclxuICAgKiBsaXN0IG9mIGFsbCBwb3NzaWJsZSBkb21haW4gdmFsdWVzIGZyb20gZGF0YWJhc2VcclxuICAgKi9cclxuICBEYXRhYmFzZSA9ICdkYXRhYmFzZSdcclxufVxyXG5cclxuLyoqXHJcbiAqIFRoZSBvcHRpb24gZm9yIHNwZWNpZnlpbmcgd2hpY2ggdmFsdWVzIHRvIGluY2x1ZGUgZm9yIGZpbHRlcmluZ1xyXG4gKiBJbmRpY2F0ZXMgd2hhdCB0byBkbyB3aXRoIG51bGwgdmFsdWVzIGZvciBhIGdpdmVuIGZpbHRlciBvciBtYXJrIHNlbGVjdGlvbiBjYWxsLlxyXG4gKi9cclxuZXhwb3J0IGVudW0gRmlsdGVyTnVsbE9wdGlvbiB7XHJcbiAgTnVsbFZhbHVlcyA9ICdudWxsLXZhbHVlcycsXHJcbiAgTm9uTnVsbFZhbHVlcyA9ICdub24tbnVsbC12YWx1ZXMnLFxyXG4gIEFsbFZhbHVlcyA9ICdhbGwtdmFsdWVzJ1xyXG59XHJcblxyXG4vKipcclxuICogVHlwZSBvZiBtYXJrIGZvciBhIGdpdmVuIG1hcmtzIGNhcmQgaW4gYSB2aXouXHJcbiAqL1xyXG5leHBvcnQgZW51bSBNYXJrVHlwZSB7XHJcbiAgQmFyID0gJ2JhcicsXHJcbiAgTGluZSA9ICdsaW5lJyxcclxuICBBcmVhID0gJ2FyZWEnLFxyXG4gIFNxdWFyZSA9ICdzcXVhcmUnLFxyXG4gIENpcmNsZSA9ICdjaXJjbGUnLFxyXG4gIFNoYXBlID0gJ3NoYXBlJyxcclxuICBUZXh0ID0gJ3RleHQnLFxyXG4gIE1hcCA9ICdtYXAnLFxyXG4gIFBpZSA9ICdwaWUnLFxyXG4gIEdhbnR0QmFyID0gJ2dhbnR0LWJhcicsXHJcbiAgUG9seWdvbiA9ICdwb2x5Z29uJ1xyXG59XHJcblxyXG4vKipcclxuICogQW4gZW51bWVyYXRpb24gZGVzY3JpYmluZyB0aGUgZGlmZmVyZW50IHR5cGVzIG9mIGFsbG93YWJsZSB2YWx1ZXMuXHJcbiAqIFRoaXMgaXMgdXNlZCBmb3IgcmVzdHJpY3RpbmcgdGhlIGRvbWFpbiBvZiBhIHBhcmFtZXRlclxyXG4gKi9cclxuZXhwb3J0IGVudW0gUGFyYW1ldGVyVmFsdWVUeXBlIHtcclxuICBBbGwgPSAnYWxsJyxcclxuICBMaXN0ID0gJ2xpc3QnLFxyXG4gIFJhbmdlID0gJ3JhbmdlJ1xyXG59XHJcblxyXG4vKipcclxuICogRGF0ZSBwZXJpb2QgdXNlZCBpbiBmaWx0ZXJzIGFuZCBpbiBwYXJhbWV0ZXJzLlxyXG4gKi9cclxuZXhwb3J0IGVudW0gUGVyaW9kVHlwZSB7XHJcbiAgWWVhcnMgPSAneWVhcnMnLFxyXG4gIFF1YXJ0ZXJzID0gJ3F1YXJ0ZXJzJyxcclxuICBNb250aHMgPSAnbW9udGhzJyxcclxuICBXZWVrcyA9ICd3ZWVrcycsXHJcbiAgRGF5cyA9ICdkYXlzJyxcclxuICBIb3VycyA9ICdob3VycycsXHJcbiAgTWludXRlcyA9ICdtaW51dGVzJyxcclxuICBTZWNvbmRzID0gJ3NlY29uZHMnXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFF1aWNrVGFibGVDYWxjVHlwZSB7XHJcbiAgUnVubmluZ1RvdGFsID0gJ3J1bm5pbmctdG90YWwnLFxyXG4gIERpZmZlcmVuY2UgPSAnZGlmZmVyZW5jZScsXHJcbiAgUGVyY2VudERpZmZlcmVuY2UgPSAncGVyY2VudC1kaWZmZXJlbmNlJyxcclxuICBQZXJjZW50T2ZUb3RhbCA9ICdwZXJjZW50LW9mLXRvdGFsJyxcclxuICBSYW5rID0gJ3JhbmsnLFxyXG4gIFBlcmNlbnRpbGUgPSAncGVyY2VudGlsZScsXHJcbiAgTW92aW5nQXZlcmFnZSA9ICdtb3ZpbmctYXZlcmFnZScsXHJcbiAgWVREVG90YWwgPSAneXRkLXRvdGFsJyxcclxuICBDb21wb3VuZEdyb3d0aFJhdGUgPSAnY29tcG91bmQtZ3Jvd3RoLXJhdGUnLFxyXG4gIFllYXJPdmVyWWVhckdyb3d0aCA9ICd5ZWFyLW92ZXIteWVhci1ncm93dGgnLFxyXG4gIFlUREdyb3d0aCA9ICd5dGQtZ3Jvd3RoJyxcclxuICBVbmRlZmluZWQgPSAndW5kZWZpbmVkJ1xyXG59XHJcblxyXG4vKipcclxuICogRW51bSBmb3Igc3BlY2lmeWluZyB0aGUgc2VsZWN0aW9uIHR5cGUgZm9yIHNlbGVjdCBtYXJrcyBhcGkuXHJcbiAqL1xyXG5leHBvcnQgZW51bSBTZWxlY3Rpb25VcGRhdGVUeXBlIHtcclxuICBSZXBsYWNlID0gJ3NlbGVjdC1yZXBsYWNlJyxcclxuICBBZGQgPSAnc2VsZWN0LWFkZCcsXHJcbiAgUmVtb3ZlID0gJ3NlbGVjdC1yZW1vdmUnXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUaGUgdHlwZSBvZiBzaGVldCBhIFNoZWV0IG9iamVjdCByZXByZXNlbnRzXHJcbiAqL1xyXG5leHBvcnQgZW51bSBTaGVldFR5cGUge1xyXG4gIERhc2hib2FyZCA9ICdkYXNoYm9hcmQnLFxyXG4gIFN0b3J5ID0gJ3N0b3J5JyxcclxuICBXb3Jrc2hlZXQgPSAnd29ya3NoZWV0J1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBTb3J0RGlyZWN0aW9uIHtcclxuICBJbmNyZWFzaW5nID0gJ2luY3JlYXNpbmcnLFxyXG4gIERlY3JlYXNpbmcgPSAnZGVjcmVhc2luZydcclxufVxyXG5cclxuLyoqXHJcbiAqIFJlcHJlc2VudHMgYSBjZXJ0YWluIHR5cGUgb2YgZXZlbnQgd2hpY2ggY2FuIGJlIGxpc3RlbmVkIGZvclxyXG4gKi9cclxuZXhwb3J0IGVudW0gVGFibGVhdUV2ZW50VHlwZSB7XHJcbiAgLyoqIFJhaXNlZCB3aGVuIGFueSBmaWx0ZXIgaGFzIGNoYW5nZWQgc3RhdGUuKi9cclxuICBGaWx0ZXJDaGFuZ2VkID0gJ2ZpbHRlci1jaGFuZ2VkJyxcclxuXHJcbiAgLyoqIFRoZSBzZWxlY3RlZCBtYXJrcyBvbiBhIHZpc3VhbGl6YXRpb24gaGFzIGNoYW5nZWQgKi9cclxuICBNYXJrU2VsZWN0aW9uQ2hhbmdlZCA9ICdtYXJrLXNlbGVjdGlvbi1jaGFuZ2VkJyxcclxuXHJcbiAgLyoqIEEgcGFyYW1ldGVyIGhhcyBoYWQgaXRzIHZhbHVlIG1vZGlmaWVkICovXHJcbiAgUGFyYW1ldGVyQ2hhbmdlZCA9ICdwYXJhbWV0ZXItY2hhbmdlZCdcclxufVxyXG5cclxuZXhwb3J0IGVudW0gVHJlbmRMaW5lTW9kZWxUeXBlIHtcclxuICBMaW5lYXIgPSAnbGluZWFyJyxcclxuICBMb2dhcml0aG1pYyA9ICdsb2dhcml0aG1pYycsXHJcbiAgRXhwb25lbnRpYWwgPSAnZXhwb25lbnRpYWwnLFxyXG4gIFBvbHlub21pYWwgPSAncG9seW5vbWlhbCdcclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBEOi9kZXYvdHlwZXNjcmlwdC9qcy1hcGkvYXBpLWV4dGVybmFsLWNvbnRyYWN0L3NyYy9FbnVtcy50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XHJcblxyXG5pbXBvcnQgeyBUYWJsZWF1U2hlZXRFdmVudCB9IGZyb20gJy4vVGFibGVhdVNoZWV0RXZlbnQnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFRhYmxlYXVXb3Jrc2hlZXRFdmVudCBleHRlbmRzIFRhYmxlYXVTaGVldEV2ZW50IGltcGxlbWVudHMgQ29udHJhY3QuVGFibGVhdVdvcmtzaGVldEV2ZW50IHtcclxuICBwcml2YXRlIF93b3Jrc2hlZXQ6IENvbnRyYWN0LldvcmtzaGVldDtcclxuXHJcbiAgcHVibGljIGdldCB3b3Jrc2hlZXQoKTogQ29udHJhY3QuV29ya3NoZWV0IHtcclxuICAgIHJldHVybiB0aGlzLl93b3Jrc2hlZXQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY29uc3RydWN0b3IodHlwZTogQ29udHJhY3QuVGFibGVhdUV2ZW50VHlwZSwgd29ya3NoZWV0OiBDb250cmFjdC5Xb3Jrc2hlZXQpIHtcclxuICAgIHN1cGVyKHR5cGUsIHdvcmtzaGVldCk7XHJcblxyXG4gICAgdGhpcy5fd29ya3NoZWV0ID0gd29ya3NoZWV0O1xyXG4gIH1cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBEOi9kZXYvdHlwZXNjcmlwdC9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvRXZlbnRzL1RhYmxlYXVXb3Jrc2hlZXRFdmVudC50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XHJcblxyXG5pbXBvcnQgeyBUYWJsZWF1RXZlbnQgfSBmcm9tICcuL1RhYmxlYXVFdmVudCc7XHJcblxyXG5leHBvcnQgY2xhc3MgVGFibGVhdVNoZWV0RXZlbnQgZXh0ZW5kcyBUYWJsZWF1RXZlbnQgaW1wbGVtZW50cyBDb250cmFjdC5UYWJsZWF1U2hlZXRFdmVudCB7XHJcbiAgcHJpdmF0ZSBfc2hlZXQ6IENvbnRyYWN0LlNoZWV0O1xyXG5cclxuICBwdWJsaWMgZ2V0IHNoZWV0KCk6IENvbnRyYWN0LlNoZWV0IHtcclxuICAgIHJldHVybiB0aGlzLl9zaGVldDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcih0eXBlOiBDb250cmFjdC5UYWJsZWF1RXZlbnRUeXBlLCBzaGVldDogQ29udHJhY3QuU2hlZXQpIHtcclxuICAgIHN1cGVyKHR5cGUpO1xyXG5cclxuICAgIHRoaXMuX3NoZWV0ID0gc2hlZXQ7XHJcbiAgfVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi90eXBlc2NyaXB0L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9FdmVudHMvVGFibGVhdVNoZWV0RXZlbnQudHNcbiAqKi8iLCJpbXBvcnQgKiBhcyBDb250cmFjdCBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFRhYmxlYXVFdmVudCBpbXBsZW1lbnRzIENvbnRyYWN0LlRhYmxlYXVFdmVudCB7XHJcbiAgcHJpdmF0ZSBfdHlwZTogQ29udHJhY3QuVGFibGVhdUV2ZW50VHlwZTtcclxuXHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKHR5cGU6IENvbnRyYWN0LlRhYmxlYXVFdmVudFR5cGUpIHtcclxuICAgIHRoaXMuX3R5cGUgPSB0eXBlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCB0eXBlKCk6IENvbnRyYWN0LlRhYmxlYXVFdmVudFR5cGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX3R5cGU7XHJcbiAgfVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi90eXBlc2NyaXB0L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9FdmVudHMvVGFibGVhdUV2ZW50LnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcclxuXHJcbmltcG9ydCB7IFRhYmxlYXVXb3Jrc2hlZXRFdmVudCB9IGZyb20gJy4vVGFibGVhdVdvcmtzaGVldEV2ZW50JztcclxuXHJcbmV4cG9ydCBjbGFzcyBNYXJrc1NlbGVjdGVkRXZlbnQgZXh0ZW5kcyBUYWJsZWF1V29ya3NoZWV0RXZlbnQgaW1wbGVtZW50cyBDb250cmFjdC5NYXJrc1NlbGVjdGVkRXZlbnQge1xyXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcih3b3Jrc2hlZXQ6IENvbnRyYWN0LldvcmtzaGVldCkge1xyXG4gICAgc3VwZXIoQ29udHJhY3QuVGFibGVhdUV2ZW50VHlwZS5NYXJrU2VsZWN0aW9uQ2hhbmdlZCwgd29ya3NoZWV0KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRNYXJrc0FzeW5jKCk6IFByb21pc2U8Q29udHJhY3QuTWFya3NDb2xsZWN0aW9uPiB7XHJcbiAgICByZXR1cm4gdGhpcy53b3Jrc2hlZXQuZ2V0U2VsZWN0ZWRNYXJrc0FzeW5jKCk7XHJcbiAgfVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi90eXBlc2NyaXB0L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9FdmVudHMvTWFya3NTZWxlY3RlZEV2ZW50LnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcclxuXHJcbmltcG9ydCB7IFNpbmdsZUV2ZW50TWFuYWdlciB9IGZyb20gJy4uL1NpbmdsZUV2ZW50TWFuYWdlcic7XHJcblxyXG4vKipcclxuICogVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHRoZSBTaW5nbGVFdmVudE1hbmFnZXIgaW50ZXJmYWNlIGZvciBhIHNpbmdsZSB0eXBlIG9mIFRhYmxlYXUgZXZlbnRcclxuICpcclxuICogQHRlbXBsYXRlIFRFdmVudFR5cGUgVGhlIFRhYmxlYXUgZXZlbnQgdHlwZSB0aGlzIGNsYXNzIHNwZWNpYWxpemVzXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU2luZ2xlRXZlbnRNYW5hZ2VySW1wbDxURXZlbnRUeXBlIGV4dGVuZHMgQ29udHJhY3QuVGFibGVhdUV2ZW50PiBpbXBsZW1lbnRzIFNpbmdsZUV2ZW50TWFuYWdlciB7XHJcbiAgcHJpdmF0ZSBfZXZlbnRUeXBlOiBDb250cmFjdC5UYWJsZWF1RXZlbnRUeXBlO1xyXG4gIHByaXZhdGUgX2hhbmRsZXJzOiBBcnJheTwoZXZlbnRPYmo6IFRFdmVudFR5cGUpID0+IHZvaWQ+O1xyXG5cclxuICBwdWJsaWMgY29uc3RydWN0b3IoZXZlbnRUeXBlOiBDb250cmFjdC5UYWJsZWF1RXZlbnRUeXBlKSB7XHJcbiAgICB0aGlzLl9ldmVudFR5cGUgPSBldmVudFR5cGU7XHJcbiAgICB0aGlzLl9oYW5kbGVycyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBldmVudFR5cGUoKTogQ29udHJhY3QuVGFibGVhdUV2ZW50VHlwZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZXZlbnRUeXBlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFkZEV2ZW50TGlzdGVuZXIoaGFuZGxlcjogKGV2ZW50T2JqOiBURXZlbnRUeXBlKSA9PiB2b2lkKTogQ29udHJhY3QuVGFibGVhdUV2ZW50VW5yZWdpc3RlckZuIHtcclxuICAgIHRoaXMuX2hhbmRsZXJzLnB1c2goaGFuZGxlcik7XHJcbiAgICByZXR1cm4gKCkgPT4gdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGhhbmRsZXIpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlbW92ZUV2ZW50TGlzdGVuZXIoaGFuZGxlcjogKGV2ZW50T2JqOiBURXZlbnRUeXBlKSA9PiB2b2lkKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBiZWZvcmVDb3VudCA9IHRoaXMuX2hhbmRsZXJzLmxlbmd0aDtcclxuICAgIHRoaXMuX2hhbmRsZXJzID0gdGhpcy5faGFuZGxlcnMuZmlsdGVyKGggPT4gaCAhPT0gaGFuZGxlcik7XHJcbiAgICByZXR1cm4gYmVmb3JlQ291bnQgPiB0aGlzLl9oYW5kbGVycy5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdHJpZ2dlckV2ZW50KGV2ZW50R2VuZXJhdG9yOiAoKSA9PiBURXZlbnRUeXBlKTogdm9pZCB7XHJcbiAgICBmb3IgKGNvbnN0IGhhbmRsZXIgb2YgdGhpcy5faGFuZGxlcnMpIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBjb25zdCBldmVudE1vZGVsID0gZXZlbnRHZW5lcmF0b3IoKTtcclxuICAgICAgICBoYW5kbGVyKGV2ZW50TW9kZWwpO1xyXG4gICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgLy8gU2luY2UgdGhpcyBoYW5kbGVyIGNvdWxkIGJlIG91dHNpZGUgb3VyIGNvbnRyb2wsIGp1c3QgY2F0Y2ggYW55dGhpbmcgaXQgdGhyb3dzIGFuZCBjb250aW51ZSBvblxyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi90eXBlc2NyaXB0L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9JbnRlcm5hbC9TaW5nbGVFdmVudE1hbmFnZXJJbXBsLnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcclxuaW1wb3J0IHsgVmlzdWFsSWQgfSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xyXG5cclxuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gJy4vU2VydmljZVJlZ2lzdHJ5JztcclxuXHJcbi8qKlxyXG4gKiBEZWZpbmVzIHdoaWNoIHR5cGUgb2YgZ2V0RGF0YSBjYWxsIHRvIG1ha2UuXHJcbiAqL1xyXG5leHBvcnQgZW51bSBHZXREYXRhVHlwZSB7XHJcbiAgU3VtbWFyeSA9ICdzdW1tYXJ5JyxcclxuICBVbmRlcmx5aW5nID0gJ3VuZGVybHlpbmcnXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBTZXJ2aWNlIGZvciBpbXBsZW1lbnRpbmcgdGhlIGxvZ2ljIGZvciB2YXJpb3VzIGdldERhdGEgY2FsbHNcclxuICpcclxuICogQGludGVyZmFjZSBHZXREYXRhU2VydmljZVxyXG4gKiBAZXh0ZW5kcyB7QXBpU2VydmljZX1cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgR2V0RGF0YVNlcnZpY2UgZXh0ZW5kcyBBcGlTZXJ2aWNlIHtcclxuICAvKipcclxuICAgKiBHZXRzIHRoZSB1bmRlcmx5aW5nIGRhdGEgZm9yIGEgcGFydGljdWxhciB2aXN1YWxcclxuICAgKlxyXG4gICAqIEBwYXJhbSB7VmlzdWFsSWR9IHZpc3VhbElkICBUaGUgdmlzdWFsIHRvIGdldCBkYXRhIGZvclxyXG4gICAqIEBwYXJhbSB7R2V0RGF0YVR5cGV9IGdldFR5cGUgIFRoZSB0eXBlIG9mIGdldERhdGEgY2FsbCB0byBtYWtlXHJcbiAgICogQHBhcmFtIHtib29sZWFufSBpZ25vcmVBbGlhc2VzICBXaGV0aGVyIG9yIG5vdCBhbGlhc2VzIHNob3VsZCBiZSBpZ25vcmVkXHJcbiAgICogQHBhcmFtIHtib29sZWFufSBpZ25vcmVTZWxlY3Rpb24gIFdoZXRoZXIgb3Igbm90IHNlbGVjdGlvbiBzaG91bGQgYmUgaWdub3JlZFxyXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5jbHVkZUFsbENvbHVtbnMgIFNob3VsZCBhbGwgY29sdW1ucyBiZSBpbmNsdWRlZFxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBtYXhSb3dzICBNYXhpbXVtIG51bWJlciBvZiByb3dzIHRvIHJldHVyblxyXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPENvbnRyYWN0LkRhdGFUYWJsZT59ICBEYXRhIHRhYmxlIHdpdGggdGhlIHJlcXVlc3RlZCBkYXRhXHJcbiAgICovXHJcbiAgICBnZXRVbmRlcmx5aW5nRGF0YUFzeW5jKFxyXG4gICAgICB2aXN1YWxJZDogVmlzdWFsSWQsXHJcbiAgICAgIGdldFR5cGU6IEdldERhdGFUeXBlLFxyXG4gICAgICBpZ25vcmVBbGlhc2VzOiBib29sZWFuLFxyXG4gICAgICBpZ25vcmVTZWxlY3Rpb246IGJvb2xlYW4sXHJcbiAgICAgIGluY2x1ZGVBbGxDb2x1bW5zOiBib29sZWFuLFxyXG4gICAgICBtYXhSb3dzOiBudW1iZXIpOiBQcm9taXNlPENvbnRyYWN0LkRhdGFUYWJsZT47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgbWFya3MgZm9yIGEgZ2l2ZW4gdmlzdWFsXHJcbiAgICAgKlxyXG4gICAgKiBAcGFyYW0ge1Zpc3VhbElkfSB2aXN1YWxJZCAgVGhlIHZpc3VhbCB0byBnZXQgZGF0YSBmb3JcclxuICAgICogQHJldHVybnMge1Byb21pc2U8QWN0aXZlTWFya3M+fSAgQ29sbGVjdGlvbiBvZiBkYXRhIHRhYmxlcyB3aXRoIHRoZSBhY3RpdmUgbWFya3NcclxuICAgICovXHJcbiAgICBnZXRTZWxlY3RlZE1hcmtzQXN5bmModmlzdWFsSWQ6IFZpc3VhbElkKTogUHJvbWlzZTxDb250cmFjdC5NYXJrc0NvbGxlY3Rpb24+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgY3VycmVudGx5IGhpZ2hsaWdodGVkIG1hcmtzIGZvciBhIGdpdmVuIHZpc3VhbFxyXG4gICAgICpcclxuICAgICogQHBhcmFtIHtWaXN1YWxJZH0gdmlzdWFsSWQgIFRoZSB2aXN1YWwgdG8gZ2V0IGRhdGEgZm9yXHJcbiAgICAqIEByZXR1cm5zIHtQcm9taXNlPEFjdGl2ZU1hcmtzPn0gIENvbGxlY3Rpb24gb2YgZGF0YSB0YWJsZXMgd2l0aCB0aGUgYWN0aXZlIG1hcmtzXHJcbiAgICAqL1xyXG4gICAgZ2V0SGlnaGxpZ2h0ZWRNYXJrc0FzeW5jKHZpc3VhbElkOiBWaXN1YWxJZCk6IFByb21pc2U8Q29udHJhY3QuTWFya3NDb2xsZWN0aW9uPjtcclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBEOi9kZXYvdHlwZXNjcmlwdC9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvU2VydmljZXMvR2V0RGF0YVNlcnZpY2UudHNcbiAqKi8iLCJpbXBvcnQgeyBJbnRlcm5hbEFwaURpc3BhdGNoZXIgfSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xyXG5cclxuaW1wb3J0IHsgRGF0YVNvdXJjZVNlcnZpY2VJbXBsIH0gZnJvbSAnLi9pbXBsL0RhdGFTb3VyY2VTZXJ2aWNlSW1wbCc7XHJcbmltcG9ydCB7IEZpbHRlclNlcnZpY2VJbXBsIH0gZnJvbSAnLi9pbXBsL0ZpbHRlclNlcnZpY2VJbXBsJztcclxuaW1wb3J0IHsgR2V0RGF0YVNlcnZpY2VJbXBsIH0gZnJvbSAnLi9pbXBsL0dldERhdGFTZXJ2aWNlSW1wbCc7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2VJbXBsIH0gZnJvbSAnLi9pbXBsL05vdGlmaWNhdGlvblNlcnZpY2VJbXBsJztcclxuaW1wb3J0IHsgUGFyYW1ldGVyc1NlcnZpY2VJbXBsIH0gZnJvbSAnLi9pbXBsL1BhcmFtZXRlcnNTZXJ2aWNlSW1wbCc7XHJcbmltcG9ydCB7IFNlbGVjdGlvblNlcnZpY2VJbXBsIH0gZnJvbSAnLi9pbXBsL1NlbGVjdGlvblNlcnZpY2VJbXBsJztcclxuaW1wb3J0IHsgQXBpU2VydmljZVJlZ2lzdHJ5IH0gZnJvbSAnLi9TZXJ2aWNlUmVnaXN0cnknO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyQWxsU2hhcmVkU2VydmljZXMoZGlzcGF0Y2hlcjogSW50ZXJuYWxBcGlEaXNwYXRjaGVyKTogdm9pZCB7XHJcbiAgQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLnJlZ2lzdGVyU2VydmljZShuZXcgRGF0YVNvdXJjZVNlcnZpY2VJbXBsKGRpc3BhdGNoZXIpKTtcclxuICBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UucmVnaXN0ZXJTZXJ2aWNlKG5ldyBHZXREYXRhU2VydmljZUltcGwoZGlzcGF0Y2hlcikpO1xyXG4gIEFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5yZWdpc3RlclNlcnZpY2UobmV3IEZpbHRlclNlcnZpY2VJbXBsKGRpc3BhdGNoZXIpKTtcclxuICBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UucmVnaXN0ZXJTZXJ2aWNlKG5ldyBOb3RpZmljYXRpb25TZXJ2aWNlSW1wbChkaXNwYXRjaGVyKSk7XHJcbiAgQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLnJlZ2lzdGVyU2VydmljZShuZXcgUGFyYW1ldGVyc1NlcnZpY2VJbXBsKGRpc3BhdGNoZXIpKTtcclxuICBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UucmVnaXN0ZXJTZXJ2aWNlKG5ldyBTZWxlY3Rpb25TZXJ2aWNlSW1wbChkaXNwYXRjaGVyKSk7XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogRDovZGV2L3R5cGVzY3JpcHQvanMtYXBpL2FwaS1zaGFyZWQvc3JjL1NlcnZpY2VzL1JlZ2lzdGVyQWxsU2hhcmVkU2VydmljZXMudHNcbiAqKi8iLCJpbXBvcnQge1xyXG4gIERhdGFTY2hlbWEsXHJcbiAgRXhlY3V0ZVBhcmFtZXRlcnMsXHJcbiAgSW50ZXJuYWxBcGlEaXNwYXRjaGVyLFxyXG4gIFBhcmFtZXRlcklkLFxyXG4gIFZlcmJJZFxyXG59IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XHJcblxyXG5pbXBvcnQgeyBEYXRhU291cmNlU2VydmljZSB9IGZyb20gJy4uL0RhdGFTb3VyY2VTZXJ2aWNlJztcclxuaW1wb3J0IHsgU2VydmljZU5hbWVzIH0gZnJvbSAnLi4vU2VydmljZVJlZ2lzdHJ5JztcclxuXHJcbmV4cG9ydCBjbGFzcyBEYXRhU291cmNlU2VydmljZUltcGwgaW1wbGVtZW50cyBEYXRhU291cmNlU2VydmljZSB7XHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgX2Rpc3BhdGNoZXI6IEludGVybmFsQXBpRGlzcGF0Y2hlcikgeyB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc2VydmljZU5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBTZXJ2aWNlTmFtZXMuRGF0YVNvdXJjZVNlcnZpY2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVmcmVzaEFzeW5jKGRhdGFTb3VyY2VJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBwYXJhbWV0ZXJzOiBFeGVjdXRlUGFyYW1ldGVycyA9IHtbUGFyYW1ldGVySWQuRGF0YVNvdXJjZUlkXTogZGF0YVNvdXJjZUlkfTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5fZGlzcGF0Y2hlci5leGVjdXRlKFZlcmJJZC5SZWZyZXNoRGF0YVNvdXJjZSwgcGFyYW1ldGVycykudGhlbjx2b2lkPihyZXNwb25zZSA9PiB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldERhdGFTb3VyY2VzQXN5bmMoKTogUHJvbWlzZTxEYXRhU2NoZW1hPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGlzcGF0Y2hlci5leGVjdXRlKFZlcmJJZC5HZXREYXRhU291cmNlcywge30pLnRoZW48RGF0YVNjaGVtYT4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICBjb25zdCBkYXRhU2NoZW1hID0gcmVzcG9uc2UucmVzdWx0IGFzIERhdGFTY2hlbWE7XHJcbiAgICAgIHJldHVybiBkYXRhU2NoZW1hO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi90eXBlc2NyaXB0L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9TZXJ2aWNlcy9pbXBsL0RhdGFTb3VyY2VTZXJ2aWNlSW1wbC50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XHJcbmltcG9ydCAqIGFzIEludGVybmFsQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcclxuaW1wb3J0IHtcclxuICBDb21tYW5kRXJyb3IsXHJcbiAgRXhlY3V0ZVBhcmFtZXRlcnMsXHJcbiAgRmlsdGVyVHlwZSxcclxuICBJbnRlcm5hbEFwaURpc3BhdGNoZXIsXHJcbiAgUGFyYW1ldGVySWQsXHJcbiAgVmVyYklkLFxyXG4gIFZpc3VhbElkXHJcbn0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcclxuaW1wb3J0IHsgUGFyYW0gfSBmcm9tICdAdGFibGVhdS9hcGktdXRpbHMnO1xyXG5cclxuaW1wb3J0IHsgRXh0ZXJuYWxUb0ludGVybmFsRW51bU1hcHBpbmdzIGFzIEV4dGVybmFsRW51bUNvbnZlcnRlciB9IGZyb20gJy4uLy4uL0VudW1NYXBwaW5ncy9FeHRlcm5hbFRvSW50ZXJuYWxFbnVtTWFwcGluZ3MnO1xyXG5pbXBvcnQgeyBJbnRlcm5hbFRvRXh0ZXJuYWxFbnVtTWFwcGluZ3MgYXMgSW50ZXJuYWxFbnVtQ29udmVydGVyIH0gZnJvbSAnLi4vLi4vRW51bU1hcHBpbmdzL0ludGVybmFsVG9FeHRlcm5hbEVudW1NYXBwaW5ncyc7XHJcbmltcG9ydCB7IENhdGVnb3JpY2FsRmlsdGVyLCBSYW5nZUZpbHRlciwgUmVsYXRpdmVEYXRlRmlsdGVyIH0gZnJvbSAnLi4vLi4vTW9kZWxzL0ZpbHRlck1vZGVscyc7XHJcbmltcG9ydCB7IERhdGFWYWx1ZSB9IGZyb20gJy4uLy4uL01vZGVscy9HZXREYXRhTW9kZWxzJztcclxuXHJcbmltcG9ydCB7IEZpbHRlclNlcnZpY2UgfSBmcm9tICcuLi9GaWx0ZXJTZXJ2aWNlJztcclxuaW1wb3J0IHsgU2VydmljZU5hbWVzIH0gZnJvbSAnLi4vU2VydmljZVJlZ2lzdHJ5JztcclxuXHJcbmV4cG9ydCBjbGFzcyBGaWx0ZXJTZXJ2aWNlSW1wbCBpbXBsZW1lbnRzIEZpbHRlclNlcnZpY2Uge1xyXG4gIHByaXZhdGUgX2Rpc3BhdGNoZXI6IEludGVybmFsQXBpRGlzcGF0Y2hlcjtcclxuXHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKGRpc3BhdGNoZXI6IEludGVybmFsQXBpRGlzcGF0Y2hlcikge1xyXG4gICAgdGhpcy5fZGlzcGF0Y2hlciA9IGRpc3BhdGNoZXI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHNlcnZpY2VOYW1lKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gU2VydmljZU5hbWVzLkZpbHRlcjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhcHBseUZpbHRlckFzeW5jKFxyXG4gICAgdmlzdWFsSWQ6IFZpc3VhbElkLFxyXG4gICAgZmllbGROYW1lOiBzdHJpbmcsXHJcbiAgICB2YWx1ZXM6IEFycmF5PHN0cmluZz4sXHJcbiAgICB1cGRhdGVUeXBlOiBDb250cmFjdC5GaWx0ZXJVcGRhdGVUeXBlLFxyXG4gICAgZmlsdGVyT3B0aW9uczogQ29udHJhY3QuRmlsdGVyT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgIGlmICghUGFyYW0uaXNWYWxpZEVudW1WYWx1ZTxDb250cmFjdC5GaWx0ZXJVcGRhdGVUeXBlPih1cGRhdGVUeXBlLCBDb250cmFjdC5GaWx0ZXJVcGRhdGVUeXBlKSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB2YWx1ZSBmb3IgcGFyYW1ldGVyIEZpbHRlclVwZGF0ZVR5cGUnKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCB2ZXJiID0gVmVyYklkLkFwcGx5Q2F0ZWdvcmljYWxGaWx0ZXI7XHJcbiAgICAgIGNvbnN0IHBhcmFtZXRlcnM6IEV4ZWN1dGVQYXJhbWV0ZXJzID0ge307XHJcbiAgICAgIHBhcmFtZXRlcnNbUGFyYW1ldGVySWQuVmlzdWFsSWRdID0gdmlzdWFsSWQ7XHJcbiAgICAgIHBhcmFtZXRlcnNbUGFyYW1ldGVySWQuRmllbGROYW1lXSA9IGZpZWxkTmFtZTtcclxuICAgICAgcGFyYW1ldGVyc1tQYXJhbWV0ZXJJZC5GaWx0ZXJWYWx1ZXNdID0gdmFsdWVzO1xyXG4gICAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLkZpbHRlclVwZGF0ZVR5cGVdID0gdXBkYXRlVHlwZTtcclxuICAgICAgcGFyYW1ldGVyc1tQYXJhbWV0ZXJJZC5Jc0V4Y2x1ZGVNb2RlXSA9XHJcbiAgICAgICAgKGZpbHRlck9wdGlvbnMgPT09IHVuZGVmaW5lZCB8fCBmaWx0ZXJPcHRpb25zLmlzRXhjbHVkZU1vZGUgPT09IHVuZGVmaW5lZCkgPyBmYWxzZSA6IGZpbHRlck9wdGlvbnMuaXNFeGNsdWRlTW9kZTtcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLl9kaXNwYXRjaGVyLmV4ZWN1dGUodmVyYiwgcGFyYW1ldGVycykudGhlbjxzdHJpbmc+KHJlc3BvbnNlID0+IHtcclxuICAgICAgICBjb25zdCBlcnJvciA9IHJlc3BvbnNlLnJlc3VsdCBhcyBDb21tYW5kRXJyb3I7XHJcbiAgICAgICAgaWYgKCEoZXJyb3IuZXJyb3JDb2RlID09PSBudWxsIHx8IGVycm9yLmVycm9yQ29kZSA9PT0gdW5kZWZpbmVkKSkge1xyXG4gICAgICAgICAgLy8gVE9ETzogY29tZSBiYWNrIGFuZCBpbXBsZW1lbnQgZXJyb3IgaGFuZGxpbmcgbG9naWNcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRXJyb3IgQXBwbHlpbmcgRmlsdGVyOiAnICsgZXJyb3IuZXJyb3JDb2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZpZWxkTmFtZTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gIHB1YmxpYyBhcHBseVJhbmdlRmlsdGVyQXN5bmModmlzdWFsSWQ6IFZpc3VhbElkLCBmaWVsZE5hbWU6IHN0cmluZywgZmlsdGVyT3B0aW9uczogQ29udHJhY3QuUmFuZ2VGaWx0ZXJPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIGlmICghZmlsdGVyT3B0aW9ucykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgUGFyYW1ldGVyOiBSYW5nZUZpbHRlck9wdGlvbnMnKTtcclxuICAgIH1cclxuICAgIFBhcmFtLnZlcmlmeVJhbmdlUGFyYW1UeXBlKGZpbHRlck9wdGlvbnMubWluLCBmaWx0ZXJPcHRpb25zLm1heCk7XHJcblxyXG4gICAgY29uc3QgdmVyYiA9IFZlcmJJZC5BcHBseVJhbmdlRmlsdGVyO1xyXG4gICAgY29uc3QgcGFyYW1ldGVyczogRXhlY3V0ZVBhcmFtZXRlcnMgPSB7fTtcclxuXHJcbiAgICBpZiAoZmlsdGVyT3B0aW9ucy5taW4pIHtcclxuICAgICAgbGV0IG1pbjogc3RyaW5nIHwgbnVtYmVyO1xyXG4gICAgICBpZiAoZmlsdGVyT3B0aW9ucy5taW4gaW5zdGFuY2VvZiBEYXRlKSB7XHJcbiAgICAgICAgbWluID0gUGFyYW0uc2VyaWFsaXplRGF0ZUZvclBsYXRmb3JtKGZpbHRlck9wdGlvbnMubWluKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBtaW4gPSBmaWx0ZXJPcHRpb25zLm1pbjtcclxuICAgICAgfVxyXG4gICAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLkZpbHRlclJhbmdlTWluXSA9IG1pbjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZmlsdGVyT3B0aW9ucy5tYXgpIHtcclxuICAgICAgbGV0IG1heDogc3RyaW5nIHwgbnVtYmVyO1xyXG4gICAgICBpZiAoZmlsdGVyT3B0aW9ucy5tYXggaW5zdGFuY2VvZiBEYXRlKSB7XHJcbiAgICAgICAgbWF4ID0gUGFyYW0uc2VyaWFsaXplRGF0ZUZvclBsYXRmb3JtKGZpbHRlck9wdGlvbnMubWF4KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBtYXggPSBmaWx0ZXJPcHRpb25zLm1heDtcclxuICAgICAgfVxyXG4gICAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLkZpbHRlclJhbmdlTWF4XSA9IG1heDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZmlsdGVyT3B0aW9ucy5udWxsT3B0aW9uKSB7XHJcbiAgICAgIGlmICghUGFyYW0uaXNWYWxpZEVudW1WYWx1ZTxDb250cmFjdC5GaWx0ZXJOdWxsT3B0aW9uPihmaWx0ZXJPcHRpb25zLm51bGxPcHRpb24sIENvbnRyYWN0LkZpbHRlck51bGxPcHRpb24pKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHZhbHVlIGZvciBwYXJhbWV0ZXIgTnVsbE9wdGlvbicpO1xyXG4gICAgICB9XHJcbiAgICAgIHBhcmFtZXRlcnNbUGFyYW1ldGVySWQuRmlsdGVyUmFuZ2VOdWxsT3B0aW9uXSA9IEV4dGVybmFsRW51bUNvbnZlcnRlci5udWxsT3B0aW9ucy5jb252ZXJ0KGZpbHRlck9wdGlvbnMubnVsbE9wdGlvbik7XHJcbiAgICB9XHJcbiAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLkZpZWxkTmFtZV0gPSBmaWVsZE5hbWU7XHJcbiAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLlZpc3VhbElkXSA9IHZpc3VhbElkO1xyXG5cclxuICAgIHJldHVybiB0aGlzLl9kaXNwYXRjaGVyLmV4ZWN1dGUodmVyYiwgcGFyYW1ldGVycykudGhlbjxzdHJpbmc+KHJlc3BvbnNlID0+IHtcclxuICAgICAgcmV0dXJuIGZpZWxkTmFtZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsZWFyRmlsdGVyQXN5bmModmlzdWFsSWQ6IFZpc3VhbElkLCBmaWVsZE5hbWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICBjb25zdCB2ZXJiID0gVmVyYklkLkNsZWFyRmlsdGVyO1xyXG4gICAgbGV0IHBhcmFtZXRlcnM6IEV4ZWN1dGVQYXJhbWV0ZXJzID0ge307XHJcbiAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLlZpc3VhbElkXSA9IHZpc3VhbElkO1xyXG4gICAgcGFyYW1ldGVyc1tQYXJhbWV0ZXJJZC5GaWVsZE5hbWVdID0gZmllbGROYW1lO1xyXG4gICAgcmV0dXJuIHRoaXMuX2Rpc3BhdGNoZXIuZXhlY3V0ZSh2ZXJiLCBwYXJhbWV0ZXJzKS50aGVuPHN0cmluZz4ocmVzcG9zbmUgPT4ge1xyXG4gICAgICByZXR1cm4gZmllbGROYW1lO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0RmlsdGVyc0FzeW5jKHZpc3VhbElkOiBWaXN1YWxJZCk6IFByb21pc2U8Q29udHJhY3QuRmlsdGVyW10+IHtcclxuICAgIGNvbnN0IHZlcmIgPSBWZXJiSWQuR2V0RmlsdGVycztcclxuICAgIGxldCBwYXJhbWV0ZXJzOiBFeGVjdXRlUGFyYW1ldGVycyA9IHt9O1xyXG4gICAgcGFyYW1ldGVyc1tQYXJhbWV0ZXJJZC5WaXN1YWxJZF0gPSB2aXN1YWxJZDtcclxuICAgIHJldHVybiB0aGlzLl9kaXNwYXRjaGVyLmV4ZWN1dGUodmVyYiwgcGFyYW1ldGVycykudGhlbjxDb250cmFjdC5GaWx0ZXJbXT4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICBsZXQgZmlsdGVycyA9IHJlc3BvbnNlLnJlc3VsdCBhcyBJbnRlcm5hbENvbnRyYWN0LkZpbHRlcltdO1xyXG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0RG9tYWluRmlsdGVycyhmaWx0ZXJzKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gSGVscGVyIE1ldGhvZHNcclxuICBwcml2YXRlIGNvbnZlcnREb21haW5GaWx0ZXJzKGRvbWFpbkZpbHRlcnM6IEludGVybmFsQ29udHJhY3QuRmlsdGVyW10pOiBDb250cmFjdC5GaWx0ZXJbXSB7XHJcbiAgICBsZXQgZmlsdGVyczogQ29udHJhY3QuRmlsdGVyW10gPSBbXTtcclxuICAgIGRvbWFpbkZpbHRlcnMuZm9yRWFjaChkb21haW5GaWx0ZXIgPT4ge1xyXG4gICAgICBzd2l0Y2ggKGRvbWFpbkZpbHRlci5maWx0ZXJUeXBlKSB7XHJcbiAgICAgICAgY2FzZSBGaWx0ZXJUeXBlLkNhdGVnb3JpY2FsOiB7XHJcbiAgICAgICAgICBsZXQgZmlsdGVyID0gZG9tYWluRmlsdGVyIGFzIEludGVybmFsQ29udHJhY3QuQ2F0ZWdvcmljYWxGaWx0ZXI7XHJcbiAgICAgICAgICBpZiAoZmlsdGVyKSB7XHJcbiAgICAgICAgICAgIGZpbHRlcnMucHVzaCh0aGlzLmNvbnZlcnRDYXRlZ29yaWNhbEZpbHRlcihmaWx0ZXIpKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBDYXRlZ29yaWNhbCBGaWx0ZXInKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY2FzZSBGaWx0ZXJUeXBlLlJhbmdlOiB7XHJcbiAgICAgICAgICBsZXQgZmlsdGVyID0gZG9tYWluRmlsdGVyIGFzIEludGVybmFsQ29udHJhY3QuUmFuZ2VGaWx0ZXI7XHJcbiAgICAgICAgICBpZiAoZmlsdGVyKSB7XHJcbiAgICAgICAgICAgIGZpbHRlcnMucHVzaCh0aGlzLmNvbnZlcnRSYW5nZUZpbHRlcihmaWx0ZXIpKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBSYW5nZSBGaWx0ZXInKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY2FzZSBGaWx0ZXJUeXBlLlJlbGF0aXZlRGF0ZToge1xyXG4gICAgICAgICAgbGV0IGZpbHRlciA9IGRvbWFpbkZpbHRlciBhcyBJbnRlcm5hbENvbnRyYWN0LlJlbGF0aXZlRGF0ZUZpbHRlcjtcclxuICAgICAgICAgIGlmIChmaWx0ZXIpIHtcclxuICAgICAgICAgICAgZmlsdGVycy5wdXNoKHRoaXMuY29udmVydFJlbGF0aXZlRGF0ZUZpbHRlcihmaWx0ZXIpKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBSZWxhdGl2ZSBEYXRlIEZpbHRlcicpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBkZWZhdWx0OiB7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGZpbHRlcnM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbnZlcnRDYXRlZ29yaWNhbEZpbHRlcihkb21haW5GaWx0ZXI6IEludGVybmFsQ29udHJhY3QuQ2F0ZWdvcmljYWxGaWx0ZXIpOiBDb250cmFjdC5DYXRlZ29yaWNhbEZpbHRlciB7XHJcbiAgICBsZXQgYXBwbGllZFZhbHVlczogQ29udHJhY3QuRGF0YVZhbHVlW10gPSBkb21haW5GaWx0ZXIudmFsdWVzLm1hcChkdiA9PiB7XHJcbiAgICAgIHJldHVybiBuZXcgRGF0YVZhbHVlKGR2LnZhbHVlLCBkdi5mb3JtYXR0ZWRWYWx1ZSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gbmV3IENhdGVnb3JpY2FsRmlsdGVyKFxyXG4gICAgICBkb21haW5GaWx0ZXIudmlzdWFsSWQud29ya3NoZWV0LFxyXG4gICAgICBkb21haW5GaWx0ZXIuZmllbGRDYXB0aW9uLFxyXG4gICAgICBDb250cmFjdC5GaWx0ZXJUeXBlLkNhdGVnb3JpY2FsLFxyXG4gICAgICBhcHBsaWVkVmFsdWVzLFxyXG4gICAgICBkb21haW5GaWx0ZXIuaXNFeGNsdWRlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29udmVydFJhbmdlRmlsdGVyKGRvbWFpbkZpbHRlcjogSW50ZXJuYWxDb250cmFjdC5SYW5nZUZpbHRlcik6IENvbnRyYWN0LlJhbmdlRmlsdGVyIHtcclxuICAgIGxldCBtaW5WYWx1ZTogRGF0YVZhbHVlID0gbmV3IERhdGFWYWx1ZShkb21haW5GaWx0ZXIubWluLnZhbHVlLCBkb21haW5GaWx0ZXIubWluLmZvcm1hdHRlZFZhbHVlKTtcclxuICAgIGxldCBtYXhWYWx1ZTogRGF0YVZhbHVlID0gbmV3IERhdGFWYWx1ZShkb21haW5GaWx0ZXIubWF4LnZhbHVlLCBkb21haW5GaWx0ZXIubWF4LmZvcm1hdHRlZFZhbHVlKTtcclxuICAgIHJldHVybiBuZXcgUmFuZ2VGaWx0ZXIoXHJcbiAgICAgIGRvbWFpbkZpbHRlci52aXN1YWxJZC53b3Jrc2hlZXQsXHJcbiAgICAgIGRvbWFpbkZpbHRlci5maWVsZENhcHRpb24sXHJcbiAgICAgIENvbnRyYWN0LkZpbHRlclR5cGUuUmFuZ2UsXHJcbiAgICAgIG1pblZhbHVlLFxyXG4gICAgICBtYXhWYWx1ZSxcclxuICAgICAgZG9tYWluRmlsdGVyLmluY2x1ZGVOdWxsVmFsdWVzXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb252ZXJ0UmVsYXRpdmVEYXRlRmlsdGVyKGRvbWFpbkZpbHRlcjogSW50ZXJuYWxDb250cmFjdC5SZWxhdGl2ZURhdGVGaWx0ZXIpOiBDb250cmFjdC5SZWxhdGl2ZURhdGVGaWx0ZXIge1xyXG4gICAgbGV0IGFuY2hvckRhdGVWYWx1ZTogRGF0YVZhbHVlID0gbmV3IERhdGFWYWx1ZShkb21haW5GaWx0ZXIuYW5jaG9yRGF0ZS52YWx1ZSwgZG9tYWluRmlsdGVyLmFuY2hvckRhdGUuZm9ybWF0dGVkVmFsdWUpO1xyXG4gICAgcmV0dXJuIG5ldyBSZWxhdGl2ZURhdGVGaWx0ZXIgKFxyXG4gICAgICBkb21haW5GaWx0ZXIudmlzdWFsSWQud29ya3NoZWV0LFxyXG4gICAgICBkb21haW5GaWx0ZXIuZmllbGRDYXB0aW9uLFxyXG4gICAgICBDb250cmFjdC5GaWx0ZXJUeXBlLlJlbGF0aXZlRGF0ZSxcclxuICAgICAgYW5jaG9yRGF0ZVZhbHVlLFxyXG4gICAgICBJbnRlcm5hbEVudW1Db252ZXJ0ZXIuZGF0ZVN0ZXBQZXJpb2QuY29udmVydChkb21haW5GaWx0ZXIucGVyaW9kVHlwZSksXHJcbiAgICAgIEludGVybmFsRW51bUNvbnZlcnRlci5kYXRlUmFuZ2VUeXBlLmNvbnZlcnQoZG9tYWluRmlsdGVyLnJhbmdlVHlwZSksXHJcbiAgICAgIGRvbWFpbkZpbHRlci5yYW5nZU5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi90eXBlc2NyaXB0L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9TZXJ2aWNlcy9pbXBsL0ZpbHRlclNlcnZpY2VJbXBsLnRzXG4gKiovIiwiLyoqXG4gKiBUaGlzIGlzIHlvdXIgbWFpbi4gVGhpcyBpcyB3aGVyZSB5b3UgcmUtZXhwb3J0IGV2ZXJ5dGhpbmcgeW91IHdhbnQgdG8gYmUgcHVibGljbHkgYXZhaWxhYmxlLlxuICpcbiAqIFRoZSBidWlsZCBlbmZvcmNlcyB0aGF0IHRoZSBmaWxlIGhhcyB0aGUgc2FtZSBuYW1lIGFzIHRoZSBnbG9iYWwgdmFyaWFibGUgdGhhdCBpcyBleHBvcnRlZC5cbiAqL1xuXG5leHBvcnQgeyBFbnVtQ29udmVydGVyIH0gZnJvbSAnLi9FbnVtQ29udmVydGVyJztcbmV4cG9ydCB7IFBhcmFtIH0gZnJvbSAnLi9QYXJhbSc7XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBEOi9kZXYvdHlwZXNjcmlwdC9qcy1hcGkvYXBpLXV0aWxzL3NyYy9BcGlVdGlscy50c1xuICoqLyIsIi8qKlxyXG4gKiBUaGlzIGNsYXNzIGNvbnZlcnRzIGZyb20gYSBzb3VyY2UgZW51bSB2YWx1ZSB0byBkZXN0aW5hdGlvbiBlbnVtXHJcbiAqIHZhbHVlIGdpdmVuIGEgbWFwcGluZyBmcm9tIHNvdXJjZSB0byBkZXN0aW5hdGlvbiB3aGVuIGNvbnN0cnVjdGVkLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEVudW1Db252ZXJ0ZXI8VFNvdXJjZVR5cGUgZXh0ZW5kcyBzdHJpbmcsIFREZXN0aW5hdGlvblR5cGU+IHtcclxuICBwdWJsaWMgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9tYXBwaW5nczogeyBbZW51bVZhbDogc3RyaW5nXTogVERlc3RpbmF0aW9uVHlwZTsgfSxcclxuICAgIHByaXZhdGUgX2RlZmF1bHRWYWw/OiBURGVzdGluYXRpb25UeXBlKSB7IH1cclxuXHJcbiAgcHVibGljIGNvbnZlcnQoZW51bVZhbDogVFNvdXJjZVR5cGUsIHRocm93SWZNaXNzaW5nPzogYm9vbGVhbik6IFREZXN0aW5hdGlvblR5cGUge1xyXG4gICAgaWYgKHRoaXMuX21hcHBpbmdzLmhhc093blByb3BlcnR5KGVudW1WYWwpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9tYXBwaW5nc1tlbnVtVmFsIGFzIHN0cmluZ107XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuX2RlZmF1bHRWYWwgIT09IHVuZGVmaW5lZCAmJiAhdGhyb3dJZk1pc3NpbmcpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRWYWw7XHJcbiAgICB9XHJcblxyXG4gICAgdGhyb3cgbmV3IEVycm9yKCdNYXBwaW5nIG5vdCBmb3VuZCBmb3IgJyArIGVudW1WYWwpO1xyXG4gIH1cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBEOi9kZXYvdHlwZXNjcmlwdC9qcy1hcGkvYXBpLXV0aWxzL3NyYy9FbnVtQ29udmVydGVyLnRzXG4gKiovIiwiZXhwb3J0IGNsYXNzIFBhcmFtIHtcclxuICAvKipcclxuICAgKiBWZXJpZmllcyB0aGF0IGFuIGluY29taW5nIHBhcmFtZXRlciBpcyAndHJ1dGh5JyBhbmQgdGhyb3dzXHJcbiAgICogYW4gZXJyb3IgaWYgaXQncyBub3QuIFRoaXMgd2lsbCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgdmFsdWVcclxuICAgKiBpcyBudWxsLCB1bmRlZmluZWQsIE5hTiwgdGhlIGVtcHR5IHN0cmluZywgMCwgb3IgZmFsc2UuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gYXJndW1lbnRWYWx1ZSB2YWx1ZSB0byB2ZXJpZnlcclxuICAgKiBAcGFyYW0gYXJndW1lbnROYW1lIG5hbWUgb2YgYXJndW1lbnQgdG8gdmVyaWZ5XHJcbiAgICovXHJcbiAgLyp0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgKi9cclxuICBwdWJsaWMgc3RhdGljIHZlcmlmeVZhbHVlKGFyZ3VtZW50VmFsdWU6IGFueSwgYXJndW1lbnROYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICghYXJndW1lbnRWYWx1ZSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZhbHVlIGlzIGludmFsaWQgZm9yIGFyZ3VtZW50OiAnICsgYXJndW1lbnROYW1lKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFZlcmlmaWVzIHRoYXQgYSBzdHJpbmcgaXMgdmFsaWQuICBUaHJvd3MgYW4gZXJyb3IgaWYgdGhlIHN0cmluZyBpc1xyXG4gICAqIG51bGwsIHVuZGVmaW5lZCwgb3IgTmFOLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGFyZ3VtZW50VmFsdWUgdmFsdWUgdG8gdmVyaWZ5XHJcbiAgICogQHBhcmFtIGFyZ3VtZW50TmFtZSBuYW1lIG9mIGFyZ3VtZW50IHRvIHZlcmlmeVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgdmVyaWZ5U3RyaW5nKGFyZ3VtZW50VmFsdWU6IHN0cmluZywgYXJndW1lbnROYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmIChhcmd1bWVudFZhbHVlID09PSBudWxsIHx8IGFyZ3VtZW50VmFsdWUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1N0cmluZyB2YWx1ZSBpcyBpbnZhbGlkIGZvciBhcmd1bWVudDogJyArIGFyZ3VtZW50TmFtZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBWZXJpZmllcyB0aGUgdmFsdWUgaXMgcGFydCBvZiB0aGUgRW51bVxyXG4gICAqXHJcbiAgICogU3RyaW5nIGVudW1zIGFyZSB7c3RyaW5nIDogc3RyaW5nfSBkaWN0aW9uYXJpZXMgd2hpY2ggYXJlIG5vdCByZXZlcnNlIG1hcHBhYmxlXHJcbiAgICogVGhpcyBpcyBhbiB1Z2x5IHdvcmthcm91bmRcclxuICAgKiBAcGFyYW0gdmFsdWUgdmFsdWUgdG8gdmVyaWZ5XHJcbiAgICogQHBhcmFtIGVudW1UeXBlIGVudW0gdG8gdmVyaWZ5IGFnYWluc3RcclxuICAgKi9cclxuICAvKiB0c2xpbnQ6ZGlzYWJsZTpuby1hbnkgKi9cclxuICBwdWJsaWMgc3RhdGljIGlzVmFsaWRFbnVtVmFsdWU8RW51bVR5cGU+KHZhbHVlOiBFbnVtVHlwZSwgZW51bVR5cGU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGlzVmFsaWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIE9iamVjdC5rZXlzKGVudW1UeXBlKS5mb3JFYWNoKChlbnVtS2V5KSA9PiB7XHJcbiAgICAgIGlmIChlbnVtVHlwZVtlbnVtS2V5XSA9PT0gdmFsdWUudG9TdHJpbmcoKSkge1xyXG4gICAgICAgIGlzVmFsaWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBpc1ZhbGlkO1xyXG4gIH1cclxuICAvKiB0c2xpbnQ6ZW5hYmxlOm5vLWFueSAqL1xyXG5cclxuICAvKipcclxuICAgKiBzZXJpYWxpemVzIHRoZSBkYXRlIGludG8gdGhlIGZvcm1hdCB0aGF0IHRoZSBzZXJ2ZXIgZXhwZWN0cy5cclxuICAgKiBAcGFyYW0gZGF0ZSB0aGUgZGF0ZSB0byBzZXJpYWxpemVcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIHNlcmlhbGl6ZURhdGVGb3JQbGF0Zm9ybShkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHllYXI6IG51bWJlciA9IGRhdGUuZ2V0VVRDRnVsbFllYXIoKTtcclxuICAgIGNvbnN0IG1vbnRoOiBudW1iZXIgPSBkYXRlLmdldFVUQ01vbnRoKCkgKyAxO1xyXG4gICAgY29uc3QgZGF5OiBudW1iZXIgPSBkYXRlLmdldFVUQ0RhdGUoKTtcclxuICAgIGNvbnN0IGhoOiBudW1iZXIgPSBkYXRlLmdldFVUQ0hvdXJzKCk7XHJcbiAgICBjb25zdCBtbTogbnVtYmVyID0gZGF0ZS5nZXRVVENNaW51dGVzKCk7XHJcbiAgICBjb25zdCBzZWM6IG51bWJlciA9IGRhdGUuZ2V0VVRDU2Vjb25kcygpO1xyXG4gICAgcmV0dXJuIHllYXIgKyAnLScgKyBtb250aCArICctJyArIGRheSArICcgJyArIGhoICsgJzonICsgbW0gKyAnOicgKyBzZWM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIHNlcmlhbGl6ZUJvb2xlYW5Gb3JQbGF0Zm9ybShib29sOiBib29sZWFuKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBib29sID8gJ3RydWUnIDogJ2ZhbHNlJztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgc2VyaWFsaXplTnVtYmVyRm9yUGxhdGZvcm0obnVtOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIG51bS50b1N0cmluZygxMCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBWZXJpZmllcyB0aGUgcGFyYW1zIG1pbiBhbmQgbWF4IGZvciBhcHBseWluZyByYW5nZSBmaWx0ZXJcclxuICAgKiBAcGFyYW0gbWluIHJhbmdlIG1pblxyXG4gICAqIEBwYXJhbSBtYXggcmFuZ2UgbWF4XHJcbiAgICovXHJcbiAgLyogdHNsaW50OmRpc2FibGU6bm8tYW55ICovXHJcbiAgcHVibGljIHN0YXRpYyB2ZXJpZnlSYW5nZVBhcmFtVHlwZShtaW46IGFueSwgbWF4OiBhbnkpOiB2b2lkIHtcclxuICAvKiB0c2xpbnQ6ZW5hYmxlOm5vLWFueSAqL1xyXG4gICAgaWYgKCFtaW4gJiYgIW1heCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgUGFyYW1ldGVyOiBBdCBsZWFzdCBvbmUgb2YgbWluIG9yIG1heCBpcyByZXF1aXJlZCcpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghUGFyYW0uaXNUeXBlTnVtYmVyKG1pbikgJiYgIVBhcmFtLmlzVHlwZURhdGUobWluKSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgUGFyYW1ldGVyIFR5cGU6IE9ubHkgRGF0ZSBhbmQgbnVtYmVyIGFyZSBhbGxvd2VkIGZvciBwYXJhbWV0ZXIgbWluJyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFQYXJhbS5pc1R5cGVOdW1iZXIobWF4KSAmJiAhUGFyYW0uaXNUeXBlRGF0ZShtYXgpKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBQYXJhbWV0ZXIgVHlwZTogT25seSBEYXRlIGFuZCBudW1iZXIgYXJlIGFsbG93ZWQgZm9yIHBhcmFtZXRlciBtYXgnKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHlwZW9mKG1pbikgIT09IHR5cGVvZihtYXgpKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBQYXJhbWV0ZXIgVHlwZTogUGFyYW1ldGVycyBtaW4gYW5kIG1heCBzaG91bGQgYmUgb2YgdGhlIHNhbWUgdHlwZScpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmVyaWZpZXMgdGhlIGlucHV0IGlzIGEgbnVtYmVyXHJcbiAgICovXHJcbiAgLyogdHNsaW50OmRpc2FibGU6bm8tYW55ICovXHJcbiAgcHVibGljIHN0YXRpYyBpc1R5cGVOdW1iZXIoaW5wdXQ6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHR5cGVvZihpbnB1dCkgPT09ICdudW1iZXInIHx8IGlucHV0IGluc3RhbmNlb2YgTnVtYmVyO1xyXG4gIH1cclxuICAvKiB0c2xpbnQ6ZW5hYmxlOm5vLWFueSAqL1xyXG5cclxuICAvKipcclxuICAgKiBWZXJpZmllcyB0aGUgaW5wdXQgaXMgYSBEYXRlXHJcbiAgICovXHJcbiAgLyogdHNsaW50OmRpc2FibGU6bm8tYW55ICovXHJcbiAgcHVibGljIHN0YXRpYyBpc1R5cGVEYXRlKGlucHV0OiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBpbnB1dCBpbnN0YW5jZW9mIERhdGU7XHJcbiAgfVxyXG4gIC8qIHRzbGludDplbmFibGU6bm8tYW55ICovXHJcblxyXG4gIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnkgKi9cclxuICBwdWJsaWMgc3RhdGljIGlzVHlwZVN0cmluZyhpbnB1dDogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHlwZW9mKGlucHV0KSA9PT0gJ3N0cmluZycgfHwgaW5wdXQgaW5zdGFuY2VvZiBTdHJpbmc7XHJcbiAgfVxyXG5cclxuICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55ICovXHJcbiAgcHVibGljIHN0YXRpYyBpc1R5cGVCb29sKGlucHV0OiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0eXBlb2YoaW5wdXQpID09PSAnYm9vbGVhbicgfHwgaW5wdXQgaW5zdGFuY2VvZiBCb29sZWFuO1xyXG4gIH1cclxuXHJcbiAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueSAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgc2VyaWFsaXplUGFyYW10ZXJWYWx1ZSh2YWx1ZTogYW55KTogc3RyaW5nIHtcclxuICAgIGlmIChQYXJhbS5pc1R5cGVOdW1iZXIodmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiBQYXJhbS5zZXJpYWxpemVOdW1iZXJGb3JQbGF0Zm9ybSh2YWx1ZSBhcyBudW1iZXIpO1xyXG4gICAgfSBlbHNlIGlmIChQYXJhbS5pc1R5cGVEYXRlKHZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gUGFyYW0uc2VyaWFsaXplRGF0ZUZvclBsYXRmb3JtKHZhbHVlIGFzIERhdGUpO1xyXG4gICAgfSBlbHNlIGlmIChQYXJhbS5pc1R5cGVCb29sKHZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gUGFyYW0uc2VyaWFsaXplQm9vbGVhbkZvclBsYXRmb3JtKHZhbHVlIGFzIGJvb2xlYW4pO1xyXG4gICAgfSBlbHNlIGlmIChQYXJhbS5pc1R5cGVTdHJpbmcodmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignVmFsdWUgaXMgaW52YWxpZCBmb3IgYXJndW1lbnQ6IHZhbHVlJyk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi90eXBlc2NyaXB0L2pzLWFwaS9hcGktdXRpbHMvc3JjL1BhcmFtLnRzXG4gKiovIiwiaW1wb3J0IHsgRmlsdGVyTnVsbE9wdGlvbiBhcyBFeHRlcm5hbE51bGxPcHRpb24gfSBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xyXG5pbXBvcnQgeyBGaWx0ZXJOdWxsT3B0aW9uIGFzIEludGVybmFsTnVsbE9wdGlvbiB9IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XHJcblxyXG5pbXBvcnQgeyBFbnVtQ29udmVydGVyIH0gZnJvbSAnQHRhYmxlYXUvYXBpLXV0aWxzJztcclxuXHJcbi8qIHRzbGludDpkaXNhYmxlOnR5cGVkZWYgLSBEaXNhYmxlIHRoaXMgdG8gbWFrZSBkZWNsYXJpbmcgdGhlc2UgY2xhc3NlcyBhIGJpdCBlYXNpZXIgKi9cclxuLyoqXHJcbiAqIE1hcHMgZW51bXMgdXNlZCBieSB0aGUgZXh0ZXJuYWwtYXBpLWNvbnRyYWN0IHRvIHRoZSBlbnVtcyB1c2VkXHJcbiAqIGluIHRoZSBpbnRlcm5hbC1hcGktY29udHJhY3QsIHdoaWNoIGRldmVsb3BlcnMgY29kZSBhZ2FpbnN0LlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEV4dGVybmFsVG9JbnRlcm5hbEVudW1NYXBwaW5ncyB7XHJcbiAgcHVibGljIHN0YXRpYyBudWxsT3B0aW9ucyA9IG5ldyBFbnVtQ29udmVydGVyPEV4dGVybmFsTnVsbE9wdGlvbiwgSW50ZXJuYWxOdWxsT3B0aW9uPih7XHJcbiAgICBbRXh0ZXJuYWxOdWxsT3B0aW9uLkFsbFZhbHVlc106IEludGVybmFsTnVsbE9wdGlvbi5BbGxWYWx1ZXMsXHJcbiAgICBbRXh0ZXJuYWxOdWxsT3B0aW9uLk5vbk51bGxWYWx1ZXNdOiBJbnRlcm5hbE51bGxPcHRpb24uTm9uTnVsbFZhbHVlcyxcclxuICAgIFtFeHRlcm5hbE51bGxPcHRpb24uTm9uTnVsbFZhbHVlc106IEludGVybmFsTnVsbE9wdGlvbi5OdWxsVmFsdWVzXHJcbiAgfSk7XHJcbn1cclxuLyogdHNsaW50OmVuYWJsZTp0eXBlZGVmICovXHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi90eXBlc2NyaXB0L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9FbnVtTWFwcGluZ3MvRXh0ZXJuYWxUb0ludGVybmFsRW51bU1hcHBpbmdzLnRzXG4gKiovIiwiaW1wb3J0IHtcclxuICBBZGRJbkNvbnRleHQgYXMgRXh0ZXJuYWxBZGRJbkNvbnRleHQsXHJcbiAgQWRkSW5Nb2RlIGFzIEV4dGVybmFsQWRkSW5Nb2RlLFxyXG4gIENvbHVtblR5cGUgYXMgRXh0ZXJuYWxDb2x1bW5UeXBlLFxyXG4gIERhc2hib2FyZE9iamVjdFR5cGUgYXMgRXh0ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLFxyXG4gIERhdGFUeXBlIGFzIEV4dGVybmFsRGF0YVR5cGUsXHJcbiAgRGF0ZVJhbmdlVHlwZSBhcyBFeHRlcm5hbERhdGVSYW5nZVR5cGUsXHJcbiAgRmllbGRBZ2dyZWdhdGlvblR5cGUgYXMgRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZSxcclxuICBGaWVsZFJvbGVUeXBlIGFzIEV4dGVybmFsRmllbGRSb2xlVHlwZSxcclxuICBGaWx0ZXJUeXBlIGFzIEV4dGVybmFsRmlsdGVyVHlwZSxcclxuICBGaWx0ZXJVcGRhdGVUeXBlIGFzIEV4dGVybmFsRmlsdGVyVXBkYXRlVHlwZSxcclxuICBQYXJhbWV0ZXJWYWx1ZVR5cGUgYXMgRXh0ZXJuYWxQYXJhbWV0ZXJWYWx1ZVR5cGUsXHJcbiAgUGVyaW9kVHlwZSBhcyBFeHRlcm5hbERhdGVQZXJpb2QsXHJcbiAgU2hlZXRUeXBlIGFzIEV4dGVybmFsU2hlZXRUeXBlLFxyXG59IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XHJcbmltcG9ydCB7XHJcbiAgQWRkSW5Db250ZXh0IGFzIEludGVybmFsQWRkSW5Db250ZXh0LFxyXG4gIEFkZEluTW9kZSBhcyBJbnRlcm5hbEFkZEluTW9kZSxcclxuICBDb2x1bW5UeXBlIGFzIEludGVybmFsQ29sdW1uVHlwZSxcclxuICBEYXNoYm9hcmRPYmplY3RUeXBlIGFzIEludGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZSxcclxuICBEYXRhVHlwZSBhcyBJbnRlcm5hbERhdGFUeXBlLFxyXG4gIERhdGVSYW5nZVR5cGUgYXMgSW50ZXJuYWxEYXRlUmFuZ2VUeXBlLFxyXG4gIERhdGVTdGVwUGVyaW9kIGFzIEludGVybmFsRGF0ZVN0ZXBQZXJpb2QsXHJcbiAgRG9tYWluUmVzdHJpY3Rpb25UeXBlIGFzIEludGVybmFsRG9tYWluUmVzdHJpY3Rpb25UeXBlLFxyXG4gIEZpZWxkQWdncmVnYXRpb25UeXBlIGFzIEludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUsXHJcbiAgRmllbGRSb2xlVHlwZSBhcyBJbnRlcm5hbEZpZWxkUm9sZVR5cGUsXHJcbiAgRmlsdGVyVHlwZSBhcyBJbnRlcm5hbEZpbHRlclR5cGUsXHJcbiAgRmlsdGVyVXBkYXRlVHlwZSBhcyBJbnRlcm5hbEZpbHRlclVwZGF0ZVR5cGUsXHJcbiAgU2hlZXRUeXBlIGFzIEludGVybmFsU2hlZXRUeXBlLFxyXG59IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XHJcbmltcG9ydCB7IEVudW1Db252ZXJ0ZXIgfSBmcm9tICdAdGFibGVhdS9hcGktdXRpbHMnO1xyXG5cclxuLyogdHNsaW50OmRpc2FibGU6dHlwZWRlZiAtIERpc2FibGUgdGhpcyB0byBtYWtlIGRlY2xhcmluZyB0aGVzZSBjbGFzc2VzIGEgYml0IGVhc2llciAqL1xyXG4vKipcclxuICogTWFwcyBlbnVtcyB1c2VkIGJ5IHRoZSBpbnRlcm5hbC1hcGktY29udHJhY3QgdG8gdGhlIGVudW1zIHVzZWRcclxuICogaW4gdGhlIGV4dGVybmFsLWFwaS1jb250cmFjdCwgd2hpY2ggZGV2ZWxvcGVycyBjb2RlIGFnYWluc3QuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzIHtcclxuICBwdWJsaWMgc3RhdGljIGFkZEluQ29udGV4dCA9IG5ldyBFbnVtQ29udmVydGVyPEludGVybmFsQWRkSW5Db250ZXh0LCBFeHRlcm5hbEFkZEluQ29udGV4dD4oe1xyXG4gICAgW0ludGVybmFsQWRkSW5Db250ZXh0LkRlc2t0b3BdOiBFeHRlcm5hbEFkZEluQ29udGV4dC5EZXNrdG9wLFxyXG4gICAgW0ludGVybmFsQWRkSW5Db250ZXh0LlNlcnZlcl06IEV4dGVybmFsQWRkSW5Db250ZXh0LlNlcnZlclxyXG4gIH0pO1xyXG5cclxuICBwdWJsaWMgc3RhdGljIGFkZEluTW9kZSA9IG5ldyBFbnVtQ29udmVydGVyPEludGVybmFsQWRkSW5Nb2RlLCBFeHRlcm5hbEFkZEluTW9kZT4oe1xyXG4gICAgW0ludGVybmFsQWRkSW5Nb2RlLkF1dGhvcmluZ106IEV4dGVybmFsQWRkSW5Nb2RlLkF1dGhvcmluZyxcclxuICAgIFtJbnRlcm5hbEFkZEluTW9kZS5WaWV3aW5nXTogRXh0ZXJuYWxBZGRJbk1vZGUuVmlld2luZ1xyXG4gIH0pO1xyXG5cclxuICBwdWJsaWMgc3RhdGljIGNvbHVtblR5cGUgPSBuZXcgRW51bUNvbnZlcnRlcjxJbnRlcm5hbENvbHVtblR5cGUsIEV4dGVybmFsQ29sdW1uVHlwZT4oe1xyXG4gICAgW0ludGVybmFsQ29sdW1uVHlwZS5Db250aW51b3VzXTogRXh0ZXJuYWxDb2x1bW5UeXBlLkNvbnRpbnVvdXMsXHJcbiAgICBbSW50ZXJuYWxDb2x1bW5UeXBlLkRpc2NyZXRlXTogRXh0ZXJuYWxDb2x1bW5UeXBlLkRpc2NyZXRlXHJcbiAgfSk7XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgZmllbGRBZ2dyZWdhdGlvblR5cGUgPSBuZXcgRW51bUNvbnZlcnRlcjxJbnRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLCBFeHRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlPih7XHJcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5BdHRyXTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5BdHRyLFxyXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuQXZnXTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5BdmcsXHJcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5Db3VudF06IEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuQ291bnQsXHJcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5Db3VudGRdOiBFeHRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLkNvdW50ZCxcclxuICAgIFtJbnRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLkRheV06IEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuRGF5LFxyXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuRW5kXTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5FbmQsXHJcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5Ib3VyXTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5Ib3VyLFxyXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuSW5PdXRdOiBFeHRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLkluT3V0LFxyXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuS3VydG9zaXNdOiBFeHRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLkt1cnRvc2lzLFxyXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuTWF4XTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5NYXgsXHJcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5NZHldOiBFeHRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLk1keSxcclxuICAgIFtJbnRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLk1lZGlhbl06IEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuTWVkaWFuLFxyXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuTWluXTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5NaW4sXHJcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5NaW51dGVdOiBFeHRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLk1pbnV0ZSxcclxuICAgIFtJbnRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLk1vbnRoWWVhcl06IEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuTW9udGhZZWFyLFxyXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuTm9uZV06IEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuTm9uZSxcclxuICAgIFtJbnRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlF0cl06IEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuUXRyLFxyXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuUXVhcnQxXTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5RdWFydDEsXHJcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5RdWFydDNdOiBFeHRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlF1YXJ0MyxcclxuICAgIFtJbnRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlNlY29uZF06IEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuU2Vjb25kLFxyXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuU2tld25lc3NdOiBFeHRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlNrZXduZXNzLFxyXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuU3RkZXZdOiBFeHRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlN0ZGV2LFxyXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuU3RkZXZwXTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5TdGRldnAsXHJcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5TdW1dOiBFeHRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlN1bSxcclxuICAgIFtJbnRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlRydW5jRGF5XTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5UcnVuY0RheSxcclxuICAgIFtJbnRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlRydW5jSG91cl06IEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuVHJ1bmNIb3VyLFxyXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuVHJ1bmNNaW51dGVdOiBFeHRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlRydW5jTWludXRlLFxyXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuVHJ1bmNNb250aF06IEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuVHJ1bmNNb250aCxcclxuICAgIFtJbnRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlRydW5jUXRyXTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5UcnVuY1F0cixcclxuICAgIFtJbnRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlRydW5jU2Vjb25kXTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5UcnVuY1NlY29uZCxcclxuICAgIFtJbnRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLlRydW5jV2Vla106IEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuVHJ1bmNXZWVrLFxyXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuVHJ1bmNZZWFyXTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5UcnVuY1llYXIsXHJcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5Vc2VyXTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5Vc2VyLFxyXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuVmFyXTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5WYXIsXHJcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5WYXJwXTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5WYXJwLFxyXG4gICAgW0ludGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuV2Vla106IEV4dGVybmFsRmllbGRBZ2dyZWdhdGlvblR5cGUuV2VlayxcclxuICAgIFtJbnRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLldlZWtkYXldOiBFeHRlcm5hbEZpZWxkQWdncmVnYXRpb25UeXBlLldlZWtkYXksXHJcbiAgICBbSW50ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5ZZWFyXTogRXh0ZXJuYWxGaWVsZEFnZ3JlZ2F0aW9uVHlwZS5ZZWFyLFxyXG4gIH0pO1xyXG5cclxuICBwdWJsaWMgc3RhdGljIGZpZWxkUm9sZVR5cGUgPSBuZXcgRW51bUNvbnZlcnRlcjxJbnRlcm5hbEZpZWxkUm9sZVR5cGUsIEV4dGVybmFsRmllbGRSb2xlVHlwZT4oe1xyXG4gICAgW0ludGVybmFsRmllbGRSb2xlVHlwZS5EaW1lbnNpb25dOiBFeHRlcm5hbEZpZWxkUm9sZVR5cGUuRGltZW5zaW9uLFxyXG4gICAgW0ludGVybmFsRmllbGRSb2xlVHlwZS5NZWFzdXJlXTogRXh0ZXJuYWxGaWVsZFJvbGVUeXBlLk1lYXN1cmUsXHJcbiAgICBbSW50ZXJuYWxGaWVsZFJvbGVUeXBlLlVua25vd25dOiBFeHRlcm5hbEZpZWxkUm9sZVR5cGUuVW5rbm93bixcclxuICB9KTtcclxuXHJcbiAgcHVibGljIHN0YXRpYyBzaGVldFR5cGUgPSBuZXcgRW51bUNvbnZlcnRlcjxJbnRlcm5hbFNoZWV0VHlwZSwgRXh0ZXJuYWxTaGVldFR5cGU+KHtcclxuICAgIFtJbnRlcm5hbFNoZWV0VHlwZS5EYXNoYm9hcmRdOiBFeHRlcm5hbFNoZWV0VHlwZS5EYXNoYm9hcmQsXHJcbiAgICBbSW50ZXJuYWxTaGVldFR5cGUuU3RvcnldOiBFeHRlcm5hbFNoZWV0VHlwZS5TdG9yeSxcclxuICAgIFtJbnRlcm5hbFNoZWV0VHlwZS5Xb3Jrc2hlZXRdOiBFeHRlcm5hbFNoZWV0VHlwZS5Xb3Jrc2hlZXRcclxuICB9KTtcclxuXHJcbiAgcHVibGljIHN0YXRpYyBkYXNoYm9hcmRPYmplY3RUeXBlID0gbmV3IEVudW1Db252ZXJ0ZXI8SW50ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLCBFeHRlcm5hbERhc2hib2FyZE9iamVjdFR5cGU+KHtcclxuICAgIFtJbnRlcm5hbERhc2hib2FyZE9iamVjdFR5cGUuQWRkSW5dOiBFeHRlcm5hbERhc2hib2FyZE9iamVjdFR5cGUuQWRkSW4sXHJcbiAgICBbSW50ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLkJsYW5rXTogRXh0ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLkJsYW5rLFxyXG4gICAgW0ludGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZS5JbWFnZV06IEV4dGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZS5JbWFnZSxcclxuICAgIFtJbnRlcm5hbERhc2hib2FyZE9iamVjdFR5cGUuTGVnZW5kXTogRXh0ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLkxlZ2VuZCxcclxuICAgIFtJbnRlcm5hbERhc2hib2FyZE9iamVjdFR5cGUuUGFnZUZpbHRlcl06IEV4dGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZS5QYWdlRmlsdGVyLFxyXG4gICAgW0ludGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZS5QYXJhbWV0ZXJDb250cm9sXTogRXh0ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLlBhcmFtZXRlckNvbnRyb2wsXHJcbiAgICBbSW50ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLlF1aWNrRmlsdGVyXTogRXh0ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLlF1aWNrRmlsdGVyLFxyXG4gICAgW0ludGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZS5UZXh0XTogRXh0ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLlRleHQsXHJcbiAgICBbSW50ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLlRpdGxlXTogRXh0ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLlRpdGxlLFxyXG4gICAgW0ludGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZS5XZWJQYWdlXTogRXh0ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLldlYlBhZ2UsXHJcbiAgICBbSW50ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLldvcmtzaGVldF06IEV4dGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZS5Xb3Jrc2hlZXRcclxuICB9KTtcclxuXHJcbiAgcHVibGljIHN0YXRpYyBkYXRhVHlwZSA9IG5ldyBFbnVtQ29udmVydGVyPEludGVybmFsRGF0YVR5cGUsIEV4dGVybmFsRGF0YVR5cGU+KHtcclxuICAgIFtJbnRlcm5hbERhdGFUeXBlLkJvb2xdOiBFeHRlcm5hbERhdGFUeXBlLkJvb2wsXHJcbiAgICBbSW50ZXJuYWxEYXRhVHlwZS5EYXRlXTogRXh0ZXJuYWxEYXRhVHlwZS5EYXRlLFxyXG4gICAgW0ludGVybmFsRGF0YVR5cGUuRGF0ZVRpbWVdOiBFeHRlcm5hbERhdGFUeXBlLkRhdGVUaW1lLFxyXG4gICAgW0ludGVybmFsRGF0YVR5cGUuRmxvYXRdOiBFeHRlcm5hbERhdGFUeXBlLkZsb2F0LFxyXG4gICAgW0ludGVybmFsRGF0YVR5cGUuSW50XTogRXh0ZXJuYWxEYXRhVHlwZS5JbnQsXHJcbiAgICBbSW50ZXJuYWxEYXRhVHlwZS5TdHJpbmddOiBFeHRlcm5hbERhdGFUeXBlLlN0cmluZ1xyXG4gIH0pO1xyXG5cclxuICBwdWJsaWMgc3RhdGljIGZpbHRlclVwZGF0ZVR5cGUgPSBuZXcgRW51bUNvbnZlcnRlcjxJbnRlcm5hbEZpbHRlclVwZGF0ZVR5cGUsIEV4dGVybmFsRmlsdGVyVXBkYXRlVHlwZT4oe1xyXG4gICAgW0ludGVybmFsRmlsdGVyVXBkYXRlVHlwZS5BZGRdOiBFeHRlcm5hbEZpbHRlclVwZGF0ZVR5cGUuQWRkLFxyXG4gICAgW0ludGVybmFsRmlsdGVyVXBkYXRlVHlwZS5BbGxdOiBFeHRlcm5hbEZpbHRlclVwZGF0ZVR5cGUuQWxsLFxyXG4gICAgW0ludGVybmFsRmlsdGVyVXBkYXRlVHlwZS5SZW1vdmVdOiBFeHRlcm5hbEZpbHRlclVwZGF0ZVR5cGUuUmVtb3ZlLFxyXG4gICAgW0ludGVybmFsRmlsdGVyVXBkYXRlVHlwZS5SZXBsYWNlXTogRXh0ZXJuYWxGaWx0ZXJVcGRhdGVUeXBlLlJlcGxhY2VcclxuICB9KTtcclxuXHJcbiAgcHVibGljIHN0YXRpYyBhbGxvd2FibGVWYWx1ZXMgPSBuZXcgRW51bUNvbnZlcnRlcjxJbnRlcm5hbERvbWFpblJlc3RyaWN0aW9uVHlwZSwgRXh0ZXJuYWxQYXJhbWV0ZXJWYWx1ZVR5cGU+KHtcclxuICAgIFtJbnRlcm5hbERvbWFpblJlc3RyaWN0aW9uVHlwZS5BbGxdOiBFeHRlcm5hbFBhcmFtZXRlclZhbHVlVHlwZS5BbGwsXHJcbiAgICBbSW50ZXJuYWxEb21haW5SZXN0cmljdGlvblR5cGUuTGlzdF06IEV4dGVybmFsUGFyYW1ldGVyVmFsdWVUeXBlLkxpc3QsXHJcbiAgICBbSW50ZXJuYWxEb21haW5SZXN0cmljdGlvblR5cGUuUmFuZ2VdOiBFeHRlcm5hbFBhcmFtZXRlclZhbHVlVHlwZS5SYW5nZVxyXG4gIH0pO1xyXG5cclxuICBwdWJsaWMgc3RhdGljIGRhdGVTdGVwUGVyaW9kID0gbmV3IEVudW1Db252ZXJ0ZXI8SW50ZXJuYWxEYXRlU3RlcFBlcmlvZCwgRXh0ZXJuYWxEYXRlUGVyaW9kPih7XHJcbiAgICBbSW50ZXJuYWxEYXRlU3RlcFBlcmlvZC5ZZWFyc106IEV4dGVybmFsRGF0ZVBlcmlvZC5ZZWFycyxcclxuICAgIFtJbnRlcm5hbERhdGVTdGVwUGVyaW9kLlF1YXJ0ZXJzXTogRXh0ZXJuYWxEYXRlUGVyaW9kLlF1YXJ0ZXJzLFxyXG4gICAgW0ludGVybmFsRGF0ZVN0ZXBQZXJpb2QuTW9udGhzXTogRXh0ZXJuYWxEYXRlUGVyaW9kLk1vbnRocyxcclxuICAgIFtJbnRlcm5hbERhdGVTdGVwUGVyaW9kLldlZWtzXTogRXh0ZXJuYWxEYXRlUGVyaW9kLldlZWtzLFxyXG4gICAgW0ludGVybmFsRGF0ZVN0ZXBQZXJpb2QuRGF5c106IEV4dGVybmFsRGF0ZVBlcmlvZC5EYXlzLFxyXG4gICAgW0ludGVybmFsRGF0ZVN0ZXBQZXJpb2QuSG91cnNdOiBFeHRlcm5hbERhdGVQZXJpb2QuSG91cnMsXHJcbiAgICBbSW50ZXJuYWxEYXRlU3RlcFBlcmlvZC5NaW51dGVzXTogRXh0ZXJuYWxEYXRlUGVyaW9kLk1pbnV0ZXMsXHJcbiAgICBbSW50ZXJuYWxEYXRlU3RlcFBlcmlvZC5TZWNvbmRzXTogRXh0ZXJuYWxEYXRlUGVyaW9kLlNlY29uZHNcclxuICB9KTtcclxuXHJcbiAgcHVibGljIHN0YXRpYyBkYXRlUmFuZ2VUeXBlID0gbmV3IEVudW1Db252ZXJ0ZXI8SW50ZXJuYWxEYXRlUmFuZ2VUeXBlLCBFeHRlcm5hbERhdGVSYW5nZVR5cGU+KHtcclxuICAgIFtJbnRlcm5hbERhdGVSYW5nZVR5cGUuQ3VycmVudF06IEV4dGVybmFsRGF0ZVJhbmdlVHlwZS5DdXJyZW50LFxyXG4gICAgW0ludGVybmFsRGF0ZVJhbmdlVHlwZS5MYXN0XTogRXh0ZXJuYWxEYXRlUmFuZ2VUeXBlLkxhc3QsXHJcbiAgICBbSW50ZXJuYWxEYXRlUmFuZ2VUeXBlLkxhc3ROXTogRXh0ZXJuYWxEYXRlUmFuZ2VUeXBlLkxhc3ROLFxyXG4gICAgW0ludGVybmFsRGF0ZVJhbmdlVHlwZS5OZXh0XTogRXh0ZXJuYWxEYXRlUmFuZ2VUeXBlLk5leHQsXHJcbiAgICBbSW50ZXJuYWxEYXRlUmFuZ2VUeXBlLk5leHROXTogRXh0ZXJuYWxEYXRlUmFuZ2VUeXBlLk5leHROLFxyXG4gICAgW0ludGVybmFsRGF0ZVJhbmdlVHlwZS5Ub0RhdGVdOiBFeHRlcm5hbERhdGVSYW5nZVR5cGUuVG9EYXRlXHJcbiAgfSk7XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgZmlsdGVyVHlwZSA9IG5ldyBFbnVtQ29udmVydGVyPEludGVybmFsRmlsdGVyVHlwZSwgRXh0ZXJuYWxGaWx0ZXJUeXBlPih7XHJcbiAgICBbSW50ZXJuYWxGaWx0ZXJUeXBlLkNhdGVnb3JpY2FsXTogRXh0ZXJuYWxGaWx0ZXJUeXBlLkNhdGVnb3JpY2FsLFxyXG4gICAgW0ludGVybmFsRmlsdGVyVHlwZS5SYW5nZV0gOiBFeHRlcm5hbEZpbHRlclR5cGUuUmFuZ2UsXHJcbiAgICBbSW50ZXJuYWxGaWx0ZXJUeXBlLlJlbGF0aXZlRGF0ZV06IEV4dGVybmFsRmlsdGVyVHlwZS5SZWxhdGl2ZURhdGUsXHJcbiAgICBbSW50ZXJuYWxGaWx0ZXJUeXBlLkhpZXJhcmNoaWNhbF06IEV4dGVybmFsRmlsdGVyVHlwZS5IaWVyYXJjaGljYWxcclxuICB9KTtcclxufVxyXG4vKiB0c2xpbnQ6ZW5hYmxlOnR5cGVkZWYgKi9cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogRDovZGV2L3R5cGVzY3JpcHQvanMtYXBpL2FwaS1zaGFyZWQvc3JjL0VudW1NYXBwaW5ncy9JbnRlcm5hbFRvRXh0ZXJuYWxFbnVtTWFwcGluZ3MudHNcbiAqKi8iLCJpbXBvcnQgKiBhcyBDb250cmFjdCBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xyXG5cclxuZXhwb3J0IGNsYXNzIEZpbHRlciBpbXBsZW1lbnRzIENvbnRyYWN0LkZpbHRlciB7XHJcbiAgcHJvdGVjdGVkIF93b3Jrc2hlZXROYW1lOiBzdHJpbmc7XHJcbiAgcHJvdGVjdGVkIF9maWVsZE5hbWU6IHN0cmluZztcclxuICBwcm90ZWN0ZWQgX2ZpbHRlclR5cGU6IENvbnRyYWN0LkZpbHRlclR5cGU7XHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKHdvcmtzaGVldE5hbWU6IHN0cmluZywgZmllbGROYW1lOiBzdHJpbmcsIGZpbHRlclR5cGU6IENvbnRyYWN0LkZpbHRlclR5cGUpIHtcclxuICAgIHRoaXMuX3dvcmtzaGVldE5hbWUgPSB3b3Jrc2hlZXROYW1lO1xyXG4gICAgdGhpcy5fZmllbGROYW1lID0gZmllbGROYW1lO1xyXG4gICAgdGhpcy5fZmlsdGVyVHlwZSA9IGZpbHRlclR5cGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHdvcmtzaGVldE5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl93b3Jrc2hlZXROYW1lO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBmaWVsZE5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9maWVsZE5hbWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGZpbHRlclR5cGUoKTogQ29udHJhY3QuRmlsdGVyVHlwZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyVHlwZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRGaWVsZEFzeW5jKCk6IFByb21pc2U8Q29udHJhY3QuRmllbGQ+IHtcclxuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZCcpO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENhdGVnb3JpY2FsRmlsdGVyIGV4dGVuZHMgRmlsdGVyIGltcGxlbWVudHMgQ29udHJhY3QuQ2F0ZWdvcmljYWxGaWx0ZXIge1xyXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcclxuICAgIHdvcmtzaGVldE5hbWU6IHN0cmluZyxcclxuICAgIGZpZWxkTmFtZTogc3RyaW5nLFxyXG4gICAgZmlsdGVyVHlwZTogQ29udHJhY3QuRmlsdGVyVHlwZSxcclxuICAgIHByaXZhdGUgX2FwcGxpZWRWYWx1ZXM6IENvbnRyYWN0LkRhdGFWYWx1ZVtdLFxyXG4gICAgcHJpdmF0ZSBfaXNFeGNsdWRlTW9kZTogYm9vbGVhbikge1xyXG4gICAgICBzdXBlcih3b3Jrc2hlZXROYW1lLCBmaWVsZE5hbWUsIGZpbHRlclR5cGUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBhcHBsaWVkVmFsdWVzKCk6IENvbnRyYWN0LkRhdGFWYWx1ZVtdIHtcclxuICAgIHJldHVybiB0aGlzLl9hcHBsaWVkVmFsdWVzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBpc0V4Y2x1ZGVNb2RlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lzRXhjbHVkZU1vZGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Q2F0ZWdvcmljYWxEb21haW5Bc3luYygpOiBQcm9taXNlPENvbnRyYWN0LkNhdGVnb3JpY2FsRG9tYWluPiB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQnKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSYW5nZUZpbHRlciBleHRlbmRzIEZpbHRlciBpbXBsZW1lbnRzIENvbnRyYWN0LlJhbmdlRmlsdGVyIHtcclxuICBwdWJsaWMgY29uc3RydWN0b3IoXHJcbiAgICB3b3Jrc2hlZXROYW1lOiBzdHJpbmcsXHJcbiAgICBmaWVsZE5hbWU6IHN0cmluZyxcclxuICAgIGZpbHRlclR5cGU6IENvbnRyYWN0LkZpbHRlclR5cGUsXHJcbiAgICBwcml2YXRlIF9taW46IENvbnRyYWN0LkRhdGFWYWx1ZSxcclxuICAgIHByaXZhdGUgX21heDogQ29udHJhY3QuRGF0YVZhbHVlLFxyXG4gICAgcHJpdmF0ZSBfaW5jbHVkZU51bGxWYWx1ZXM6IGJvb2xlYW4pIHtcclxuICAgICAgc3VwZXIod29ya3NoZWV0TmFtZSwgZmllbGROYW1lLCBmaWx0ZXJUeXBlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgbWluVmFsdWUoKTogQ29udHJhY3QuRGF0YVZhbHVlIHtcclxuICAgIHJldHVybiB0aGlzLl9taW47XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IG1heFZhbHVlKCk6IENvbnRyYWN0LkRhdGFWYWx1ZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbWF4O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBpbmNsdWRlTnVsbFZhbHVlcygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9pbmNsdWRlTnVsbFZhbHVlcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyAgZ2V0UmFuZ2VGaWx0ZXJEb21haW5Bc3luYygpOiBQcm9taXNlPENvbnRyYWN0LlJhbmdlRG9tYWluPiB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQnKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSZWxhdGl2ZURhdGVGaWx0ZXIgZXh0ZW5kcyBGaWx0ZXIgaW1wbGVtZW50cyBDb250cmFjdC5SZWxhdGl2ZURhdGVGaWx0ZXIge1xyXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcclxuICAgIHdvcmtzaGVldE5hbWU6IHN0cmluZyxcclxuICAgIGZpZWxkTmFtZTogc3RyaW5nLFxyXG4gICAgZmlsdGVyVHlwZTogQ29udHJhY3QuRmlsdGVyVHlwZSxcclxuICAgIHByaXZhdGUgX2FuY2hvckRhdGU6IENvbnRyYWN0LkRhdGFWYWx1ZSxcclxuICAgIHByaXZhdGUgX3BlcmlvZFR5cGU6IENvbnRyYWN0LlBlcmlvZFR5cGUsXHJcbiAgICBwcml2YXRlIF9yYW5nZVR5cGU6IENvbnRyYWN0LkRhdGVSYW5nZVR5cGUsXHJcbiAgICBwcml2YXRlIF9yYW5nZU46IG51bWJlcikge1xyXG4gICAgICBzdXBlcih3b3Jrc2hlZXROYW1lLCBmaWVsZE5hbWUsIGZpbHRlclR5cGUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBhbmNob3JEYXRlKCk6IENvbnRyYWN0LkRhdGFWYWx1ZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fYW5jaG9yRGF0ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgcGVyaW9kVHlwZSgpOiBDb250cmFjdC5QZXJpb2RUeXBlIHtcclxuICAgIHJldHVybiB0aGlzLl9wZXJpb2RUeXBlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCByYW5nZVR5cGUoKTogQ29udHJhY3QuRGF0ZVJhbmdlVHlwZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcmFuZ2VUeXBlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCByYW5nZU4oKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9yYW5nZU47XHJcbiAgfVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi90eXBlc2NyaXB0L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9Nb2RlbHMvRmlsdGVyTW9kZWxzLnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcclxuaW1wb3J0IHtcclxuICBEYXRhVGFibGUgYXMgRGF0YVRhYmxlSW50ZXJuYWxDb250cmFjdCxcclxuICBFeGVjdXRlUGFyYW1ldGVycyxcclxuICBIaWdobGlnaHRlZE1hcmtzVGFibGUsXHJcbiAgSW50ZXJuYWxBcGlEaXNwYXRjaGVyLFxyXG4gIFBhcmFtZXRlcklkLFxyXG4gIFNlbGVjdGVkTWFya3NUYWJsZSxcclxuICBVbmRlcmx5aW5nRGF0YVRhYmxlLFxyXG4gIFZlcmJJZCxcclxuICBWaXN1YWxJZCxcclxufSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xyXG5cclxuaW1wb3J0IHsgQ29sdW1uLCBEYXRhVGFibGUsIERhdGFWYWx1ZSwgTWFya0luZm8gfSBmcm9tICcuLi8uLi9Nb2RlbHMvR2V0RGF0YU1vZGVscyc7XHJcbmltcG9ydCB7IEdldERhdGFTZXJ2aWNlLCBHZXREYXRhVHlwZSB9IGZyb20gJy4uL0dldERhdGFTZXJ2aWNlJztcclxuaW1wb3J0IHsgU2VydmljZU5hbWVzIH0gZnJvbSAnLi4vU2VydmljZVJlZ2lzdHJ5JztcclxuXHJcbmV4cG9ydCBjbGFzcyBHZXREYXRhU2VydmljZUltcGwgaW1wbGVtZW50cyBHZXREYXRhU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBfZGlzcGF0Y2hlcjogSW50ZXJuYWxBcGlEaXNwYXRjaGVyO1xyXG5cclxuICBwdWJsaWMgY29uc3RydWN0b3IoZGlzcGF0Y2hlcjogSW50ZXJuYWxBcGlEaXNwYXRjaGVyKSB7XHJcbiAgICB0aGlzLl9kaXNwYXRjaGVyID0gZGlzcGF0Y2hlcjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc2VydmljZU5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBTZXJ2aWNlTmFtZXMuR2V0RGF0YTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRVbmRlcmx5aW5nRGF0YUFzeW5jKFxyXG4gICAgdmlzdWFsSWQ6IFZpc3VhbElkLFxyXG4gICAgZ2V0VHlwZTogR2V0RGF0YVR5cGUsXHJcbiAgICBpZ25vcmVBbGlhc2VzOiBib29sZWFuLFxyXG4gICAgaWdub3JlU2VsZWN0aW9uOiBib29sZWFuLFxyXG4gICAgaW5jbHVkZUFsbENvbHVtbnM6IGJvb2xlYW4sXHJcbiAgICBtYXhSb3dzOiBudW1iZXIpOiBQcm9taXNlPERhdGFUYWJsZT4ge1xyXG4gICAgICAvLyBDcmVhdGUgYWxsIG9mIG91ciBwYXJhbWV0ZXJzXHJcbiAgICAgIGNvbnN0IHZlcmIgPSBnZXRUeXBlID09PSBHZXREYXRhVHlwZS5TdW1tYXJ5ID8gVmVyYklkLkdldERhdGFTdW1tYXJ5RGF0YSA6IFZlcmJJZC5HZXRVbmRlcmx5aW5nRGF0YTtcclxuICAgICAgY29uc3QgcGFyYW1ldGVyczogRXhlY3V0ZVBhcmFtZXRlcnMgPSB7fTtcclxuICAgICAgcGFyYW1ldGVyc1tQYXJhbWV0ZXJJZC5WaXN1YWxJZF0gPSB2aXN1YWxJZDtcclxuICAgICAgcGFyYW1ldGVyc1tQYXJhbWV0ZXJJZC5JZ25vcmVBbGlhc2VzXSA9IGlnbm9yZUFsaWFzZXM7XHJcbiAgICAgIHBhcmFtZXRlcnNbUGFyYW1ldGVySWQuSWdub3JlU2VsZWN0aW9uXSA9IGlnbm9yZVNlbGVjdGlvbjtcclxuICAgICAgcGFyYW1ldGVyc1tQYXJhbWV0ZXJJZC5JbmNsdWRlQWxsQ29sdW1uc10gPSBpbmNsdWRlQWxsQ29sdW1ucztcclxuICAgICAgcGFyYW1ldGVyc1tQYXJhbWV0ZXJJZC5NYXhSb3dzXSA9IG1heFJvd3M7XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5fZGlzcGF0Y2hlci5leGVjdXRlKHZlcmIsIHBhcmFtZXRlcnMpLnRoZW48RGF0YVRhYmxlPihyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgY29uc3QgcmVzcG9uc2VEYXRhID0gcmVzcG9uc2UucmVzdWx0IGFzIFVuZGVybHlpbmdEYXRhVGFibGU7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1Jlc3VsdHNUYWJsZShyZXNwb25zZURhdGEuZGF0YSwgcmVzcG9uc2VEYXRhLmlzU3VtbWFyeSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICBwdWJsaWMgZ2V0U2VsZWN0ZWRNYXJrc0FzeW5jKHZpc3VhbElkOiBWaXN1YWxJZCk6IFByb21pc2U8Q29udHJhY3QuTWFya3NDb2xsZWN0aW9uPiB7XHJcbiAgICBjb25zdCBwYXJhbWV0ZXJzOiBFeGVjdXRlUGFyYW1ldGVycyA9IHsgW1BhcmFtZXRlcklkLlZpc3VhbElkXTogdmlzdWFsSWQgfTtcclxuICAgIHJldHVybiB0aGlzLl9kaXNwYXRjaGVyLmV4ZWN1dGUoVmVyYklkLkdldFNlbGVjdGVkTWFya3MsIHBhcmFtZXRlcnMpLnRoZW48Q29udHJhY3QuTWFya3NDb2xsZWN0aW9uPihyZXNwb25zZSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlc3BvbnNlRGF0YSA9IHJlc3BvbnNlLnJlc3VsdCBhcyBTZWxlY3RlZE1hcmtzVGFibGU7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgZGF0YTogcmVzcG9uc2VEYXRhLmRhdGEubWFwKHRhYmxlID0+IHRoaXMucHJvY2Vzc1Jlc3VsdHNUYWJsZSh0YWJsZSwgdHJ1ZSkpXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRIaWdobGlnaHRlZE1hcmtzQXN5bmModmlzdWFsSWQ6IFZpc3VhbElkKTogUHJvbWlzZTxDb250cmFjdC5NYXJrc0NvbGxlY3Rpb24+IHtcclxuICAgIGNvbnN0IHBhcmFtZXRlcnM6IEV4ZWN1dGVQYXJhbWV0ZXJzID0geyBbUGFyYW1ldGVySWQuVmlzdWFsSWRdOiB2aXN1YWxJZCB9O1xyXG4gICAgcmV0dXJuIHRoaXMuX2Rpc3BhdGNoZXIuZXhlY3V0ZShWZXJiSWQuR2V0SGlnaGxpZ2h0ZWRNYXJrcywgcGFyYW1ldGVycykudGhlbjxDb250cmFjdC5NYXJrc0NvbGxlY3Rpb24+KHJlc3BvbnNlID0+IHtcclxuICAgICAgY29uc3QgcmVzcG9uc2VEYXRhID0gcmVzcG9uc2UucmVzdWx0IGFzIEhpZ2hsaWdodGVkTWFya3NUYWJsZTtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBkYXRhOiByZXNwb25zZURhdGEuZGF0YS5tYXAodGFibGUgPT4gdGhpcy5wcm9jZXNzUmVzdWx0c1RhYmxlKHRhYmxlLCB0cnVlKSlcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHByb2Nlc3NSZXN1bHRzVGFibGUocmVzcG9uc2VEYXRhOiBEYXRhVGFibGVJbnRlcm5hbENvbnRyYWN0LCBpc1N1bW1hcnk6IGJvb2xlYW4pOiBEYXRhVGFibGUge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IHJlc3BvbnNlRGF0YS5oZWFkZXJzLm1hcChoID0+IG5ldyBDb2x1bW4oaC5maWVsZENhcHRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRyYWN0LkRhdGFUeXBlLlN0cmluZyAvKmguRGF0YVR5cGUqLyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaC5pc1JlZmVyZW5jZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGguaW5kZXgpKTtcclxuICAgIC8vIFRPRE8gVGhpcyBzaG91bGQgYmUgY29udHJvbGxlZCBieSBhIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRoaXMgYXBpIHdpbGwgcmVzcG9uZCBtYXJrcyBpbmZvIG9yIG5vdFxyXG4gICAgbGV0IG1hcmtzO1xyXG4gICAgaWYgKHJlc3BvbnNlRGF0YS5tYXJrcykge1xyXG4gICAgICBtYXJrcyA9IHJlc3BvbnNlRGF0YS5tYXJrcy5tYXAoaCA9PiBuZXcgTWFya0luZm8oaC50eXBlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGguY29sb3IsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaC50dXBsZUlkKSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCB0YWJsZSA9IHJlc3BvbnNlRGF0YS5kYXRhVGFibGUubWFwKHJvdyA9PiB7XHJcbiAgICAgIHJldHVybiByb3cubWFwKGNlbGwgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgRGF0YVZhbHVlKGNlbGwudmFsdWUsIGNlbGwuZm9ybWF0dGVkVmFsdWUpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChtYXJrcykge1xyXG4gICAgICByZXR1cm4gbmV3IERhdGFUYWJsZSh0YWJsZSwgaGVhZGVycywgdGFibGUubGVuZ3RoLCBpc1N1bW1hcnksIG1hcmtzKTtcclxuICAgIH1cclxuICAgIHJldHVybiBuZXcgRGF0YVRhYmxlKHRhYmxlLCBoZWFkZXJzLCB0YWJsZS5sZW5ndGgsIGlzU3VtbWFyeSk7XHJcbiAgfVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi90eXBlc2NyaXB0L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9TZXJ2aWNlcy9pbXBsL0dldERhdGFTZXJ2aWNlSW1wbC50c1xuICoqLyIsImltcG9ydCB7IEludGVybmFsQXBpRGlzcGF0Y2hlciwgTW9kZWwsIE5vdGlmaWNhdGlvbiwgTm90aWZpY2F0aW9uSWQgfSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xyXG5cclxuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSwgVW5yZWdpc3RlckZuIH0gZnJvbSAnLi4vTm90aWZpY2F0aW9uU2VydmljZSc7XHJcbmltcG9ydCB7IFNlcnZpY2VOYW1lcyB9IGZyb20gJy4uL1NlcnZpY2VSZWdpc3RyeSc7XHJcblxyXG5jbGFzcyBSZWdpc3RyYXRpb24ge1xyXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2ZpbHRlckZuOiAobm90aWZpY2F0aW9uTW9kZWw6IE1vZGVsKSA9PiBib29sZWFuLFxyXG4gICAgcHJpdmF0ZSBfY2FsbGJhY2tGbjogKG5vdGlmaWNhdGlvbk1vZGVsOiBNb2RlbCkgPT4gdm9pZCkge1xyXG4gICAgICAvLyBOb3RoaW5nIEhlcmVcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbk5vdGlmaWNhdGlvbihub3RpZmljYXRpb25Nb2RlbDogTW9kZWwpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9maWx0ZXJGbihub3RpZmljYXRpb25Nb2RlbCkpIHtcclxuICAgICAgdGhpcy5fY2FsbGJhY2tGbihub3RpZmljYXRpb25Nb2RlbCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTm90aWZpY2F0aW9uU2VydmljZUltcGwgaW1wbGVtZW50cyBOb3RpZmljYXRpb25TZXJ2aWNlIHtcclxuICBwcml2YXRlIF9oYW5kbGVyczogeyBbbm90aWZpY2F0aW9uSWQ6IHN0cmluZ106IEFycmF5PFJlZ2lzdHJhdGlvbj4gfTtcclxuXHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgZGlzcGF0Y2hlcjogSW50ZXJuYWxBcGlEaXNwYXRjaGVyKSB7XHJcbiAgICB0aGlzLl9oYW5kbGVycyA9IHt9O1xyXG4gICAgdGhpcy5kaXNwYXRjaGVyLnJlZ2lzdGVyTm90aWZpY2F0aW9uSGFuZGxlcih0aGlzLm9uTm90aWZpY2F0aW9uLmJpbmQodGhpcykpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBzZXJ2aWNlTmFtZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIFNlcnZpY2VOYW1lcy5Ob3RpZmljYXRpb247XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVnaXN0ZXJIYW5kbGVyKGlkOiBOb3RpZmljYXRpb25JZCwgZmlsdGVyRm46IChtb2RlbDogTW9kZWwpID0+IGJvb2xlYW4sIGhhbmRsZXI6IChtb2RlbDogTW9kZWwpID0+IHZvaWQpOiBVbnJlZ2lzdGVyRm4ge1xyXG4gICAgY29uc3QgaGFuZGxlcnMgPSB0aGlzLl9oYW5kbGVyc1tpZF0gfHwgbmV3IEFycmF5PFJlZ2lzdHJhdGlvbj4oKTtcclxuICAgIGNvbnN0IHJlZ2lzdHJhdGlvbiA9IG5ldyBSZWdpc3RyYXRpb24oZmlsdGVyRm4sIGhhbmRsZXIpO1xyXG4gICAgaGFuZGxlcnMucHVzaChyZWdpc3RyYXRpb24pO1xyXG4gICAgdGhpcy5faGFuZGxlcnNbaWRdID0gaGFuZGxlcnM7XHJcbiAgICByZXR1cm4gKCkgPT4gdGhpcy5yZW1vdmVSZWdpc3RyYXRpb24oaWQsIHJlZ2lzdHJhdGlvbik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc0hhbmRsZXJzRm9yTm90aWZpY2F0aW9uVHlwZShpZDogTm90aWZpY2F0aW9uSWQpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9oYW5kbGVycy5oYXNPd25Qcm9wZXJ0eShpZCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbjogTm90aWZpY2F0aW9uKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaGFzSGFuZGxlcnNGb3JOb3RpZmljYXRpb25UeXBlKG5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25JZCkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEdvIHRocm91Z2ggYW5kIGNoZWNrIGZvciBhbGwgdGhlIGhhbmRsZXJzIG9mIHRoaXMgcGFydGljdWxhciBub3RpZmljYXRpb25cclxuICAgIHRoaXMuX2hhbmRsZXJzW25vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25JZF0uZm9yRWFjaChoID0+IGgub25Ob3RpZmljYXRpb24obm90aWZpY2F0aW9uLmRhdGEpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlUmVnaXN0cmF0aW9uKGlkOiBOb3RpZmljYXRpb25JZCwgcmVnaXN0cmF0aW9uOiBSZWdpc3RyYXRpb24pOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5oYXNIYW5kbGVyc0Zvck5vdGlmaWNhdGlvblR5cGUoaWQpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9oYW5kbGVyc1tpZF0gPSB0aGlzLl9oYW5kbGVyc1tpZF0uZmlsdGVyKHJlZyA9PiByZWcgIT09IHJlZ2lzdHJhdGlvbik7XHJcbiAgfVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi90eXBlc2NyaXB0L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9TZXJ2aWNlcy9pbXBsL05vdGlmaWNhdGlvblNlcnZpY2VJbXBsLnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcclxuaW1wb3J0IHtcclxuICBFeGVjdXRlUGFyYW1ldGVycyxcclxuICBJbnRlcm5hbEFwaURpc3BhdGNoZXIsXHJcbiAgTW9kZWwsXHJcbiAgUGFyYW1ldGVySWQsXHJcbiAgUGFyYW1ldGVySW5mbyxcclxuICBTaGVldFBhdGgsXHJcbiAgVmVyYklkLFxyXG59IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XHJcblxyXG5pbXBvcnQgeyBQYXJhbWV0ZXJJbXBsIH0gZnJvbSAnLi4vLi4vSW50ZXJuYWwvUGFyYW1ldGVySW1wbCc7XHJcbmltcG9ydCB7IFBhcmFtZXRlciB9IGZyb20gJy4uLy4uL1BhcmFtZXRlcic7XHJcbmltcG9ydCB7IFBhcmFtZXRlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vUGFyYW1ldGVyc1NlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXJ2aWNlTmFtZXMgfSBmcm9tICcuLi9TZXJ2aWNlUmVnaXN0cnknO1xyXG5cclxuZXhwb3J0IGNsYXNzIFBhcmFtZXRlcnNTZXJ2aWNlSW1wbCBpbXBsZW1lbnRzIFBhcmFtZXRlcnNTZXJ2aWNlIHtcclxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBkaXNwYXRjaGVyOiBJbnRlcm5hbEFwaURpc3BhdGNoZXIpIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc2VydmljZU5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBTZXJ2aWNlTmFtZXMuUGFyYW1ldGVycztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRQYXJhbWV0ZXJzRm9yU2hlZXRBc3luYyhzaGVldFBhdGg6IFNoZWV0UGF0aCwgc2hlZXQ6IENvbnRyYWN0LlNoZWV0KTogUHJvbWlzZTxBcnJheTxQYXJhbWV0ZXI+PiB7XHJcbiAgICBjb25zdCBwYXJhbWV0ZXJzID0ge1xyXG4gICAgICBbUGFyYW1ldGVySWQuU2hlZXRQYXRoXTogc2hlZXRQYXRoXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiB0aGlzLmRpc3BhdGNoZXIuZXhlY3V0ZShWZXJiSWQuR2V0UGFyYW1ldGVyc0ZvclNoZWV0LCBwYXJhbWV0ZXJzKS50aGVuKHJlc3BvbnNlID0+IHtcclxuICAgICAgLy8gVE9ETyAtIENoZWNrIGZvciBlcnJvclxyXG5cclxuICAgICAgY29uc3QgcmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0IGFzIEFycmF5PFBhcmFtZXRlckluZm8+O1xyXG4gICAgICByZXR1cm4gcmVzdWx0Lm1hcChwYXJhbWV0ZXJJbmZvID0+IHtcclxuICAgICAgICBjb25zdCBpbXBsID0gbmV3IFBhcmFtZXRlckltcGwocGFyYW1ldGVySW5mbyk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQYXJhbWV0ZXIoaW1wbCwgc2hlZXQpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNoYW5nZVBhcmFtZXRlclZhbHVlQXN5bmMoZmllbGROYW1lOiBzdHJpbmcsIG5ld1ZhbHVlOiBzdHJpbmcpOiBQcm9taXNlPFBhcmFtZXRlckluZm8+IHtcclxuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSB7XHJcbiAgICAgIFtQYXJhbWV0ZXJJZC5QYXJhbWV0ZXJGaWVsZE5hbWVdOiBmaWVsZE5hbWUsXHJcbiAgICAgIFtQYXJhbWV0ZXJJZC5QYXJhbWV0ZXJWYWx1ZV06IG5ld1ZhbHVlXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiB0aGlzLmRpc3BhdGNoZXIuZXhlY3V0ZShWZXJiSWQuQ2hhbmdlUGFyYW1ldGVyVmFsdWUsIHBhcmFtZXRlcnMpLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICBjb25zdCByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQgYXMgUGFyYW1ldGVySW5mbztcclxuICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGZpbmRQYXJhbWV0ZXJCeU5hbWVBc3luYyhuYW1lOiBzdHJpbmcsIHNoZWV0OiBDb250cmFjdC5TaGVldCk6IFByb21pc2U8UGFyYW1ldGVyIHwgdW5kZWZpbmVkPiB7XHJcbiAgICByZXR1cm4gdGhpcy5maW5kUGFyYW1ldGVyQXN5bmMoc2hlZXQsIG5hbWUsIHVuZGVmaW5lZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZmluZFBhcmFtZXRlckJ5R2xvYmFsRmllbGROYW1lQXN5bmMoZmllbGROYW1lOiBzdHJpbmcsIHNoZWV0OiBDb250cmFjdC5TaGVldCk6IFByb21pc2U8UGFyYW1ldGVyIHwgdW5kZWZpbmVkPiB7XHJcbiAgICByZXR1cm4gdGhpcy5maW5kUGFyYW1ldGVyQXN5bmMoc2hlZXQsIHVuZGVmaW5lZCwgZmllbGROYW1lKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluZFBhcmFtZXRlckFzeW5jKFxyXG4gICAgc2hlZXQ6IENvbnRyYWN0LlNoZWV0LFxyXG4gICAgbmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkLFxyXG4gICAgZmllbGROYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBQcm9taXNlPFBhcmFtZXRlciB8IHVuZGVmaW5lZD4ge1xyXG4gICAgY29uc3QgcGFyYW1ldGVyczogRXhlY3V0ZVBhcmFtZXRlcnMgPSB7fTtcclxuICAgIGlmIChuYW1lICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgcGFyYW1ldGVyc1tQYXJhbWV0ZXJJZC5QYXJhbWV0ZXJDYXB0aW9uXSA9IG5hbWU7XHJcbiAgICB9IGVsc2UgaWYgKGZpZWxkTmFtZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHBhcmFtZXRlcnNbUGFyYW1ldGVySWQuUGFyYW1ldGVyRmllbGROYW1lXSA9IGZpZWxkTmFtZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyByZXF1aXJlIGZpZWxkIG5hbWUgb3IgY2FwdGlvbicpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLmRpc3BhdGNoZXIuZXhlY3V0ZShWZXJiSWQuRmluZFBhcmFtZXRlciwgcGFyYW1ldGVycykudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgIGNvbnN0IGluc3RhbmNlT2ZQYXJhbWV0ZXJJbmZvID0gKG9iamVjdDogTW9kZWwpOiBvYmplY3QgaXMgUGFyYW1ldGVySW5mbyA9PiB7XHJcbiAgICAgICAgcmV0dXJuICdmaWVsZE5hbWUnIGluIG9iamVjdDtcclxuICAgICAgfTtcclxuXHJcbiAgICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgdG8gc2VlIGlmIHdlIGdvdCBhIHZhbGlkIHJlc3BvbnNlIGJhY2sgYWdhaW5cclxuICAgICAgaWYgKGluc3RhbmNlT2ZQYXJhbWV0ZXJJbmZvKHJlc3BvbnNlLnJlc3VsdCkpIHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQgYXMgUGFyYW1ldGVySW5mbztcclxuICAgICAgICBjb25zdCBpbXBsID0gbmV3IFBhcmFtZXRlckltcGwocmVzdWx0KTtcclxuICAgICAgICByZXR1cm4gbmV3IFBhcmFtZXRlcihpbXBsLCBzaGVldCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi90eXBlc2NyaXB0L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9TZXJ2aWNlcy9pbXBsL1BhcmFtZXRlcnNTZXJ2aWNlSW1wbC50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvbklkLCBQYXJhbWV0ZXJJbmZvIH0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcclxuaW1wb3J0IHsgUGFyYW0gfSBmcm9tICdAdGFibGVhdS9hcGktdXRpbHMnO1xyXG5cclxuaW1wb3J0IHsgSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzIH0gZnJvbSAnLi4vRW51bU1hcHBpbmdzL0ludGVybmFsVG9FeHRlcm5hbEVudW1NYXBwaW5ncyc7XHJcbmltcG9ydCB7IFBhcmFtZXRlckNoYW5nZWRFdmVudCB9IGZyb20gJy4uL0V2ZW50cy9QYXJhbWV0ZXJDaGFuZ2VkRXZlbnQnO1xyXG5pbXBvcnQgeyBEYXRhVmFsdWUgfSBmcm9tICcuLi9Nb2RlbHMvR2V0RGF0YU1vZGVscyc7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9TZXJ2aWNlcy9Ob3RpZmljYXRpb25TZXJ2aWNlJztcclxuaW1wb3J0IHsgUGFyYW1ldGVyc1NlcnZpY2UgfSBmcm9tICcuLi9TZXJ2aWNlcy9QYXJhbWV0ZXJzU2VydmljZSc7XHJcbmltcG9ydCB7IEFwaVNlcnZpY2VSZWdpc3RyeSwgU2VydmljZU5hbWVzIH0gZnJvbSAnLi4vU2VydmljZXMvU2VydmljZVJlZ2lzdHJ5JztcclxuaW1wb3J0IHsgU2luZ2xlRXZlbnRNYW5hZ2VyIH0gZnJvbSAnLi4vU2luZ2xlRXZlbnRNYW5hZ2VyJztcclxuaW1wb3J0IHsgU2luZ2xlRXZlbnRNYW5hZ2VySW1wbCB9IGZyb20gJy4vU2luZ2xlRXZlbnRNYW5hZ2VySW1wbCc7XHJcblxyXG5leHBvcnQgY2xhc3MgUGFyYW1ldGVySW1wbCB7XHJcbiAgcHJpdmF0ZSBfYWxsb3dhYmxlVmFsdWVzOiBDb250cmFjdC5QYXJhbWV0ZXJEb21haW5SZXN0cmljdGlvbjtcclxuICBwcml2YXRlIF9nbG9iYWxGaWVsZE5hbWU6IHN0cmluZztcclxuICBwcml2YXRlIF9wYXJhbWV0ZXJJbmZvOiBQYXJhbWV0ZXJJbmZvO1xyXG5cclxuICBwdWJsaWMgY29uc3RydWN0b3IocGFyYW1ldGVySW5mbzogUGFyYW1ldGVySW5mbykge1xyXG4gICAgdGhpcy5zZXRQYXJhbWV0ZXJJbmZvKHBhcmFtZXRlckluZm8pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGFyYW1ldGVySW5mby5uYW1lO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjdXJyZW50VmFsdWUoKTogRGF0YVZhbHVlIHtcclxuICAgIHJldHVybiBuZXcgRGF0YVZhbHVlKHRoaXMuX3BhcmFtZXRlckluZm8uY3VycmVudFZhbHVlLnZhbHVlLCB0aGlzLl9wYXJhbWV0ZXJJbmZvLmN1cnJlbnRWYWx1ZS5mb3JtYXR0ZWRWYWx1ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGRhdGFUeXBlKCk6IENvbnRyYWN0LkRhdGFUeXBlIHtcclxuICAgIHJldHVybiBJbnRlcm5hbFRvRXh0ZXJuYWxFbnVtTWFwcGluZ3MuZGF0YVR5cGUuY29udmVydCh0aGlzLl9wYXJhbWV0ZXJJbmZvLmRhdGFUeXBlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgYWxsb3dhYmxlVmFsdWVzKCk6IENvbnRyYWN0LlBhcmFtZXRlckRvbWFpblJlc3RyaWN0aW9uIHtcclxuICAgIHJldHVybiB0aGlzLl9hbGxvd2FibGVWYWx1ZXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2hhbmdlVmFsdWVBc3luYyhuZXdWYWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IERhdGUpOiBQcm9taXNlPERhdGFWYWx1ZT4ge1xyXG4gICAgbGV0IGNvZXJjZWRWYWx1ZSA9IFBhcmFtLnNlcmlhbGl6ZVBhcmFtdGVyVmFsdWUobmV3VmFsdWUpO1xyXG4gICAgY29uc3QgcGFyYW1ldGVyc1NlcnZpY2UgPSBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZTxQYXJhbWV0ZXJzU2VydmljZT4oU2VydmljZU5hbWVzLlBhcmFtZXRlcnMpO1xyXG4gICAgcmV0dXJuIHBhcmFtZXRlcnNTZXJ2aWNlLmNoYW5nZVBhcmFtZXRlclZhbHVlQXN5bmModGhpcy5fZ2xvYmFsRmllbGROYW1lLCBjb2VyY2VkVmFsdWUpLnRoZW4ocGFyYW1ldGVySW5mbyA9PiB7XHJcbiAgICAgIHRoaXMuc2V0UGFyYW1ldGVySW5mbyhwYXJhbWV0ZXJJbmZvKTtcclxuICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFZhbHVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIZWxwZXIgbWV0aG9kIHdoaWNoIGdvZXMgdGhyb3VnaCBhbmQgcmVnaXN0ZXJzIGVhY2ggZXZlbnQgdHlwZSB0aGlzIGltcGwga25vd3MgYWJvdXRcclxuICAgKiB3aXRoIHRoZSBOb3RpZmljYXRpb25TZXJ2aWNlLiBJdCByZXR1cm5zIGFuIGFycmF5IG9mIFNpbmdsZUV2ZW50TWFuYWdlciBvYmplY3RzIHdoaWNoXHJcbiAgICogY2FuIHRoZW4gYmUgcGFzc2VkIHRvIGFuIEV2ZW50TGlzdGVuZXJNYW5hZ2VyIHRvIGhhbmRsZSB1c2VyIHJlZ2lzdHJhdGlvbiAvIHVucmVnaXN0cmF0aW9uLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHNoZWV0IFRoZSBzaGVldCBvYmplY3Qgd2hpY2ggd2lsbCBiZSBpbmNsdWRlZCB3aXRoIHRoZSBldmVudCBub3RpZmljYXRpb25zXHJcbiAgICogQHJldHVybnMge0FycmF5PFNpbmdsZUV2ZW50TWFuYWdlcj59IENvbGxlY3Rpb24gb2YgZXZlbnQgbWFuYWdlcnMgdG8gcGFzcyB0byBhbiBFdmVudExpc3RlbmVyTWFuYWdlclxyXG4gICAqL1xyXG4gIHB1YmxpYyBpbml0aWFsaXplRXZlbnRzKHNoZWV0OiBDb250cmFjdC5TaGVldCk6IEFycmF5PFNpbmdsZUV2ZW50TWFuYWdlcj4ge1xyXG4gICAgY29uc3QgcmVzdWx0cyA9IG5ldyBBcnJheTxTaW5nbGVFdmVudE1hbmFnZXI+KCk7XHJcbiAgICBsZXQgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZTtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBub3RpZmljYXRpb25TZXJ2aWNlID0gQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2U8Tm90aWZpY2F0aW9uU2VydmljZT4oU2VydmljZU5hbWVzLk5vdGlmaWNhdGlvbik7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgdGhpcyBzZXJ2aWNlIHJlZ2lzdGVyZWQsIGp1c3QgcmV0dXJuXHJcbiAgICAgIHJldHVybiByZXN1bHRzO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEluaXRpYWxpemUgYWxsIG9mIHRoZSBldmVudCBtYW5hZ2VycyB3ZSdsbCBuZWVkIChvbmUgZm9yIGVhY2ggZXZlbnQgdHlwZSlcclxuICAgIGNvbnN0IHBhcmFtZXRlckV2ZW50ID0gbmV3IFNpbmdsZUV2ZW50TWFuYWdlckltcGw8UGFyYW1ldGVyQ2hhbmdlZEV2ZW50PihDb250cmFjdC5UYWJsZWF1RXZlbnRUeXBlLlBhcmFtZXRlckNoYW5nZWQpO1xyXG4gICAgbm90aWZpY2F0aW9uU2VydmljZS5yZWdpc3RlckhhbmRsZXIoTm90aWZpY2F0aW9uSWQuUGFyYW1ldGVyQ2hhbmdlZCwgKG1vZGVsKSA9PiB7XHJcbiAgICAgIGNvbnN0IGZpZWxkTmFtZSA9IG1vZGVsIGFzIHN0cmluZztcclxuICAgICAgcmV0dXJuIGZpZWxkTmFtZSA9PT0gdGhpcy5fZ2xvYmFsRmllbGROYW1lO1xyXG4gICAgfSwgKGZpZWxkTmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgIHBhcmFtZXRlckV2ZW50LnRyaWdnZXJFdmVudCgoKSA9PiBuZXcgUGFyYW1ldGVyQ2hhbmdlZEV2ZW50KGZpZWxkTmFtZSwgc2hlZXQpKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJlc3VsdHMucHVzaChwYXJhbWV0ZXJFdmVudCk7XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdHM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFBhcmFtZXRlckluZm8ocGFyYW1ldGVySW5mbzogUGFyYW1ldGVySW5mbyk6IHZvaWQge1xyXG4gICAgdGhpcy5fcGFyYW1ldGVySW5mbyA9IHBhcmFtZXRlckluZm87XHJcbiAgICB0aGlzLl9nbG9iYWxGaWVsZE5hbWUgPSBwYXJhbWV0ZXJJbmZvLmZpZWxkTmFtZTtcclxuXHJcbiAgICBjb25zdCB0eXBlID0gSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzLmFsbG93YWJsZVZhbHVlcy5jb252ZXJ0KHBhcmFtZXRlckluZm8uYWxsb3dhYmxlVmFsdWVzVHlwZSk7XHJcbiAgICBsZXQgbGlzdFZhbHVlczogQXJyYXk8RGF0YVZhbHVlPiB8IHVuZGVmaW5lZDtcclxuICAgIGxldCBtaW5WYWx1ZTogRGF0YVZhbHVlIHwgdW5kZWZpbmVkO1xyXG4gICAgbGV0IG1heFZhbHVlOiBEYXRhVmFsdWUgfCB1bmRlZmluZWQ7XHJcbiAgICBsZXQgc3RlcFNpemU6IG51bWJlciB8IHVuZGVmaW5lZDtcclxuICAgIGxldCBkYXRlU3RlcFBlcmlvZDogQ29udHJhY3QuUGVyaW9kVHlwZSB8IHVuZGVmaW5lZDtcclxuXHJcbiAgICBpZiAodHlwZSA9PT0gQ29udHJhY3QuUGFyYW1ldGVyVmFsdWVUeXBlLkxpc3QpIHtcclxuICAgICAgY29uc3QgdmFsdWVzID0gcGFyYW1ldGVySW5mby5hbGxvd2FibGVWYWx1ZXMgfHwgW107XHJcbiAgICAgIGxpc3RWYWx1ZXMgPSB2YWx1ZXMubWFwKHZhbCA9PiBuZXcgRGF0YVZhbHVlKHZhbC52YWx1ZSwgdmFsLmZvcm1hdHRlZFZhbHVlKSk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09IENvbnRyYWN0LlBhcmFtZXRlclZhbHVlVHlwZS5SYW5nZSkge1xyXG4gICAgICBtaW5WYWx1ZSA9IHBhcmFtZXRlckluZm8ubWluVmFsdWUgJiYgbmV3IERhdGFWYWx1ZShwYXJhbWV0ZXJJbmZvLm1pblZhbHVlLnZhbHVlLCBwYXJhbWV0ZXJJbmZvLm1pblZhbHVlLmZvcm1hdHRlZFZhbHVlKTtcclxuICAgICAgbWF4VmFsdWUgPSBwYXJhbWV0ZXJJbmZvLm1heFZhbHVlICYmIG5ldyBEYXRhVmFsdWUocGFyYW1ldGVySW5mby5tYXhWYWx1ZS52YWx1ZSwgcGFyYW1ldGVySW5mby5tYXhWYWx1ZS5mb3JtYXR0ZWRWYWx1ZSk7XHJcbiAgICAgIHN0ZXBTaXplID0gcGFyYW1ldGVySW5mby5zdGVwU2l6ZTtcclxuICAgICAgZGF0ZVN0ZXBQZXJpb2QgPSBwYXJhbWV0ZXJJbmZvLmRhdGVTdGVwUGVyaW9kICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzLmRhdGVTdGVwUGVyaW9kLmNvbnZlcnQocGFyYW1ldGVySW5mby5kYXRlU3RlcFBlcmlvZCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fYWxsb3dhYmxlVmFsdWVzID0ge1xyXG4gICAgICB0eXBlOiB0eXBlLFxyXG4gICAgICBhbGxvd2FibGVWYWx1ZXM6IGxpc3RWYWx1ZXMsXHJcbiAgICAgIG1pblZhbHVlOiBtaW5WYWx1ZSxcclxuICAgICAgbWF4VmFsdWU6IG1heFZhbHVlLFxyXG4gICAgICBzdGVwU2l6ZTogc3RlcFNpemUsXHJcbiAgICAgIGRhdGVTdGVwUGVyaW9kOiBkYXRlU3RlcFBlcmlvZFxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogRDovZGV2L3R5cGVzY3JpcHQvanMtYXBpL2FwaS1zaGFyZWQvc3JjL0ludGVybmFsL1BhcmFtZXRlckltcGwudHNcbiAqKi8iLCJpbXBvcnQgKiBhcyBDb250cmFjdCBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xyXG5cclxuaW1wb3J0IHsgUGFyYW1ldGVyc1NlcnZpY2UgfSBmcm9tICcuLi9TZXJ2aWNlcy9QYXJhbWV0ZXJzU2VydmljZSc7XHJcbmltcG9ydCB7IEFwaVNlcnZpY2VSZWdpc3RyeSwgU2VydmljZU5hbWVzIH0gZnJvbSAnLi4vU2VydmljZXMvU2VydmljZVJlZ2lzdHJ5JztcclxuaW1wb3J0IHsgVGFibGVhdVNoZWV0RXZlbnQgfSBmcm9tICcuL1RhYmxlYXVTaGVldEV2ZW50JztcclxuXHJcbmV4cG9ydCBjbGFzcyBQYXJhbWV0ZXJDaGFuZ2VkRXZlbnQgZXh0ZW5kcyBUYWJsZWF1U2hlZXRFdmVudCBpbXBsZW1lbnRzIENvbnRyYWN0LlBhcmFtZXRlckNoYW5nZWRFdmVudCB7XHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgX2dsb2JhbEZpZWxkTmFtZTogc3RyaW5nLCBzaGVldDogQ29udHJhY3QuU2hlZXQpIHtcclxuICAgIHN1cGVyKENvbnRyYWN0LlRhYmxlYXVFdmVudFR5cGUuUGFyYW1ldGVyQ2hhbmdlZCwgc2hlZXQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFBhcmFtZXRlckFzeW5jKCk6IFByb21pc2U8Q29udHJhY3QuUGFyYW1ldGVyPiB7XHJcbiAgICAvLyBDYWxsIGRvd24gdG8gb3VyIHNlcnZpY2UgdG8gZ2V0IHRoZSBwYXJhbWV0ZXIgYmFjayB2aWEgaXRzIGZpZWxkIG5hbWVcclxuICAgIGNvbnN0IHNlcnZpY2UgPSBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZTxQYXJhbWV0ZXJzU2VydmljZT4oU2VydmljZU5hbWVzLlBhcmFtZXRlcnMpO1xyXG4gICAgcmV0dXJuIHNlcnZpY2UuZmluZFBhcmFtZXRlckJ5R2xvYmFsRmllbGROYW1lQXN5bmModGhpcy5fZ2xvYmFsRmllbGROYW1lLCB0aGlzLnNoZWV0KS50aGVuKHBhcmFtZXRlciA9PiB7XHJcbiAgICAgIGlmIChwYXJhbWV0ZXIgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGZpbmQgcGFyYW1ldGVyJyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBwYXJhbWV0ZXI7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogRDovZGV2L3R5cGVzY3JpcHQvanMtYXBpL2FwaS1zaGFyZWQvc3JjL0V2ZW50cy9QYXJhbWV0ZXJDaGFuZ2VkRXZlbnQudHNcbiAqKi8iLCIvKipcclxuICogQmFzZSBpbnRlcmZhY2UgZm9yIGFuIGFwaSBzZXJ2aWNlXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEFwaVNlcnZpY2Uge1xyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIG5hbWUgZm9yIHRoaXMgc2VydmljZS5cclxuICAgKi9cclxuICByZWFkb25seSBzZXJ2aWNlTmFtZTogc3RyaW5nO1xyXG59XHJcblxyXG4vKipcclxuICogQ29sbGVjdGlvbiBvZiBzZXJ2aWNlIG5hbWUgd2hpY2ggd2lsbCBiZSByZWdpc3RlcmVkIGluIHRoZSBhcGktc2hhcmVkIHByb2plY3RcclxuICovXHJcbmV4cG9ydCBjb25zdCBlbnVtIFNlcnZpY2VOYW1lcyB7XHJcbiAgRGF0YVNvdXJjZVNlcnZpY2UgPSAnZGF0YS1zb3VyY2Utc2VydmljZScsXHJcbiAgR2V0RGF0YSA9ICdnZXQtZGF0YS1zZXJ2aWNlJyxcclxuICBGaWx0ZXIgPSAnZmlsdGVyLXNlcnZpY2UnLFxyXG4gIE5vdGlmaWNhdGlvbiA9ICdub3RpZmljYXRpb24tc2VydmljZScsXHJcbiAgUGFyYW1ldGVycyA9ICdwYXJhbWV0ZXJzLXNlcnZpY2UnLFxyXG4gIFNlbGVjdGlvbiA9ICdzZWxlY3Rpb24tc2VydmljZSdcclxufVxyXG5cclxuLyoqXHJcbiAqIERvIHNvbWUgZ2xvYmFibCBkZWNsYXJhdGlvbnMgc28gd2UgY2FuIGNyZWF0ZSBhIHNpbmdsZXRvbiBvbiB0aGUgd2luZG93IG9iamVjdFxyXG4gKi9cclxuZGVjbGFyZSBnbG9iYWwge1xyXG4gIGludGVyZmFjZSBXaW5kb3cgeyBfX3RhYmxlYXVBcGlTZXJ2aWNlUmVnaXN0cnk6IFNlcnZpY2VSZWdpc3RyeSB8IHVuZGVmaW5lZDsgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZpY2VSZWdpc3RyeSB7XHJcbiAgLyoqXHJcbiAgICogUmVnaXN0ZXJzIGEgbmV3IHNlcnZpY2UgaW50byB0aGUgc2VydmljZSByZWdpc3RyeS4gQW55IGV4aXN0aW5nIG9uZSB3aWxsXHJcbiAgICogYmUgb3ZlcndyaXR0ZW4uIHRoZSBzZXJ2aWNlIGlzIHJlZ2lzdGVyZWQgdW5kZXIgc2VydmljZS5zZXJ2aWNlTmFtZVxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtBcGlTZXJ2aWNlfSBzZXJ2aWNlIFRoZSBzZXJ2aXZlIHRvIHJlZ2lzdGVyXHJcbiAgICovXHJcbiAgcmVnaXN0ZXJTZXJ2aWNlKHNlcnZpY2U6IEFwaVNlcnZpY2UpOiB2b2lkO1xyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIGdpdmVuIHNlcnZpY2UgZnJvbSB0aGUgcmVnaXN0cnkuIElmIHRoZXJlIGlzIG5vdCBhXHJcbiAgICogc2VydmljZSByZWdpc3RlcmVkIHVuZGVyIHRoYXQgbmFtZSwgdGhyb3dzIGFuZCBlcnJvclxyXG4gICAqXHJcbiAgICogQHRlbXBsYXRlIFQgVGhlIHR5cGUgb2YgdGhlIHNlcnZpY2VcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2VydmljZU5hbWUgVGhlIG5hbWUgb2YgdGhlIHNlcnZpY2UuXHJcbiAgICogQHJldHVybnMge1R9IFRoZSByZXF1ZXN0ZWQgc2VydmljZVxyXG4gICAqL1xyXG4gIGdldFNlcnZpY2U8VCBleHRlbmRzIEFwaVNlcnZpY2U+KHNlcnZpY2VOYW1lOiBzdHJpbmcpOiBUO1xyXG59XHJcblxyXG5jbGFzcyBTZXJ2aWNlUmVnaXN0cnlJbXBsIGltcGxlbWVudHMgU2VydmljZVJlZ2lzdHJ5IHtcclxuICBwcml2YXRlIF9zZXJ2aWNlczogeyBbc2VydmljZU5hbWU6IHN0cmluZ106IEFwaVNlcnZpY2U7IH07XHJcblxyXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuX3NlcnZpY2VzID0ge307XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVnaXN0ZXJTZXJ2aWNlKHNlcnZpY2U6IEFwaVNlcnZpY2UpOiB2b2lkIHtcclxuICAgIHRoaXMuX3NlcnZpY2VzW3NlcnZpY2Uuc2VydmljZU5hbWVdID0gc2VydmljZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRTZXJ2aWNlPFQgZXh0ZW5kcyBBcGlTZXJ2aWNlPihzZXJ2aWNlTmFtZTogc3RyaW5nKTogVCB7XHJcbiAgICBpZiAoIXRoaXMuX3NlcnZpY2VzLmhhc093blByb3BlcnR5KHNlcnZpY2VOYW1lKSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIFNlcnZpY2UgJHtzZXJ2aWNlTmFtZX0gaXMgcmVnaXN0ZXJlZGApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLl9zZXJ2aWNlc1tzZXJ2aWNlTmFtZV0gYXMgVDtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBzdGF0aWMgY2xhc3MgdXNlZCBmb3IgZ2V0dGluZyBhY2Nlc3MgdG8gdGhlIHNpbmdsZSBpbnN0YW5jZVxyXG4gKiBvZiB0aGUgQXBpU2VydmljZVJlZ2lzdHJ5XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQXBpU2VydmljZVJlZ2lzdHJ5IHtcclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIFNlcnZpY2VSZWdpc3RyeVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IGluc3RhbmNlKCk6IFNlcnZpY2VSZWdpc3RyeSB7XHJcbiAgICBpZiAoIXdpbmRvdy5fX3RhYmxlYXVBcGlTZXJ2aWNlUmVnaXN0cnkpIHtcclxuICAgICAgQXBpU2VydmljZVJlZ2lzdHJ5LnNldEluc3RhbmNlKG5ldyBTZXJ2aWNlUmVnaXN0cnlJbXBsKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghd2luZG93Ll9fdGFibGVhdUFwaVNlcnZpY2VSZWdpc3RyeSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Fzc2lnbmluZyBzZXJ2aWNlIHJlZ2lzdHJ5IGZhaWxlZCcpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB3aW5kb3cuX190YWJsZWF1QXBpU2VydmljZVJlZ2lzdHJ5O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGVscGVyIG1ldGhvZCB0byBvdmVycmlkZSB0aGUgcmVnaXN0cnkgaW5zdGFuY2UuIENhbiBiZSB1c2VkIGJ5IHVuaXQgdGVzdHNcclxuICAgKlxyXG4gICAqIEBwYXJhbSB7U2VydmljZVJlZ2lzdHJ5fSBzZXJ2aWNlUmVnaXN0cnkgVGhlIG5ldyByZWdpc3RyeVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgc2V0SW5zdGFuY2Uoc2VydmljZVJlZ2lzdHJ5PzogU2VydmljZVJlZ2lzdHJ5KTogdm9pZCB7XHJcbiAgICB3aW5kb3cuX190YWJsZWF1QXBpU2VydmljZVJlZ2lzdHJ5ID0gc2VydmljZVJlZ2lzdHJ5O1xyXG4gIH1cclxuXHJcbiAgLy8gUHJpdmF0ZSB0byBhdm9pZCBhbnlvbmUgY29uc3RydWN0aW5nIHRoaXNcclxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge31cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBEOi9kZXYvdHlwZXNjcmlwdC9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvU2VydmljZXMvU2VydmljZVJlZ2lzdHJ5LnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcclxuaW1wb3J0IHtcclxuICBFeGVjdXRlUGFyYW1ldGVycyxcclxuICBJbnRlcm5hbEFwaURpc3BhdGNoZXIsXHJcbiAgUGFyYW1ldGVySWQsXHJcbiAgUXVhbnRpdGF0aXZlSW5jbHVkZWRWYWx1ZXMsXHJcbiAgU2VsZWN0aW9uVXBkYXRlVHlwZSBhcyBTZWxlY3Rpb25VcGRhdGVUeXBlSW50ZXJuYWwsXHJcbiAgVmVyYklkLFxyXG4gIFZpc3VhbElkXHJcbn0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcclxuaW1wb3J0IHsgRGltZW5zaW9uU2VsZWN0aW9uTW9kZWwsXHJcbiAgSGllcmFyY2hpY2FsU2VsZWN0aW9uTW9kZWwsXHJcbiAgUmFuZ2VTZWxlY3Rpb25Nb2RlbCxcclxuICBTZWxlY3Rpb25Nb2RlbHNDb250YWluZXIsXHJcbiAgVHVwbGVTZWxlY3Rpb25Nb2RlbCxcclxuICBWYWx1ZVNlbGVjdGlvbk1vZGVsXHJcbn0gZnJvbSAnLi4vLi4vTW9kZWxzL1NlbGVjdGlvbk1vZGVscyc7XHJcbmltcG9ydCB7IFNlbGVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi9TZWxlY3Rpb25TZXJ2aWNlJztcclxuaW1wb3J0IHsgU2VydmljZU5hbWVzIH0gZnJvbSAnLi4vU2VydmljZVJlZ2lzdHJ5JztcclxuXHJcbmV4cG9ydCBjbGFzcyBTZWxlY3Rpb25TZXJ2aWNlSW1wbCBpbXBsZW1lbnRzIFNlbGVjdGlvblNlcnZpY2Uge1xyXG4gIHByaXZhdGUgX2Rpc3BhdGNoZXI6IEludGVybmFsQXBpRGlzcGF0Y2hlcjtcclxuXHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKGRpc3BhdGNoZXI6IEludGVybmFsQXBpRGlzcGF0Y2hlcikge1xyXG4gICAgdGhpcy5fZGlzcGF0Y2hlciA9IGRpc3BhdGNoZXI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHNlcnZpY2VOYW1lKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gU2VydmljZU5hbWVzLlNlbGVjdGlvbjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldGhvZCB0byBjbGVhciBhbGwgdGhlIHNlbGVjdGVkIG1hcmtzIGZvciB0aGUgZ2l2ZW4gd29ya3NoZWV0LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHZpc3VhbElkXHJcbiAgICovXHJcbiAgcHVibGljIGNsZWFyU2VsZWN0ZWRNYXJrc0FzeW5jKHZpc3VhbElkOiBWaXN1YWxJZCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3QgcGFyYW1ldGVyczogRXhlY3V0ZVBhcmFtZXRlcnMgPSB7W1BhcmFtZXRlcklkLlZpc3VhbElkXTogdmlzdWFsSWR9O1xyXG4gICAgcmV0dXJuIHRoaXMuX2Rpc3BhdGNoZXIuZXhlY3V0ZShWZXJiSWQuQ2xlYXJTZWxlY3RlZE1hcmtzLCBwYXJhbWV0ZXJzKS50aGVuPHZvaWQ+KHJlc3BvbnNlID0+IHtcclxuICAgICAgcmV0dXJuIDsgLy8gRXhwZWN0aW5nIGFuIGVtcHR5IG1vZGVsIGFuZCBoZW5jZSB0aGUgdm9pZCByZXNwb25zZS5cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0aG9kIHRvIHNlbGVjdCBtYXJrcyBmb3IgdGhlIGdpdmVuIHdvcmtzaGVldC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB2aXN1YWxJZFxyXG4gICAqIEBwYXJhbSBzZWxlY3Rpb25Dcml0ZXJpYVxyXG4gICAqIEBwYXJhbSBzZWxlY3Rpb25VcGRhdGVUeXBlXHJcbiAgICovXHJcbiAgcHVibGljIHNlbGVjdE1hcmtzQnlWYWx1ZUFzeW5jKHZpc3VhbElkOiBWaXN1YWxJZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uQ3JpdGVyaWFzOiBBcnJheTxDb250cmFjdC5TZWxlY3Rpb25Dcml0ZXJpYT4sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblVwZGF0ZVR5cGU6IENvbnRyYWN0LlNlbGVjdGlvblVwZGF0ZVR5cGUpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmIChzZWxlY3Rpb25Dcml0ZXJpYXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzZWxlY3Rpb24gY3JpdGVyaWEuIFNlbGVjdGlvbnMgbWlzc2luZy4nKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzZWxlY3Rpb25UeXBlOiBzdHJpbmcgPSB0aGlzLnZhbGlkYXRlU2VsZWN0aW9uVXBkYXRlVHlwZShzZWxlY3Rpb25VcGRhdGVUeXBlKTtcclxuICAgIGxldCBzZWxlY3Rpb25Dcml0ZXJpYVR5cGU6IFNlbGVjdGlvbkNyaXRlcmlhVHlwZSA9IHRoaXMudmFsaWRhdGVTZWxlY3Rpb25Dcml0ZXJpYShzZWxlY3Rpb25Dcml0ZXJpYXNbMF0pO1xyXG4gICAgbGV0IHNlbGVjdGlvbk1vZGVsQ29udGFpbmVyOiBTZWxlY3Rpb25Nb2RlbHNDb250YWluZXIgPSB0aGlzLnBhcnNlU2VsZWN0aW9uTWFya3Moc2VsZWN0aW9uQ3JpdGVyaWFzLCBzZWxlY3Rpb25Dcml0ZXJpYVR5cGUpO1xyXG5cclxuICAgIGNvbnN0IHBhcmFtZXRlcnM6IEV4ZWN1dGVQYXJhbWV0ZXJzID0ge1xyXG4gICAgICBbUGFyYW1ldGVySWQuVmlzdWFsSWRdOiB2aXN1YWxJZCxcclxuICAgICAgW1BhcmFtZXRlcklkLlNlbGVjdGlvblVwZGF0ZVR5cGVdOiBzZWxlY3Rpb25UeXBlXHJcbiAgICB9O1xyXG5cclxuICAgIHN3aXRjaCAoc2VsZWN0aW9uQ3JpdGVyaWFUeXBlKSB7XHJcbiAgICAgIGNhc2UgU2VsZWN0aW9uQ3JpdGVyaWFUeXBlLkhpZXJhcmNoaWNhbFR5cGU6IHtcclxuICAgICAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLkhpZXJWYWxTZWxlY3Rpb25Nb2RlbHNdID0gc2VsZWN0aW9uTW9kZWxDb250YWluZXIuaGllck1vZGVsQXJyO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgU2VsZWN0aW9uQ3JpdGVyaWFUeXBlLlJhbmdlVHlwZToge1xyXG4gICAgICAgIHBhcmFtZXRlcnNbUGFyYW1ldGVySWQuUXVhbnRSYW5nZVNlbGVjdGlvbk1vZGVsc10gPSBzZWxlY3Rpb25Nb2RlbENvbnRhaW5lci5xdWFudE1vZGVsQXJyO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgU2VsZWN0aW9uQ3JpdGVyaWFUeXBlLkRpbWVuc2lvblR5cGU6IHtcclxuICAgICAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLkRpbVZhbFNlbGVjdGlvbk1vZGVsc10gPSBzZWxlY3Rpb25Nb2RlbENvbnRhaW5lci5kaW1Nb2RlbEFycjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuX2Rpc3BhdGNoZXIuZXhlY3V0ZShWZXJiSWQuU2VsZWN0QnlWYWx1ZSwgcGFyYW1ldGVycykudGhlbjx2b2lkPihyZXNwb25zZSA9PiB7XHJcbiAgICAgIC8vIEV4cGVjdGluZyBhbiBlbXB0eSBtb2RlbCBhbmQgaGVuY2UgdGhlIHZvaWQgcmVzcG9uc2UuXHJcbiAgICAgIHJldHVybjtcclxuICAgICAgLy8gVE9ETyBJbnZlc3RpZ2F0ZSB0aGUgZXJyb3IgcmVzcG9uc2Ugd2l0aCBtdWx0aXBsZSBvdXRwdXQgcGFyYW1zIGFuZCB0aHJvdyBlcnJvciBhY2NvcmRpbmdseS5cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgICAvKipcclxuICAgKiBNZXRob2QgdG8gc2VsZWN0IG1hcmtzIGZvciB0aGUgZ2l2ZW4gd29ya3NoZWV0LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHZpc3VhbElkXHJcbiAgICogQHBhcmFtIE1hcmtJbmZvXHJcbiAgICogQHBhcmFtIHNlbGVjdGlvblVwZGF0ZVR5cGVcclxuICAgKi9cclxuICBwdWJsaWMgc2VsZWN0TWFya3NCeUlkQXN5bmModmlzdWFsSWQ6IFZpc3VhbElkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrczogQXJyYXk8Q29udHJhY3QuTWFya0luZm8+LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25VcGRhdGVUeXBlOiBDb250cmFjdC5TZWxlY3Rpb25VcGRhdGVUeXBlKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAobWFya3MubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzZWxlY3Rpb24uIE1hcmtzIGluZm8gbWlzc2luZy4nKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzZWxlY3Rpb25UeXBlOiBzdHJpbmcgPSB0aGlzLnZhbGlkYXRlU2VsZWN0aW9uVXBkYXRlVHlwZShzZWxlY3Rpb25VcGRhdGVUeXBlKTtcclxuICAgIGxldCBzZWxlY3Rpb25Nb2RlbENvbnRhaW5lcjogU2VsZWN0aW9uTW9kZWxzQ29udGFpbmVyID0gdGhpcy5wYXJzZVNlbGVjdGlvbklkcyhtYXJrcyk7XHJcblxyXG4gICAgY29uc3QgcGFyYW1ldGVyczogRXhlY3V0ZVBhcmFtZXRlcnMgPSB7XHJcbiAgICAgIFtQYXJhbWV0ZXJJZC5WaXN1YWxJZF06IHZpc3VhbElkLFxyXG4gICAgICBbUGFyYW1ldGVySWQuU2VsZWN0aW9uVXBkYXRlVHlwZV06IHNlbGVjdGlvblR5cGUsXHJcbiAgICAgIFtQYXJhbWV0ZXJJZC5TZWxlY3Rpb25dOiBzZWxlY3Rpb25Nb2RlbENvbnRhaW5lci5zZWxlY3Rpb25cclxuICAgIH07XHJcbiAgICByZXR1cm4gdGhpcy5fZGlzcGF0Y2hlci5leGVjdXRlKFZlcmJJZC5TZWxlY3RCeVZhbHVlLCBwYXJhbWV0ZXJzKS50aGVuPHZvaWQ+KHJlc3BvbnNlID0+IHtcclxuICAgICAgLy8gRXhwZWN0aW5nIGFuIGVtcHR5IG1vZGVsIGFuZCBoZW5jZSB0aGUgdm9pZCByZXNwb25zZS5cclxuICAgICAgcmV0dXJuO1xyXG4gICAgICAvLyBUT0RPIEludmVzdGlnYXRlIHRoZSBlcnJvciByZXNwb25zZSB3aXRoIG11bHRpcGxlIG91dHB1dCBwYXJhbXMgYW5kIHRocm93IGVycm9yIGFjY29yZGluZ2x5LlxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRob2QgdG8gcHJlcGFyZSB0aGUgcHJlcyBtb2RlbHMgZm9yIHNlbGVjdGlvbiBieSBNYXJrc0luZm9cclxuICAgKiBAcGFyYW0gbWFya3NcclxuICAgKi9cclxuICBwcml2YXRlIHBhcnNlU2VsZWN0aW9uSWRzKG1hcmtzOiBBcnJheTxDb250cmFjdC5NYXJrSW5mbz4pOiBTZWxlY3Rpb25Nb2RlbHNDb250YWluZXIge1xyXG4gICAgbGV0IGlkczogQXJyYXk8c3RyaW5nPiA9IFtdO1xyXG4gICAgbGV0IHNlbGVjdGlvbk1vZGVsQ29udGFpbmVyOiBTZWxlY3Rpb25Nb2RlbHNDb250YWluZXIgPSBuZXcgU2VsZWN0aW9uTW9kZWxzQ29udGFpbmVyKCk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hcmtzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCB0dXBsZUlkOiBOdW1iZXIgfCB1bmRlZmluZWQgID0gbWFya3NbaV0udHVwbGVJZDtcclxuICAgICAgaWYgKHR1cGxlSWQgIT09IHVuZGVmaW5lZCAmJiB0dXBsZUlkICE9PSBudWxsKSB7IC8vIElmIHR1cGxlIGlkIGlzIHByb3ZpZGVkIHVzZSB0aGF0IGluc3RlYWQgb2YgcGFpclxyXG4gICAgICAgICBpZHMucHVzaCh0dXBsZUlkLnRvU3RyaW5nKCkpOyAvLyBjb2xsZWN0IHRoZSB0dXBsZSBpZHNcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdHVwbGVJZCBwcm92aWRlZC4nKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGlkcy5sZW5ndGggIT09IDApIHsgLy8gdHVwbGUgaWRzIGJhc2VkIHNlbGVjdGlvblxyXG4gICAgICBsZXQgdHVwbGVTZWxlY3Rpb25Nb2RlbDogVHVwbGVTZWxlY3Rpb25Nb2RlbCA9IG5ldyBUdXBsZVNlbGVjdGlvbk1vZGVsKCk7XHJcbiAgICAgIHR1cGxlU2VsZWN0aW9uTW9kZWwuc2VsZWN0aW9uVHlwZSA9ICd0dXBsZXMnO1xyXG4gICAgICB0dXBsZVNlbGVjdGlvbk1vZGVsLm9iamVjdElkcyA9IGlkcztcclxuICAgICAgc2VsZWN0aW9uTW9kZWxDb250YWluZXIuc2VsZWN0aW9uID0gdHVwbGVTZWxlY3Rpb25Nb2RlbDtcclxuICAgIH1cclxuICAgIHJldHVybiBzZWxlY3Rpb25Nb2RlbENvbnRhaW5lcjtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogTWV0aG9kIHRvIHByZXBhcmUgdGhlIHByZXMgbW9kZWxzIGZvciBzZWxlY3Rpb24gYnkgdmFsdWVzLlxyXG4gICAqXHJcbiAgICogU3VwcG9ydHMgMyB0eXBlcyBmb3Igc2VsZWN0aW9uOlxyXG4gICAqIDEpIGhpZXJhcmNoaWNhbCB2YWx1ZSBiYXNlZCBzZWxlY3Rpb25cclxuICAgKiAyKSByYW5nZSB2YWx1ZSBiYXNlZCBzZWxlY3Rpb25cclxuICAgKiAzKSBEaW1lbnNpb24gdmFsdWUgYmFzZWQgc2VsZWN0aW9uXHJcbiAgICpcclxuICAgKiBAcGFyYW0gbWFya3NcclxuICAgKiBAcGFyYW0gaGllck1vZGVsQXJyXHJcbiAgICogQHBhcmFtIGRpbU1vZGVsQXJyXHJcbiAgICogQHBhcmFtIHF1YW50TW9kZWxBcnJcclxuICAgKiBAcGFyYW0gc2VsZWN0aW9uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBwYXJzZVNlbGVjdGlvbk1hcmtzKHNlbGVjdGlvbkNyaXRlcmlhczogQXJyYXk8Q29udHJhY3QuU2VsZWN0aW9uQ3JpdGVyaWE+LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25UeXBlOiBTZWxlY3Rpb25Dcml0ZXJpYVR5cGUpOiBTZWxlY3Rpb25Nb2RlbHNDb250YWluZXIge1xyXG4gICAgbGV0IHNlbGVjdGlvbk1vZGVsQ29udGFpbmVyOiBTZWxlY3Rpb25Nb2RlbHNDb250YWluZXIgPSBuZXcgU2VsZWN0aW9uTW9kZWxzQ29udGFpbmVyKCk7XHJcbiAgICBsZXQgbWl4ZWRTZWxlY3Rpb25zRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlbGVjdGlvbkNyaXRlcmlhcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBzdCA9IHNlbGVjdGlvbkNyaXRlcmlhc1tpXTtcclxuICAgICAgaWYgKHN0LmZpZWxkTmFtZSAmJiAoc3QudmFsdWUgIT09IHVuZGVmaW5lZCAmJiBzdC52YWx1ZSAhPT0gbnVsbCkpIHtcclxuICAgICAgICBsZXQgY2F0UmVnZXggPSBuZXcgUmVnRXhwKCcoXFxbW0EtWmEtejAtOV0rXSkuKicsICdnJyk7XHJcbiAgICAgICAgbGV0IHJhbmdlT3B0aW9uOiBDb250cmFjdC5SYW5nZVZhbHVlID0gc3QudmFsdWUgYXMgQ29udHJhY3QuUmFuZ2VWYWx1ZTtcclxuICAgICAgICBpZiAoY2F0UmVnZXgudGVzdChzdC5maWVsZE5hbWUpKSB7IC8vIEhpZXJhcmNoaWNhbCB2YWx1ZSBzZWxlY3Rpb25cclxuICAgICAgICAgIGlmIChzZWxlY3Rpb25UeXBlID09PSBTZWxlY3Rpb25Dcml0ZXJpYVR5cGUuSGllcmFyY2hpY2FsVHlwZSkge1xyXG4gICAgICAgICAgICBsZXQgaGllck1vZGVsOiBIaWVyYXJjaGljYWxTZWxlY3Rpb25Nb2RlbCA9IDxIaWVyYXJjaGljYWxTZWxlY3Rpb25Nb2RlbD4gdGhpcy5hZGRUb1BhcmFtc0xpc3Qoc3QuZmllbGROYW1lLCBzdC52YWx1ZSk7XHJcbiAgICAgICAgICAgIHNlbGVjdGlvbk1vZGVsQ29udGFpbmVyLmhpZXJNb2RlbEFyci5wdXNoKGhpZXJNb2RlbCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBtaXhlZFNlbGVjdGlvbnNFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoKDxDb250cmFjdC5SYW5nZVZhbHVlPiByYW5nZU9wdGlvbikubWluICE9PSB1bmRlZmluZWRcclxuICAgICAgICAgICAgICAgICYmICg8Q29udHJhY3QuUmFuZ2VWYWx1ZT4gcmFuZ2VPcHRpb24pLm1heCAhPT0gdW5kZWZpbmVkKSB7IC8vIFJhbmdlIHZhbHVlIHNlbGVjdGlvblxyXG4gICAgICAgICAgaWYgKHNlbGVjdGlvblR5cGUgPT09IFNlbGVjdGlvbkNyaXRlcmlhVHlwZS5SYW5nZVR5cGUpIHtcclxuICAgICAgICAgICAgbGV0IHF1YW50TW9kZWw6IFJhbmdlU2VsZWN0aW9uTW9kZWwgPSB0aGlzLmFkZFRvUmFuZ2VQYXJhbXNMaXN0KHN0LmZpZWxkTmFtZSwgcmFuZ2VPcHRpb24pO1xyXG4gICAgICAgICAgICBzZWxlY3Rpb25Nb2RlbENvbnRhaW5lci5xdWFudE1vZGVsQXJyLnB1c2gocXVhbnRNb2RlbCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBtaXhlZFNlbGVjdGlvbnNFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7IC8vIERpbWVuc2lvbiB2YWx1ZSBzZWxlY3Rpb25cclxuICAgICAgICAgIGlmIChzZWxlY3Rpb25UeXBlID09PSBTZWxlY3Rpb25Dcml0ZXJpYVR5cGUuRGltZW5zaW9uVHlwZSkge1xyXG4gICAgICAgICAgICBsZXQgZGltTW9kZWw6IERpbWVuc2lvblNlbGVjdGlvbk1vZGVsID0gPERpbWVuc2lvblNlbGVjdGlvbk1vZGVsPiB0aGlzLmFkZFRvUGFyYW1zTGlzdChzdC5maWVsZE5hbWUsIHN0LnZhbHVlKTtcclxuICAgICAgICAgICAgc2VsZWN0aW9uTW9kZWxDb250YWluZXIuZGltTW9kZWxBcnIucHVzaChkaW1Nb2RlbCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBtaXhlZFNlbGVjdGlvbnNFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChtaXhlZFNlbGVjdGlvbnNFcnJvcikge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RpZmZlcmVudCB0eXBlcyBvZiBzZWxlY3Rpb24gY3JpdGVyaWFzIHByb3ZpZGVkLicpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHNlbGVjdGlvbk1vZGVsQ29udGFpbmVyO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBAcGFyYW0gc2VsZWN0aW9uQ3JpdGVyaWFzIFZhbGlkYXRlIGFuZCBkZXRlcm1pbmUgdGhlIHNlbGVjdGlvbiBjcml0ZXJpYXMgdHlwZS5cclxuICAgKi9cclxuICBwcml2YXRlIHZhbGlkYXRlU2VsZWN0aW9uQ3JpdGVyaWEoc2VsZWN0aW9uQ3JpdGVyaWE6IENvbnRyYWN0LlNlbGVjdGlvbkNyaXRlcmlhKTogU2VsZWN0aW9uQ3JpdGVyaWFUeXBlIHtcclxuICAgIGxldCBzZWxlY3Rpb25UeXBlOiBTZWxlY3Rpb25Dcml0ZXJpYVR5cGU7XHJcbiAgICAvLyBEZXRlcm1pbmUgdGhlIHR5cGUgb2Ygc2VsZWN0aW9uLCB0aGlzIGNvbW1hbmQgaXMgYnkgbG9va2luZyBhdCB0aGUgZmlyc3Qgc2VsZWN0aW9uXHJcbiAgICBsZXQgY3JpdDogQ29udHJhY3QuU2VsZWN0aW9uQ3JpdGVyaWEgPSBzZWxlY3Rpb25Dcml0ZXJpYTtcclxuXHJcbiAgICBsZXQgY2F0UmVnZXggPSBuZXcgUmVnRXhwKCcoXFxbW0EtWmEtejAtOV0rXSkuKicsICdnJyk7XHJcbiAgICBsZXQgcmFuZ2VPcHRpb246IENvbnRyYWN0LlJhbmdlVmFsdWUgPSBjcml0LnZhbHVlIGFzIENvbnRyYWN0LlJhbmdlVmFsdWU7XHJcblxyXG4gICAgaWYgKGNyaXQuZmllbGROYW1lICYmIChjcml0LnZhbHVlICE9PSB1bmRlZmluZWQgJiYgY3JpdC52YWx1ZSAhPT0gbnVsbCkpIHtcclxuICAgICAgaWYgKGNhdFJlZ2V4LnRlc3QoY3JpdC5maWVsZE5hbWUpKSB7IC8vIEhpZXJhcmNoaWNhbCB2YWx1ZSBzZWxlY3Rpb25cclxuICAgICAgICBzZWxlY3Rpb25UeXBlID0gU2VsZWN0aW9uQ3JpdGVyaWFUeXBlLkhpZXJhcmNoaWNhbFR5cGU7XHJcbiAgICAgIH0gZWxzZSBpZiAoKDxDb250cmFjdC5SYW5nZVZhbHVlPiByYW5nZU9wdGlvbikubWluICE9PSB1bmRlZmluZWRcclxuICAgICAgICAgICAgICAgICYmICg8Q29udHJhY3QuUmFuZ2VWYWx1ZT4gcmFuZ2VPcHRpb24pLm1heCAhPT0gdW5kZWZpbmVkKSB7IC8vIFJhbmdlIHZhbHVlIHNlbGVjdGlvblxyXG4gICAgICAgIHNlbGVjdGlvblR5cGUgPSBTZWxlY3Rpb25Dcml0ZXJpYVR5cGUuUmFuZ2VUeXBlO1xyXG4gICAgICB9IGVsc2UgeyAvLyBEaW1lcnNpb24gdmFsdWUgc2VsZWN0aW9uXHJcbiAgICAgICAgc2VsZWN0aW9uVHlwZSA9IFNlbGVjdGlvbkNyaXRlcmlhVHlwZS5EaW1lbnNpb25UeXBlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IgKCdJbnZhbGlkIHNlbGVjdGlvbiBjcml0ZXJpYSBmb3JtYXQuJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc2VsZWN0aW9uVHlwZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldGhvZCB0byB0cmFuc2Zvcm0gdGhlIGtleSB2YWx1ZSBwYWlyIGludG8gdmFsdWUgYmFzZWQgcHJlcyBtb2RlbCBvYmplY3QuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gdmFsdWVTZWxlY3Rpb25Nb2RlbFxyXG4gICAqIEBwYXJhbSBmaWVsZE5hbWVcclxuICAgKiBAcGFyYW0gdmFsdWVcclxuICAgKi9cclxuICBwcml2YXRlIGFkZFRvUGFyYW1zTGlzdChmaWVsZE5hbWU6IHN0cmluZywgdmFsdWU6IG9iamVjdCk6IFZhbHVlU2VsZWN0aW9uTW9kZWwge1xyXG4gICAgbGV0IHZhbHVlU2VsZWN0aW9uTW9kZWw6IFZhbHVlU2VsZWN0aW9uTW9kZWwgPSBuZXcgVmFsdWVTZWxlY3Rpb25Nb2RlbCgpO1xyXG4gICAgbGV0IG1hcmtWYWx1ZXM6IEFycmF5PHN0cmluZz4gPSBbXTtcclxuXHJcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgICBsZXQgdmFsdWVBcnI6IEFycmF5PHN0cmluZz4gPSB2YWx1ZTtcclxuICAgICAgZm9yICggbGV0IGkgPSAwOyBpIDwgdmFsdWVBcnIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBtYXJrVmFsdWVzLnB1c2godmFsdWVBcnJbaV0udG9TdHJpbmcoKSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG1hcmtWYWx1ZXMucHVzaCh2YWx1ZS50b1N0cmluZygpKTtcclxuICAgIH1cclxuXHJcbiAgICB2YWx1ZVNlbGVjdGlvbk1vZGVsLnF1YWxpZmllZEZpZWxkQ2FwdGlvbiA9IGZpZWxkTmFtZTtcclxuICAgIHZhbHVlU2VsZWN0aW9uTW9kZWwuc2VsZWN0VmFsdWVzID0gbWFya1ZhbHVlcztcclxuICAgIHJldHVybiB2YWx1ZVNlbGVjdGlvbk1vZGVsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0aG9kIHRvIHRyYW5zZm9ybSB0aGUga2V5IHZhbHVlIHBhaXIgaW50byByYW5nZSBiYXNlZCBzZWxlY3Rpb24gcHJlcyBtb2RlbC5cclxuICAgKlxyXG4gICAqIFRPRE86IE5lZWQgdG8gaGFuZGxlIHRoZSBwYXJzaW5nIG9mIGRhdGUgdHlwZSB2YWx1ZXMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gdmFsdWVTZWxlY3Rpb25Nb2RlbFxyXG4gICAqIEBwYXJhbSBmaWVsZE5hbWVcclxuICAgKiBAcGFyYW0gdmFsdWVcclxuICAgKi9cclxuICBwcml2YXRlIGFkZFRvUmFuZ2VQYXJhbXNMaXN0KGZpZWxkTmFtZTogc3RyaW5nLCB2YWx1ZTogQ29udHJhY3QuUmFuZ2VWYWx1ZSk6IFJhbmdlU2VsZWN0aW9uTW9kZWwge1xyXG4gICAgbGV0IHJhbmdlU2VsZWN0aW9uTW9kZWw6IFJhbmdlU2VsZWN0aW9uTW9kZWwgPSBuZXcgUmFuZ2VTZWxlY3Rpb25Nb2RlbCgpO1xyXG4gICAgcmFuZ2VTZWxlY3Rpb25Nb2RlbC5xdWFsaWZpZWRGaWVsZENhcHRpb24gPSBmaWVsZE5hbWU7XHJcbiAgICBpZiAodmFsdWUubWF4ICE9PSB1bmRlZmluZWQgJiYgdmFsdWUubWF4ICE9PSBudWxsKSB7XHJcbiAgICAgIHJhbmdlU2VsZWN0aW9uTW9kZWwubWF4VmFsdWUgPSB2YWx1ZS5tYXgudG9TdHJpbmcoKTtcclxuICAgIH1cclxuICAgIGlmICh2YWx1ZS5taW4gIT09IHVuZGVmaW5lZCAmJiB2YWx1ZS5taW4gIT09IG51bGwpIHtcclxuICAgICAgcmFuZ2VTZWxlY3Rpb25Nb2RlbC5taW5WYWx1ZSA9IHZhbHVlLm1pbi50b1N0cmluZygpO1xyXG4gICAgfVxyXG4gICAgcmFuZ2VTZWxlY3Rpb25Nb2RlbC5pbmNsdWRlZCA9IHRoaXMudmFsaWRhdGVOdWxsT3B0aW9uVHlwZSh2YWx1ZS5udWxsT3B0aW9uKTtcclxuICAgIHJldHVybiByYW5nZVNlbGVjdGlvbk1vZGVsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0aG9kIHRvIHZhbGlkYXRlIHRoZSBzZWxlY3Rpb24gdXBkYXRlIHR5cGUuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gc2VsZWN0aW9uVXBkYXRlVHlwZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgdmFsaWRhdGVTZWxlY3Rpb25VcGRhdGVUeXBlKHNlbGVjdGlvblVwZGF0ZVR5cGU6IENvbnRyYWN0LlNlbGVjdGlvblVwZGF0ZVR5cGUpOiBzdHJpbmcge1xyXG4gICAgaWYgKHNlbGVjdGlvblVwZGF0ZVR5cGUgPT09IENvbnRyYWN0LlNlbGVjdGlvblVwZGF0ZVR5cGUuUmVwbGFjZSkge1xyXG4gICAgICByZXR1cm4gU2VsZWN0aW9uVXBkYXRlVHlwZUludGVybmFsLlJlcGxhY2U7XHJcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGlvblVwZGF0ZVR5cGUgPT09IENvbnRyYWN0LlNlbGVjdGlvblVwZGF0ZVR5cGUuQWRkKSB7XHJcbiAgICAgIHJldHVybiBTZWxlY3Rpb25VcGRhdGVUeXBlSW50ZXJuYWwuQWRkO1xyXG4gICAgfSBlbHNlIGlmIChzZWxlY3Rpb25VcGRhdGVUeXBlID09PSBDb250cmFjdC5TZWxlY3Rpb25VcGRhdGVUeXBlLlJlbW92ZSkge1xyXG4gICAgICByZXR1cm4gU2VsZWN0aW9uVXBkYXRlVHlwZUludGVybmFsLlJlbW92ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBTZWxlY3Rpb25VcGRhdGVUeXBlSW50ZXJuYWwuUmVwbGFjZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldGhvZCB0byB2YWxpZGF0ZSB0aGUgaW5jbHVkZSB0eXBlIGZvciByYW5nZSBzZWxlY3Rpb24uXHJcbiAgICpcclxuICAgKiBAcGFyYW0gbnVsbE9wdGlvblxyXG4gICAqL1xyXG4gIHByaXZhdGUgdmFsaWRhdGVOdWxsT3B0aW9uVHlwZShudWxsT3B0aW9uOiBDb250cmFjdC5GaWx0ZXJOdWxsT3B0aW9uIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcclxuICAgIGlmIChudWxsT3B0aW9uKSB7XHJcbiAgICAgIGlmIChudWxsT3B0aW9uID09PSBDb250cmFjdC5GaWx0ZXJOdWxsT3B0aW9uLk51bGxWYWx1ZXMpIHtcclxuICAgICAgICByZXR1cm4gUXVhbnRpdGF0aXZlSW5jbHVkZWRWYWx1ZXMuSW5jbHVkZU51bGw7XHJcbiAgICAgIH0gZWxzZSBpZiAobnVsbE9wdGlvbiA9PT0gQ29udHJhY3QuRmlsdGVyTnVsbE9wdGlvbi5Ob25OdWxsVmFsdWVzKSB7XHJcbiAgICAgICAgcmV0dXJuIFF1YW50aXRhdGl2ZUluY2x1ZGVkVmFsdWVzLkluY2x1ZGVOb25OdWxsO1xyXG4gICAgICB9IGVsc2UgaWYgKG51bGxPcHRpb24gPT09IENvbnRyYWN0LkZpbHRlck51bGxPcHRpb24uQWxsVmFsdWVzKSB7XHJcbiAgICAgICAgcmV0dXJuIFF1YW50aXRhdGl2ZUluY2x1ZGVkVmFsdWVzLkluY2x1ZGVBbGw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gUXVhbnRpdGF0aXZlSW5jbHVkZWRWYWx1ZXMuSW5jbHVkZUFsbDtcclxuICB9XHJcblxyXG59XHJcblxyXG4vKipcclxuICogRW51bSBmb3IgdGhlIGRpZmZlcmVudCBzZWxlY3Rpb24gY3JpdGVyaWEgdHlwZXMuXHJcbiAqL1xyXG5lbnVtIFNlbGVjdGlvbkNyaXRlcmlhVHlwZSB7XHJcbiAgSGllcmFyY2hpY2FsVHlwZSA9IDEsXHJcbiAgUmFuZ2VUeXBlID0gMixcclxuICBEaW1lbnNpb25UeXBlID0gMyxcclxuICBUdXBsZXNUeXBlID0gNCxcclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBEOi9kZXYvdHlwZXNjcmlwdC9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvU2VydmljZXMvaW1wbC9TZWxlY3Rpb25TZXJ2aWNlSW1wbC50c1xuICoqLyIsIi8qKlxyXG4gKiBTZWxlY3Rpb24gTW9kZWwuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU2VsZWN0aW9uTW9kZWwge1xyXG4gIHF1YWxpZmllZEZpZWxkQ2FwdGlvbjogc3RyaW5nO1xyXG59XHJcblxyXG4vKipcclxuICogVmFsdWUgYmFzZWQgc2VsZWN0aW9uIG1vZGVsLiBNZWFudCBmb3IgaGllcmFyY2hpY2FsLCByYW5nZSBhbmQgY2F0ZWdvcmljYWwgc2VsZWN0aW9ucy5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBWYWx1ZVNlbGVjdGlvbk1vZGVsIGV4dGVuZHMgU2VsZWN0aW9uTW9kZWwge1xyXG4gIHNlbGVjdFZhbHVlczogQXJyYXk8c3RyaW5nPiA9IFtdO1xyXG59XHJcblxyXG4vKipcclxuICogSGllcmFyY2hpY2FsIHZhbHVlIHNlbGVjdGlvbiBtb2RlbFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEhpZXJhcmNoaWNhbFNlbGVjdGlvbk1vZGVsIGV4dGVuZHMgVmFsdWVTZWxlY3Rpb25Nb2RlbCB7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSYW5nZSBiYXNlZCB2YWx1ZSBzZWxlY3Rpb24gbW9kZWxcclxuICovXHJcbmV4cG9ydCBjbGFzcyBSYW5nZVNlbGVjdGlvbk1vZGVsIGV4dGVuZHMgU2VsZWN0aW9uTW9kZWwge1xyXG4gIG1pblZhbHVlOiBzdHJpbmc7XHJcbiAgbWF4VmFsdWU6IHN0cmluZztcclxuICBpbmNsdWRlZDogc3RyaW5nO1xyXG59XHJcblxyXG4vKipcclxuICogRGltZW5zaW9uIHZhbHVlIHNlbGVjdGlvbiBtb2RlbFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIERpbWVuc2lvblNlbGVjdGlvbk1vZGVsIGV4dGVuZHMgVmFsdWVTZWxlY3Rpb25Nb2RlbCB7XHJcbn1cclxuLyoqXHJcbiAqIFR1cGxlIGJhc2VkIHNlbGVjdGlvbiBtb2RlbFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFR1cGxlU2VsZWN0aW9uTW9kZWwge1xyXG4gIHNlbGVjdGlvblR5cGU6IHN0cmluZztcclxuICBvYmplY3RJZHM6IEFycmF5PHN0cmluZz4gPSBbXTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbnRhaW5lciBjbGFzcyB0byBwb3B1bGF0ZSBhbGwgdGhlIHNlbGVjdGlvbiBtb2RlbHMgd2hlbiBwYXJzaW5nIGlucHV0XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU2VsZWN0aW9uTW9kZWxzQ29udGFpbmVyIHtcclxuICBoaWVyTW9kZWxBcnI6IEFycmF5PEhpZXJhcmNoaWNhbFNlbGVjdGlvbk1vZGVsPiA9IFtdO1xyXG4gIGRpbU1vZGVsQXJyOiBBcnJheTxEaW1lbnNpb25TZWxlY3Rpb25Nb2RlbD4gPSBbXTtcclxuICBxdWFudE1vZGVsQXJyOiBBcnJheTxSYW5nZVNlbGVjdGlvbk1vZGVsPiA9IFtdO1xyXG4gIHNlbGVjdGlvbjogVHVwbGVTZWxlY3Rpb25Nb2RlbDtcclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBEOi9kZXYvdHlwZXNjcmlwdC9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvTW9kZWxzL1NlbGVjdGlvbk1vZGVscy50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XHJcblxyXG5pbXBvcnQgeyBEYXNoYm9hcmRJbXBsIH0gZnJvbSAnLi9JbnRlcm5hbC9EYXNoYm9hcmRJbXBsJztcclxuaW1wb3J0IHsgU2hlZXQgfSBmcm9tICcuL1NoZWV0JztcclxuXHJcbmV4cG9ydCBjbGFzcyBEYXNoYm9hcmQgZXh0ZW5kcyBTaGVldCBpbXBsZW1lbnRzIENvbnRyYWN0LkRhc2hib2FyZCB7XHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgX2Rhc2hib2FyZEltcGw6IERhc2hib2FyZEltcGwpIHtcclxuICAgIHN1cGVyKF9kYXNoYm9hcmRJbXBsKTtcclxuICAgIF9kYXNoYm9hcmRJbXBsLmluaXRpYWxpemVXaXRoUHVibGljSW50ZXJmYWNlcyh0aGlzKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgd29ya3NoZWV0cygpOiBBcnJheTxDb250cmFjdC5Xb3Jrc2hlZXQ+IHtcclxuICAgIHJldHVybiB0aGlzLl9kYXNoYm9hcmRJbXBsLndvcmtzaGVldHM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IG9iamVjdHMoKTogQXJyYXk8Q29udHJhY3QuRGFzaGJvYXJkT2JqZWN0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGFzaGJvYXJkSW1wbC5vYmplY3RzO1xyXG4gIH1cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuLi9zcmMvRGFzaGJvYXJkLnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcclxuXHJcbmltcG9ydCB7IEV2ZW50TGlzdGVuZXJNYW5hZ2VyIH0gZnJvbSAnQHRhYmxlYXUvYXBpLXNoYXJlZCc7XHJcblxyXG5pbXBvcnQgeyBTaGVldEltcGwgfSBmcm9tICcuL0ludGVybmFsL1NoZWV0SW1wbCc7XHJcblxyXG5leHBvcnQgY2xhc3MgU2hlZXQgZXh0ZW5kcyBFdmVudExpc3RlbmVyTWFuYWdlciBpbXBsZW1lbnRzIENvbnRyYWN0LlNoZWV0IHtcclxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBfc2hlZXRJbXBsOiBTaGVldEltcGwpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IG5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9zaGVldEltcGwubmFtZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc2hlZXRUeXBlKCk6IENvbnRyYWN0LlNoZWV0VHlwZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2hlZXRJbXBsLnNoZWV0VHlwZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc2l6ZSgpOiBDb250cmFjdC5TaXplIHtcclxuICAgIHJldHVybiB0aGlzLl9zaGVldEltcGwuc2l6ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBmaW5kUGFyYW1ldGVyQXN5bmMocGFyYW1ldGVyTmFtZTogc3RyaW5nKTogUHJvbWlzZTxDb250cmFjdC5QYXJhbWV0ZXIgfCB1bmRlZmluZWQ+IHtcclxuICAgIHJldHVybiB0aGlzLl9zaGVldEltcGwuZmluZFBhcmFtZXRlckFzeW5jKHBhcmFtZXRlck5hbWUsIHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFBhcmFtZXRlcnNBc3luYygpOiBQcm9taXNlPEFycmF5PENvbnRyYWN0LlBhcmFtZXRlcj4+IHtcclxuICAgIHJldHVybiB0aGlzLl9zaGVldEltcGwuZ2V0UGFyYW1ldGVyc0FzeW5jKHRoaXMpO1xyXG4gIH1cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuLi9zcmMvU2hlZXQudHNcbiAqKi8iLCJpbXBvcnQgKiBhcyBDb250cmFjdCBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xyXG5cclxuLyoqXHJcbiAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBleHRlcm5hbCBEYXNoYm9hcmRDb250ZW50IG5hbWVzcGFjZS5cclxuICogVGhpcyBkb2VzIG5vdCBmb2xsb3cgdGhlIEltcGwgcGF0dGVybiBhcyBEYXNoYm9hcmRDb250ZW50IGlzXHJcbiAqIGN1cnJlbnRseSBqdXN0IGEgKHNpbmdsZSkgcHJvcGVydHkgYmFnLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIERhc2hib2FyZENvbnRlbnQgaW1wbGVtZW50cyBDb250cmFjdC5EYXNoYm9hcmRDb250ZW50IHtcclxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBfZGFzaGJvYXJkOiBDb250cmFjdC5EYXNoYm9hcmQpIHsgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGRhc2hib2FyZCgpOiBDb250cmFjdC5EYXNoYm9hcmQge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Rhc2hib2FyZDtcclxuICB9XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi4vc3JjL05hbWVzcGFjZXMvRGFzaGJvYXJkQ29udGVudC50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XHJcblxyXG5pbXBvcnQgeyBBZGRJbkVudmlyb25tZW50IH0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcclxuaW1wb3J0IHsgSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzIGFzIEVudW1NYXBwaW5ncyB9IGZyb20gJ0B0YWJsZWF1L2FwaS1zaGFyZWQnO1xyXG5cclxuLyoqXHJcbiAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBleHRlcm5hbCBlbnZpcm9ubWVudCBuYW1lc3BhY2UuXHJcbiAqIEVudmlyb25tZW50IGRvZXMgbm90IGZvbGxvdyB0aGUgSW1wbCBwYXR0ZXJuIGFzIGl0IGlzXHJcbiAqIGp1c3QgYSBwcm9wZXJ0eSBiYWcuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRW52aXJvbm1lbnQgaW1wbGVtZW50cyBDb250cmFjdC5FbnZpcm9ubWVudCB7XHJcbiAgcHJpdmF0ZSBfYXBpVmVyc2lvbjogc3RyaW5nO1xyXG4gIHByaXZhdGUgX2NvbnRleHQ6IENvbnRyYWN0LkFkZEluQ29udGV4dDtcclxuICBwcml2YXRlIF9sYW5ndWFnZTogc3RyaW5nO1xyXG4gIHByaXZhdGUgX2xvY2FsZTogc3RyaW5nO1xyXG4gIHByaXZhdGUgX21vZGU6IENvbnRyYWN0LkFkZEluTW9kZTtcclxuICBwcml2YXRlIF9vcGVyYXRpbmdTeXN0ZW06IHN0cmluZztcclxuICBwcml2YXRlIF90YWJsZWF1VmVyc2lvbjogc3RyaW5nO1xyXG5cclxuICBwdWJsaWMgY29uc3RydWN0b3IoYWRkSW5FbnZpcm9ubWVudDogQWRkSW5FbnZpcm9ubWVudCkge1xyXG4gICAgdGhpcy5fYXBpVmVyc2lvbiA9IGFkZEluRW52aXJvbm1lbnQuYXBpVmVyc2lvbjtcclxuICAgIHRoaXMuX2NvbnRleHQgPSBFbnVtTWFwcGluZ3MuYWRkSW5Db250ZXh0LmNvbnZlcnQoYWRkSW5FbnZpcm9ubWVudC5hZGRJbkNvbnRleHQpO1xyXG4gICAgdGhpcy5fbGFuZ3VhZ2UgPSBhZGRJbkVudmlyb25tZW50LmFkZEluTGFuZ3VhZ2U7XHJcbiAgICB0aGlzLl9sb2NhbGUgPSBhZGRJbkVudmlyb25tZW50LmFkZEluTG9jYWxlO1xyXG4gICAgdGhpcy5fbW9kZSA9IEVudW1NYXBwaW5ncy5hZGRJbk1vZGUuY29udmVydChhZGRJbkVudmlyb25tZW50LmFkZEluTW9kZSk7XHJcbiAgICB0aGlzLl9vcGVyYXRpbmdTeXN0ZW0gPSBhZGRJbkVudmlyb25tZW50Lm9wZXJhdGluZ1N5c3RlbTtcclxuICAgIHRoaXMuX3RhYmxlYXVWZXJzaW9uID0gYWRkSW5FbnZpcm9ubWVudC50YWJsZWF1VmVyc2lvbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgYXBpVmVyc2lvbigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FwaVZlcnNpb247XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNvbnRleHQoKTogQ29udHJhY3QuQWRkSW5Db250ZXh0IHtcclxuICAgIHJldHVybiB0aGlzLl9jb250ZXh0O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBsYW5ndWFnZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xhbmd1YWdlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBsb2NhbGUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9sb2NhbGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IG1vZGUoKTogQ29udHJhY3QuQWRkSW5Nb2RlIHtcclxuICAgIHJldHVybiB0aGlzLl9tb2RlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBvcGVyYXRpbmdTeXN0ZW0oKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9vcGVyYXRpbmdTeXN0ZW07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHRhYmxlYXVWZXJzaW9uKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fdGFibGVhdVZlcnNpb247XHJcbiAgfVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4uL3NyYy9OYW1lc3BhY2VzL0Vudmlyb25tZW50LnRzXG4gKiovIiwiaW1wb3J0IHsgU2V0dGluZ3MgYXMgU2V0dGluZ3NDb250cmFjdCB9IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XHJcblxyXG5pbXBvcnQgeyBTZXR0aW5nc0ltcGwgfSBmcm9tICcuLi9JbnRlcm5hbC9TZXR0aW5nc0ltcGwnO1xyXG5pbXBvcnQgeyBTZXR0aW5nc0NvbGxlY3Rpb24gfSBmcm9tICcuLi9TZXJ2aWNlcy9TZXR0aW5nc1NlcnZpY2UnO1xyXG5cclxuLyoqXHJcbiAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBleHRlcm5hbCBzZXR0aW5ncyBuYW1lc3BhY2UuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU2V0dGluZ3MgaW1wbGVtZW50cyBTZXR0aW5nc0NvbnRyYWN0IHtcclxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBzZXR0aW5nc0ltcGw6IFNldHRpbmdzSW1wbCkgeyB9XHJcblxyXG4gIHB1YmxpYyBlcmFzZShrZXk6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXR0aW5nc0ltcGwuZXJhc2Uoa2V5KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQoa2V5OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3NJbXBsLmdldChrZXkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEFsbCgpOiBTZXR0aW5nc0NvbGxlY3Rpb24ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3NJbXBsLmdldEFsbCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBpc01vZGlmaWVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3NJbXBsLmlzTW9kaWZpZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2F2ZUFzeW5jKCk6IFByb21pc2U8U2V0dGluZ3NDb2xsZWN0aW9uPiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5nc0ltcGwuc2F2ZUFzeW5jKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0KGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldHRpbmdzSW1wbC5zZXQoa2V5LCB2YWx1ZSk7XHJcbiAgfVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4uL3NyYy9OYW1lc3BhY2VzL1NldHRpbmdzLnRzXG4gKiovIiwiaW1wb3J0IHsgSW50ZXJuYWxBcGlEaXNwYXRjaGVyIH0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcbmltcG9ydCB7IEFwaVNlcnZpY2VSZWdpc3RyeSB9IGZyb20gJ0B0YWJsZWF1L2FwaS1zaGFyZWQnO1xuXG5pbXBvcnQgeyBJbml0aWFsaXphdGlvblNlcnZpY2VJbXBsIH0gZnJvbSAnLi9JbXBsL0luaXRpYWxpemF0aW9uU2VydmljZUltcGwnO1xuaW1wb3J0IHsgU2V0dGluZ3NTZXJ2aWNlSW1wbCB9IGZyb20gICcuL0ltcGwvU2V0dGluZ3NTZXJ2aWNlSW1wbCc7XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckFsbEFkZEluU2VydmljZXMoZGlzcGF0Y2hlcjogSW50ZXJuYWxBcGlEaXNwYXRjaGVyKTogdm9pZCB7XG4gIEFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5yZWdpc3RlclNlcnZpY2UobmV3IEluaXRpYWxpemF0aW9uU2VydmljZUltcGwoZGlzcGF0Y2hlcikpO1xuICBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UucmVnaXN0ZXJTZXJ2aWNlKG5ldyBTZXR0aW5nc1NlcnZpY2VJbXBsKGRpc3BhdGNoZXIpKTtcbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4uL3NyYy9TZXJ2aWNlcy9SZWdpc3RlckFsbEFkZEluU2VydmljZXMudHNcbiAqKi8iLCJpbXBvcnQgeyBBZGRJbkJvb3RzdHJhcEluZm8sIEludGVybmFsQXBpRGlzcGF0Y2hlciwgVmVyYklkIH0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcblxuaW1wb3J0IHsgQWRkSW5TZXJ2aWNlTmFtZXMgfSBmcm9tICcuLi9BZGRJblNlcnZpY2VOYW1lcyc7XG5pbXBvcnQgeyBJbml0aWFsaXphdGlvblNlcnZpY2UgfSBmcm9tICcuLi9Jbml0aWFsaXphdGlvblNlcnZpY2UnO1xuXG5leHBvcnQgY2xhc3MgSW5pdGlhbGl6YXRpb25TZXJ2aWNlSW1wbCBpbXBsZW1lbnRzIEluaXRpYWxpemF0aW9uU2VydmljZSB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIGRpc3BhdGNoZXI6IEludGVybmFsQXBpRGlzcGF0Y2hlcikgeyB9XG5cbiAgcHVibGljIGdldCBzZXJ2aWNlTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBBZGRJblNlcnZpY2VOYW1lcy5Jbml0aWFsaXphdGlvblNlcnZpY2U7XG4gIH1cblxuICBwdWJsaWMgaW5pdGlhbGl6ZURhc2hib2FyZEFkZEluQXN5bmMoKTogUHJvbWlzZTxBZGRJbkJvb3RzdHJhcEluZm8+IHtcbiAgICAvLyBXZSBkb24ndCBuZWVkIGFueSBwYXJhbWV0ZXJzIGZvciB0aGlzIGNhbGwgYmVjYXVzZSB0aGV5IGFyZSBhZGRlZCBpbiBmb3IgdXMgYnkgdGhlIGRpc3BhdGNoZXJcbiAgICByZXR1cm4gdGhpcy5kaXNwYXRjaGVyLmV4ZWN1dGUoVmVyYklkLkluaXRpYWxpemVBZGRJbiwge30pLnRoZW48QWRkSW5Cb290c3RyYXBJbmZvPihyZXNwb25zZSA9PiB7XG4gICAgICAvLyBUT0RPIC0gVmFsaWRhdGUgcmV0dXJuIHZhbHVlXG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdCBhcyBBZGRJbkJvb3RzdHJhcEluZm87XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuLi9zcmMvU2VydmljZXMvSW1wbC9Jbml0aWFsaXphdGlvblNlcnZpY2VJbXBsLnRzXG4gKiovIiwiaW1wb3J0IHtcclxuICBBZGRJblNldHRpbmdzSW5mbyxcclxuICBFeGVjdXRlUGFyYW1ldGVycyxcclxuICBJbnRlcm5hbEFwaURpc3BhdGNoZXIsXHJcbiAgUGFyYW1ldGVySWQsXHJcbiAgVmVyYklkXHJcbn0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcclxuXHJcbmltcG9ydCB7IEFkZEluU2VydmljZU5hbWVzIH0gZnJvbSAnLi4vQWRkSW5TZXJ2aWNlTmFtZXMnO1xyXG5pbXBvcnQgeyBTZXR0aW5nc0NvbGxlY3Rpb24sIFNldHRpbmdzU2VydmljZSB9IGZyb20gJy4uL1NldHRpbmdzU2VydmljZSc7XHJcblxyXG5leHBvcnQgY2xhc3MgU2V0dGluZ3NTZXJ2aWNlSW1wbCBpbXBsZW1lbnRzIFNldHRpbmdzU2VydmljZSB7XHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgZGlzcGF0Y2hlcjogSW50ZXJuYWxBcGlEaXNwYXRjaGVyKSB7IH1cclxuXHJcbiAgcHVibGljIGdldCBzZXJ2aWNlTmFtZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIEFkZEluU2VydmljZU5hbWVzLlNldHRpbmdzU2VydmljZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzYXZlU2V0dGluZ3NBc3luYyhzZXR0aW5nczogU2V0dGluZ3NDb2xsZWN0aW9uKTogUHJvbWlzZTxTZXR0aW5nc0NvbGxlY3Rpb24+IHtcclxuICAgIGNvbnN0IHBhcmFtZXRlcnM6IEV4ZWN1dGVQYXJhbWV0ZXJzID0ge1tQYXJhbWV0ZXJJZC5TZXR0aW5nc1ZhbHVlc106IHNldHRpbmdzfTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5kaXNwYXRjaGVyLmV4ZWN1dGUoVmVyYklkLlNhdmVBZGRJblNldHRpbmdzLCBwYXJhbWV0ZXJzKS50aGVuPFNldHRpbmdzQ29sbGVjdGlvbj4odmFsdWUgPT4ge1xyXG4gICAgICBjb25zdCByZXN1bHQgPSB2YWx1ZS5yZXN1bHQgYXMgQWRkSW5TZXR0aW5nc0luZm87XHJcblxyXG4gICAgICBpZiAoIXJlc3VsdCB8fCAhcmVzdWx0LnNldHRpbmdzVmFsdWVzKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnRlcm5hbCBlcnJvciBzYXZpbmcgc2V0dGluZ3MuJyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybihyZXN1bHQuc2V0dGluZ3NWYWx1ZXMpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4uL3NyYy9TZXJ2aWNlcy9JbXBsL1NldHRpbmdzU2VydmljZUltcGwudHNcbiAqKi8iLCJpbXBvcnQgeyBWZXJzaW9uTnVtYmVyIGFzIFZlcnNpb25OdW1iZXJDb250cmFjdCB9IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XHJcblxyXG5kZWNsYXJlIHZhciBBRERJTl9BUElfVkVSU0lPTl9OVU1CRVI6IHN0cmluZztcclxuXHJcbi8qKlxyXG4gKiBSZXByZXNlbnRzIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgdGhlIGFkZGluIGxpYnJhcnlcclxuICovXHJcbmV4cG9ydCBjbGFzcyBWZXJzaW9uTnVtYmVyIGltcGxlbWVudHMgVmVyc2lvbk51bWJlckNvbnRyYWN0IHtcclxuXHJcbiAgLy8gVXNpbmcgc29tZSB3ZWJwYWNrIHRyaWNrcywgd2UgY2FuIGluamVjdCB0aGlzIHZlcnNpb24gaW50byBvdXIgY29kZSAoa2luZGEgbGlrZSBjKysgcHJlcHJvY2Vzc29yIHN0dWZmKVxyXG4gIHByaXZhdGUgc3RhdGljIF9pbnN0YW5jZTogVmVyc2lvbk51bWJlciA9IG5ldyBWZXJzaW9uTnVtYmVyKEFERElOX0FQSV9WRVJTSU9OX05VTUJFUik7XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGUgdmVyc2lvbiBudW1iZXIuXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyBnZXQgSW5zdGFuY2UoKTogVmVyc2lvbk51bWJlciB7XHJcbiAgICByZXR1cm4gVmVyc2lvbk51bWJlci5faW5zdGFuY2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9tYWpvcjogbnVtYmVyO1xyXG4gIHByaXZhdGUgX21pbm9yOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBfZml4OiBudW1iZXI7XHJcblxyXG4gIC8vIHByaXZhdGUgY29uc3RydWN0b3Igc28gZXZlcnlvbmUgdXNlcyB0aGUgc2luZ2xldG9uIGluc3RhbmNlXHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcih2ZXJzaW9uU3RyaW5nOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHBhcnRzID0gdmVyc2lvblN0cmluZy5zcGxpdCgnLicpLm1hcChwID0+IHBhcnNlSW50KHAsIDEwKSk7XHJcbiAgICBpZiAocGFydHMubGVuZ3RoICE9PSAzKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB2ZXJzaW9uIG51bWJlcjogJyArIHZlcnNpb25TdHJpbmcpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX21ham9yID0gcGFydHNbMF07XHJcbiAgICB0aGlzLl9taW5vciA9IHBhcnRzWzFdO1xyXG4gICAgdGhpcy5fZml4ID0gcGFydHNbMl07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IG1ham9yKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fbWFqb3I7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IG1pbm9yKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fbWlub3I7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGZpeCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpeDtcclxuICB9XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi4vc3JjL1ZlcnNpb25OdW1iZXIudHNcbiAqKi8iLCJpbXBvcnQgKiBhcyBDb250cmFjdCBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xyXG5pbXBvcnQgeyBBZGRJbkRhc2hib2FyZEluZm8sIERhc2hib2FyZE9iamVjdFR5cGUsIFNoZWV0UGF0aCwgVmlzdWFsSWQgfSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xyXG5pbXBvcnQgeyBJbnRlcm5hbFRvRXh0ZXJuYWxFbnVtTWFwcGluZ3MsIFBvaW50LCBTaXplIH0gZnJvbSAnQHRhYmxlYXUvYXBpLXNoYXJlZCc7XHJcblxyXG5pbXBvcnQgeyBEYXNoYm9hcmRPYmplY3QgfSBmcm9tICcuLi9EYXNoYm9hcmRPYmplY3QnO1xyXG5pbXBvcnQgeyBXb3Jrc2hlZXQgfSBmcm9tICcuLi9Xb3Jrc2hlZXQnO1xyXG5pbXBvcnQgeyBTaGVldEltcGwgfSBmcm9tICcuL1NoZWV0SW1wbCc7XHJcbmltcG9ydCB7IFNoZWV0SW5mb0ltcGwgfSBmcm9tICcuL1NoZWV0SW5mb0ltcGwnO1xyXG5pbXBvcnQgeyBXb3Jrc2hlZXRJbXBsIH0gZnJvbSAnLi9Xb3Jrc2hlZXRJbXBsJztcclxuXHJcbmV4cG9ydCBjbGFzcyBEYXNoYm9hcmRJbXBsIGV4dGVuZHMgU2hlZXRJbXBsIHtcclxuICBwcml2YXRlIF93b3Jrc2hlZXRzOiBBcnJheTxDb250cmFjdC5Xb3Jrc2hlZXQ+O1xyXG4gIHByaXZhdGUgX29iamVjdHM6IEFycmF5PENvbnRyYWN0LkRhc2hib2FyZE9iamVjdD47XHJcblxyXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIF9pbmZvOiBBZGRJbkRhc2hib2FyZEluZm8sIHByaXZhdGUgX3NoZWV0UGF0aDogU2hlZXRQYXRoKSB7XHJcbiAgICBzdXBlcihuZXcgU2hlZXRJbmZvSW1wbChfaW5mby5uYW1lLCBDb250cmFjdC5TaGVldFR5cGUuRGFzaGJvYXJkLCBuZXcgU2l6ZShfaW5mby5zaXplLmgsIF9pbmZvLnNpemUudykpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgd29ya3NoZWV0cygpOiBBcnJheTxDb250cmFjdC5Xb3Jrc2hlZXQ+IHtcclxuICAgIHJldHVybiB0aGlzLl93b3Jrc2hlZXRzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBvYmplY3RzKCk6IEFycmF5PENvbnRyYWN0LkRhc2hib2FyZE9iamVjdD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX29iamVjdHM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaW5pdGlhbGl6ZVdpdGhQdWJsaWNJbnRlcmZhY2VzKGRhc2hib2FyZDogQ29udHJhY3QuRGFzaGJvYXJkKTogdm9pZCB7XHJcbiAgICB0aGlzLl93b3Jrc2hlZXRzID0gbmV3IEFycmF5PFdvcmtzaGVldD4oKTtcclxuICAgIHRoaXMuX29iamVjdHMgPSBuZXcgQXJyYXk8Q29udHJhY3QuRGFzaGJvYXJkT2JqZWN0PigpO1xyXG5cclxuICAgIC8vIFByb2Nlc3MgYWxsIHRoZSB6b25lcyB3aGljaCBhcmUgY29udGFpbmVkIGluIHRoaXMgZGFzaGJvYXJkXHJcbiAgICBmb3IgKGNvbnN0IHpvbmUgb2YgdGhpcy5faW5mby56b25lcykge1xyXG4gICAgICBsZXQgd29ya3NoZWV0OiBXb3Jrc2hlZXQgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgICBjb25zdCB6b25lU2l6ZSA9IG5ldyBTaXplKHpvbmUuaGVpZ2h0LCB6b25lLndpZHRoKTtcclxuXHJcbiAgICAgIGlmICh6b25lLnpvbmVUeXBlID09PSBEYXNoYm9hcmRPYmplY3RUeXBlLldvcmtzaGVldCkge1xyXG4gICAgICAgIGNvbnN0IHNoZWV0SW5mbyA9IG5ldyBTaGVldEluZm9JbXBsKHpvbmUubmFtZSwgQ29udHJhY3QuU2hlZXRUeXBlLldvcmtzaGVldCwgem9uZVNpemUpO1xyXG4gICAgICAgIGNvbnN0IHZpeklkOiBWaXN1YWxJZCA9IHtcclxuICAgICAgICAgIHdvcmtzaGVldDogem9uZS5uYW1lLFxyXG4gICAgICAgICAgZGFzaGJvYXJkOiB0aGlzLl9pbmZvLm5hbWUsXHJcbiAgICAgICAgICBzdG9yeWJvYXJkOiB0aGlzLl9zaGVldFBhdGguc3Rvcnlib2FyZCxcclxuICAgICAgICAgIGZsaXBib2FyZFpvbmVJRDogdGhpcy5fc2hlZXRQYXRoLmZsaXBib2FyZFpvbmVJRCxcclxuICAgICAgICAgIHN0b3J5UG9pbnRJRDogdGhpcy5fc2hlZXRQYXRoLnN0b3J5UG9pbnRJRFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGNvbnN0IHdvcmtzaGVldEltcGwgPSBuZXcgV29ya3NoZWV0SW1wbChzaGVldEluZm8sIHZpeklkLCBkYXNoYm9hcmQpO1xyXG4gICAgICAgIHdvcmtzaGVldCA9IG5ldyBXb3Jrc2hlZXQod29ya3NoZWV0SW1wbCk7XHJcbiAgICAgICAgdGhpcy5fd29ya3NoZWV0cy5wdXNoKHdvcmtzaGVldCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHpvbmVQb2ludCA9IG5ldyBQb2ludCh6b25lLngsIHpvbmUueSk7XHJcblxyXG4gICAgICBjb25zdCBkYXNoYm9hcmRPYmplY3QgPSBuZXcgRGFzaGJvYXJkT2JqZWN0KFxyXG4gICAgICAgIGRhc2hib2FyZCxcclxuICAgICAgICBJbnRlcm5hbFRvRXh0ZXJuYWxFbnVtTWFwcGluZ3MuZGFzaGJvYXJkT2JqZWN0VHlwZS5jb252ZXJ0KHpvbmUuem9uZVR5cGUpLFxyXG4gICAgICAgIHpvbmVQb2ludCxcclxuICAgICAgICB6b25lU2l6ZSxcclxuICAgICAgICB3b3Jrc2hlZXRcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMuX29iamVjdHMucHVzaChkYXNoYm9hcmRPYmplY3QpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuLi9zcmMvSW50ZXJuYWwvRGFzaGJvYXJkSW1wbC50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XHJcblxyXG4vKipcclxuICogSW1wbGVtZW50YXRpb24gb2YgdGhlIGRhc2hib2FyZCBvYmplY3RzIC0gdGhlIHpvbmVzIGluIGEgZGFzaGJvYXJkLlxyXG4gKiBUaGlzIGRvZXMgbm90IGZvbGxvdyB0aGUgSW1wbCBwYXR0ZXJuIGFzIGl0IGlzIGp1c3QgYSBwcm9wZXJ0eSBiYWcuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRGFzaGJvYXJkT2JqZWN0IGltcGxlbWVudHMgQ29udHJhY3QuRGFzaGJvYXJkT2JqZWN0IHtcclxuICBwdWJsaWMgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9kYXNoYm9hcmQ6IENvbnRyYWN0LkRhc2hib2FyZCxcclxuICAgIHByaXZhdGUgX3R5cGU6IENvbnRyYWN0LkRhc2hib2FyZE9iamVjdFR5cGUsXHJcbiAgICBwcml2YXRlIF9wb3NpdGlvbjogQ29udHJhY3QuUG9pbnQsXHJcbiAgICBwcml2YXRlIF9zaXplOiBDb250cmFjdC5TaXplLFxyXG4gICAgcHJpdmF0ZSBfd29ya3NoZWV0OiBDb250cmFjdC5Xb3Jrc2hlZXQgfCB1bmRlZmluZWRcclxuICApIHsgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGRhc2hib2FyZCgpOiBDb250cmFjdC5EYXNoYm9hcmQge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Rhc2hib2FyZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgdHlwZSgpOiBDb250cmFjdC5EYXNoYm9hcmRPYmplY3RUeXBlIHtcclxuICAgIHJldHVybiB0aGlzLl90eXBlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBwb3NpdGlvbigpOiBDb250cmFjdC5Qb2ludCB7XHJcbiAgICByZXR1cm4gdGhpcy5fcG9zaXRpb247XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHNpemUoKTogQ29udHJhY3QuU2l6ZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2l6ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgd29ya3NoZWV0KCk6IENvbnRyYWN0LldvcmtzaGVldCB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fd29ya3NoZWV0O1xyXG4gIH1cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuLi9zcmMvRGFzaGJvYXJkT2JqZWN0LnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcclxuXHJcbmltcG9ydCB7IFNoZWV0IH0gZnJvbSAnLi9TaGVldCc7XHJcblxyXG5pbXBvcnQgeyBXb3Jrc2hlZXRJbXBsIH0gZnJvbSAnLi9JbnRlcm5hbC9Xb3Jrc2hlZXRJbXBsJztcclxuXHJcbmV4cG9ydCBjbGFzcyBXb3Jrc2hlZXQgZXh0ZW5kcyBTaGVldCBpbXBsZW1lbnRzIENvbnRyYWN0LldvcmtzaGVldCB7XHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgX3dvcmtzaGVldEltcGw6IFdvcmtzaGVldEltcGwpIHtcclxuICAgIHN1cGVyKF93b3Jrc2hlZXRJbXBsKTtcclxuXHJcbiAgICAvLyBDYWxsIHRvIGluaXRpYWxpemUgZXZlbnRzIGFuZCB0aGVuIGNhbGwgZG93biB0byB0aGUgZXZlbnQgbGlzdGVuZXIgbWFuYWdlciB0byBoYW5kbGUgdGhpbmdzXHJcbiAgICB0aGlzLl93b3Jrc2hlZXRJbXBsLmluaXRpYWxpemVFdmVudHModGhpcykuZm9yRWFjaChlID0+IHRoaXMuYWRkTmV3RXZlbnRUeXBlKGUpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgcGFyZW50RGFzaGJvYXJkKCk6IENvbnRyYWN0LkRhc2hib2FyZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fd29ya3NoZWV0SW1wbC5wYXJlbnREYXNoYm9hcmQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXBwbHlGaWx0ZXJBc3luYyhcclxuICAgIGZpZWxkTmFtZTogc3RyaW5nLCB2YWx1ZXM6IEFycmF5PHN0cmluZz4sIHVwZGF0ZVR5cGU6IENvbnRyYWN0LkZpbHRlclVwZGF0ZVR5cGUsIG9wdGlvbnM6IENvbnRyYWN0LkZpbHRlck9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5fd29ya3NoZWV0SW1wbC5hcHBseUZpbHRlckFzeW5jKGZpZWxkTmFtZSwgdmFsdWVzLCB1cGRhdGVUeXBlLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhcHBseVJhbmdlRmlsdGVyQXN5bmMoZmllbGROYW1lOiBzdHJpbmcsIGZpbHRlck9wdGlvbnM6IENvbnRyYWN0LlJhbmdlRmlsdGVyT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fd29ya3NoZWV0SW1wbC5hcHBseVJhbmdlRmlsdGVyQXN5bmMoZmllbGROYW1lLCBmaWx0ZXJPcHRpb25zKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbGVhckZpbHRlckFzeW5jKGZpZWxkTmFtZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIHJldHVybiB0aGlzLl93b3Jrc2hlZXRJbXBsLmNsZWFyRmlsdGVyQXN5bmMoZmllbGROYW1lKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRBbmFseXRpY09iamVjdHNBc3luYygpOiBQcm9taXNlPEFycmF5PENvbnRyYWN0LkFuYWx5dGljc09iamVjdD4+IHtcclxuICAgIHRocm93IG5ldyBFcnJvcignQVBJIGNhbGwgbm90IHlldCBpbXBsZW1lbnRlZC4nKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXREYXRhU291cmNlc0FzeW5jKCk6IFByb21pc2U8QXJyYXk8Q29udHJhY3QuRGF0YVNvdXJjZT4+IHtcclxuICAgIHJldHVybiB0aGlzLl93b3Jrc2hlZXRJbXBsLmdldERhdGFTb3VyY2VzQXN5bmMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRFbmNvZGluZ3NBc3luYygpOiBQcm9taXNlPEFycmF5PENvbnRyYWN0LkVuY29kaW5nPj4ge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKCdBUEkgY2FsbCBub3QgeWV0IGltcGxlbWVudGVkLicpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEZpbHRlcnNBc3luYygpOiBQcm9taXNlPENvbnRyYWN0LkZpbHRlcltdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fd29ya3NoZWV0SW1wbC5nZXRGaWx0ZXJzQXN5bmMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRTZWxlY3RlZE1hcmtzQXN5bmMoKTogUHJvbWlzZTxDb250cmFjdC5NYXJrc0NvbGxlY3Rpb24+IHtcclxuICAgIHJldHVybiB0aGlzLl93b3Jrc2hlZXRJbXBsLmdldFNlbGVjdGVkTWFya3NBc3luYygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEhpZ2hsaWdodGVkTWFya3NBc3luYygpOiBQcm9taXNlPENvbnRyYWN0Lk1hcmtzQ29sbGVjdGlvbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3dvcmtzaGVldEltcGwuZ2V0SGlnaGxpZ2h0ZWRNYXJrc0FzeW5jKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0U3VtbWFyeURhdGFBc3luYyhvcHRpb25zOiBDb250cmFjdC5HZXRTdW1tYXJ5RGF0YU9wdGlvbnMpOiBQcm9taXNlPENvbnRyYWN0LkRhdGFUYWJsZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3dvcmtzaGVldEltcGwuZ2V0U3VtbWFyeURhdGFBc3luYyhvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRVbmRlcmx5aW5nRGF0YUFzeW5jKG9wdGlvbnM6IENvbnRyYWN0LkdldFVuZGVybHlpbmdEYXRhT3B0aW9ucyk6IFByb21pc2U8Q29udHJhY3QuRGF0YVRhYmxlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fd29ya3NoZWV0SW1wbC5nZXRVbmRlcmx5aW5nRGF0YUFzeW5jKG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsZWFyU2VsZWN0ZWRNYXJrc0FzeW5jKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3dvcmtzaGVldEltcGwuY2xlYXJTZWxlY3RlZE1hcmtzQXN5bmMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWxlY3RNYXJrc0J5SURBc3luYyhtYXJrc0luZm86IEFycmF5PENvbnRyYWN0Lk1hcmtJbmZvPiwgdXBkYXRlVHlwZTogQ29udHJhY3QuU2VsZWN0aW9uVXBkYXRlVHlwZSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKCdBUEkgY2FsbCBub3QgeWV0IGltcGxlbWVudGVkLicpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbGVjdE1hcmtzQnlWYWx1ZUFzeW5jKHNlbGVjdGlvbnM6IEFycmF5PENvbnRyYWN0LlNlbGVjdGlvbkNyaXRlcmlhPixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uVXBkYXRlVHlwZTogQ29udHJhY3QuU2VsZWN0aW9uVXBkYXRlVHlwZSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3dvcmtzaGVldEltcGwuc2VsZWN0TWFya3NCeVZhbHVlQXN5bmMoc2VsZWN0aW9ucywgc2VsZWN0aW9uVXBkYXRlVHlwZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VsZWN0TWFya3NCeUlkQXN5bmMoc2VsZWN0aW9uczogQXJyYXk8Q29udHJhY3QuTWFya0luZm8+LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25VcGRhdGVUeXBlOiBDb250cmFjdC5TZWxlY3Rpb25VcGRhdGVUeXBlKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fd29ya3NoZWV0SW1wbC5zZWxlY3RNYXJrc0J5SWRBc3luYyhzZWxlY3Rpb25zLCBzZWxlY3Rpb25VcGRhdGVUeXBlKTtcclxuICB9XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi4vc3JjL1dvcmtzaGVldC50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XHJcblxyXG5pbXBvcnQgeyBTaGVldFBhdGggfSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xyXG5pbXBvcnQgeyBBcGlTZXJ2aWNlUmVnaXN0cnksIFBhcmFtZXRlcnNTZXJ2aWNlLCBTZXJ2aWNlTmFtZXMgfSBmcm9tICdAdGFibGVhdS9hcGktc2hhcmVkJztcclxuXHJcbmltcG9ydCB7IFNoZWV0SW5mb0ltcGwgfSBmcm9tICcuL1NoZWV0SW5mb0ltcGwnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFNoZWV0SW1wbCB7XHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgX3NoZWV0SW5mb0ltcGw6IFNoZWV0SW5mb0ltcGwpIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgbmFtZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NoZWV0SW5mb0ltcGwubmFtZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc2hlZXRUeXBlKCk6IENvbnRyYWN0LlNoZWV0VHlwZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2hlZXRJbmZvSW1wbC5zaGVldFR5cGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHNoZWV0UGF0aCgpOiBTaGVldFBhdGgge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NoZWV0SW5mb0ltcGwuc2hlZXRQYXRoO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBzaXplKCk6IENvbnRyYWN0LlNpemUge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NoZWV0SW5mb0ltcGwuc2hlZXRTaXplO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGZpbmRQYXJhbWV0ZXJBc3luYyhwYXJhbWV0ZXJOYW1lOiBzdHJpbmcsIHNoZWV0OiBDb250cmFjdC5TaGVldCk6IFByb21pc2U8Q29udHJhY3QuUGFyYW1ldGVyIHwgdW5kZWZpbmVkPiB7XHJcbiAgICBjb25zdCBzZXJ2aWNlID0gQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2U8UGFyYW1ldGVyc1NlcnZpY2U+KFNlcnZpY2VOYW1lcy5QYXJhbWV0ZXJzKTtcclxuICAgIHJldHVybiBzZXJ2aWNlLmZpbmRQYXJhbWV0ZXJCeU5hbWVBc3luYyhwYXJhbWV0ZXJOYW1lLCBzaGVldCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0UGFyYW1ldGVyc0FzeW5jKHNoZWV0OiBDb250cmFjdC5TaGVldCk6IFByb21pc2U8QXJyYXk8Q29udHJhY3QuUGFyYW1ldGVyPj4ge1xyXG4gICAgY29uc3Qgc2VydmljZSA9IEFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5nZXRTZXJ2aWNlPFBhcmFtZXRlcnNTZXJ2aWNlPihTZXJ2aWNlTmFtZXMuUGFyYW1ldGVycyk7XHJcbiAgICByZXR1cm4gc2VydmljZS5nZXRQYXJhbWV0ZXJzRm9yU2hlZXRBc3luYyh0aGlzLnNoZWV0UGF0aCwgc2hlZXQpO1xyXG4gIH1cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuLi9zcmMvSW50ZXJuYWwvU2hlZXRJbXBsLnRzXG4gKiovIiwiaW1wb3J0IHsgU2hlZXRUeXBlLCBTaXplIH0gZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcclxuaW1wb3J0IHsgU2hlZXRQYXRoIH0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcclxuXHJcbmV4cG9ydCBjbGFzcyBTaGVldEluZm9JbXBsIHtcclxuICBwdWJsaWMgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9uYW1lOiBzdHJpbmcsXHJcbiAgICBwcml2YXRlIF9zaGVldFR5cGU6IFNoZWV0VHlwZSxcclxuICAgIHByaXZhdGUgX3NoZWV0U2l6ZTogU2l6ZVxyXG4gICkgeyB9XHJcblxyXG4gIHB1YmxpYyBnZXQgbmFtZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX25hbWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHNoZWV0U2l6ZSgpOiBTaXplIHtcclxuICAgIHJldHVybiB0aGlzLl9zaGVldFNpemU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHNoZWV0VHlwZSgpOiBTaGVldFR5cGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NoZWV0VHlwZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc2hlZXRQYXRoKCk6IFNoZWV0UGF0aCB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBzaGVldE5hbWU6IHRoaXMubmFtZSxcclxuICAgICAgaXNEYXNoYm9hcmQ6IHRoaXMuc2hlZXRUeXBlID09PSBTaGVldFR5cGUuRGFzaGJvYXJkXHJcbiAgICAgIC8vIFRPRE8gLSBTdG9yaWVzXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuLi9zcmMvSW50ZXJuYWwvU2hlZXRJbmZvSW1wbC50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XHJcbmltcG9ydCB7XHJcbiAgRGF0YVNjaGVtYSxcclxuICBEYXRhU291cmNlIGFzIERhdGFTb3VyY2VJbmZvLFxyXG4gIEZpbHRlckV2ZW50LCBOb3RpZmljYXRpb25JZCxcclxuICBWaXN1YWxJZCxcclxuICBXb3Jrc2hlZXREYXRhU291cmNlSW5mb1xyXG59IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XHJcblxyXG5pbXBvcnQge1xyXG4gIEFwaVNlcnZpY2VSZWdpc3RyeSxcclxuICBEYXRhU291cmNlU2VydmljZSxcclxuICBGaWx0ZXJDaGFuZ2VkRXZlbnQsXHJcbiAgRmlsdGVyU2VydmljZSxcclxuICBHZXREYXRhU2VydmljZSxcclxuICBHZXREYXRhVHlwZSxcclxuICBNYXJrc1NlbGVjdGVkRXZlbnQsXHJcbiAgTm90aWZpY2F0aW9uU2VydmljZSxcclxuICBTZWxlY3Rpb25TZXJ2aWNlLFxyXG4gIFNlcnZpY2VOYW1lcyxcclxuICBTaW5nbGVFdmVudE1hbmFnZXIsXHJcbiAgU2luZ2xlRXZlbnRNYW5hZ2VySW1wbFxyXG59IGZyb20gJ0B0YWJsZWF1L2FwaS1zaGFyZWQnO1xyXG5cclxuaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJy4uL0RhdGFTb3VyY2UnO1xyXG5pbXBvcnQgeyBXb3Jrc2hlZXQgfSBmcm9tICcuLi9Xb3Jrc2hlZXQnO1xyXG5cclxuaW1wb3J0IHsgRGF0YVNvdXJjZUltcGwgfSBmcm9tICcuL0RhdGFTb3VyY2VJbXBsJztcclxuaW1wb3J0IHsgU2hlZXRJbXBsIH0gZnJvbSAnLi9TaGVldEltcGwnO1xyXG5pbXBvcnQgeyBTaGVldEluZm9JbXBsIH0gZnJvbSAnLi9TaGVldEluZm9JbXBsJztcclxuXHJcbmNvbnN0IHZpc3VhbElkc0FyZUVxdWFsID0gZnVuY3Rpb24oYTogVmlzdWFsSWQsIGI6IFZpc3VhbElkKTogYm9vbGVhbiB7XHJcbiAgcmV0dXJuIGEgJiYgYiAmJlxyXG4gICAgYS53b3Jrc2hlZXQgPT09IGIud29ya3NoZWV0ICYmXHJcbiAgICBhLmRhc2hib2FyZCA9PT0gYi5kYXNoYm9hcmQgJiZcclxuICAgIGEuc3Rvcnlib2FyZCA9PT0gYi5zdG9yeWJvYXJkICYmXHJcbiAgICBhLnN0b3J5UG9pbnRJRCA9PT0gYi5zdG9yeVBvaW50SUQgJiZcclxuICAgIGEuZmxpcGJvYXJkWm9uZUlEID09PSBiLmZsaXBib2FyZFpvbmVJRDtcclxufTtcclxuXHJcbmV4cG9ydCBjbGFzcyBXb3Jrc2hlZXRJbXBsIGV4dGVuZHMgU2hlZXRJbXBsIHtcclxuICBwdWJsaWMgY29uc3RydWN0b3Ioc2hlZXRJbmZvSW1wbDogU2hlZXRJbmZvSW1wbCxcclxuICAgICAgICAgICAgICAgICAgICAgcHJpdmF0ZSBfdmlzdWFsSWQ6IFZpc3VhbElkLFxyXG4gICAgICAgICAgICAgICAgICAgICBwcml2YXRlIF9wYXJlbnREYXNoYm9hcmQ6IENvbnRyYWN0LkRhc2hib2FyZCkge1xyXG4gICAgc3VwZXIoc2hlZXRJbmZvSW1wbCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHBhcmVudERhc2hib2FyZCgpOiBDb250cmFjdC5EYXNoYm9hcmQge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BhcmVudERhc2hib2FyZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhlbHBlciBtZXRob2Qgd2hpY2ggZ29lcyB0aHJvdWdoIGFuZCByZWdpc3RlcnMgZWFjaCBldmVudCB0eXBlIHRoaXMgaW1wbCBrbm93cyBhYm91dFxyXG4gICAqIHdpdGggdGhlIE5vdGlmaWNhdGlvblNlcnZpY2UuIEl0IHJldHVybnMgYW4gYXJyYXkgb2YgU2luZ2xlRXZlbnRNYW5hZ2VyIG9iamVjdHMgd2hpY2hcclxuICAgKiBjYW4gdGhlbiBiZSBwYXNzZWQgdG8gYW4gRXZlbnRMaXN0ZW5lck1hbmFnZXIgdG8gaGFuZGxlIHVzZXIgcmVnaXN0cmF0aW9uIC8gdW5yZWdpc3RyYXRpb24uXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1dvcmtzaGVldH0gd29ya3NoZWV0IFRoZSB3b3Jrc2hlZXQgb2JqZWN0IHdoaWNoIHdpbGwgYmUgaW5jbHVkZWQgd2l0aCB0aGUgZXZlbnQgbm90aWZpY2F0aW9uc1xyXG4gICAqIEByZXR1cm5zIHtBcnJheTxTaW5nbGVFdmVudE1hbmFnZXI+fSBDb2xsZWN0aW9uIG9mIGV2ZW50IG1hbmFnZXJzIHRvIHBhc3MgdG8gYW4gRXZlbnRMaXN0ZW5lck1hbmFnZXJcclxuICAgKi9cclxuICBwdWJsaWMgaW5pdGlhbGl6ZUV2ZW50cyh3b3Jrc2hlZXQ6IFdvcmtzaGVldCk6IEFycmF5PFNpbmdsZUV2ZW50TWFuYWdlcj4ge1xyXG4gICAgY29uc3QgcmVzdWx0cyA9IG5ldyBBcnJheTxTaW5nbGVFdmVudE1hbmFnZXI+KCk7XHJcbiAgICBsZXQgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZTtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBub3RpZmljYXRpb25TZXJ2aWNlID0gQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2U8Tm90aWZpY2F0aW9uU2VydmljZT4oU2VydmljZU5hbWVzLk5vdGlmaWNhdGlvbik7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgdGhpcyBzZXJ2aWNlIHJlZ2lzdGVyZWQsIGp1c3QgcmV0dXJuXHJcbiAgICAgIHJldHVybiByZXN1bHRzO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEluaXRpYWxpemUgYWxsIG9mIHRoZSBldmVudCBtYW5hZ2VycyB3ZSdsbCBuZWVkIChvbmUgZm9yIGVhY2ggZXZlbnQgdHlwZSlcclxuICAgIGNvbnN0IG1hcmtzRXZlbnQgPSBuZXcgU2luZ2xlRXZlbnRNYW5hZ2VySW1wbDxNYXJrc1NlbGVjdGVkRXZlbnQ+KENvbnRyYWN0LlRhYmxlYXVFdmVudFR5cGUuTWFya1NlbGVjdGlvbkNoYW5nZWQpO1xyXG4gICAgbm90aWZpY2F0aW9uU2VydmljZS5yZWdpc3RlckhhbmRsZXIoTm90aWZpY2F0aW9uSWQuU2VsZWN0ZWRNYXJrc0NoYW5nZWQsIChtb2RlbCkgPT4ge1xyXG4gICAgICBjb25zdCB2aXN1YWxJZCA9IG1vZGVsIGFzIFZpc3VhbElkO1xyXG4gICAgICByZXR1cm4gdmlzdWFsSWRzQXJlRXF1YWwodmlzdWFsSWQsIHRoaXMudmlzdWFsSWQpO1xyXG4gICAgfSwgKHZpejogVmlzdWFsSWQpID0+IHtcclxuICAgICAgbWFya3NFdmVudC50cmlnZ2VyRXZlbnQoKCkgPT4gbmV3IE1hcmtzU2VsZWN0ZWRFdmVudCh3b3Jrc2hlZXQpKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGZpbHRlckV2ZW50ID0gbmV3IFNpbmdsZUV2ZW50TWFuYWdlckltcGw8RmlsdGVyQ2hhbmdlZEV2ZW50PihDb250cmFjdC5UYWJsZWF1RXZlbnRUeXBlLkZpbHRlckNoYW5nZWQpO1xyXG4gICAgbm90aWZpY2F0aW9uU2VydmljZS5yZWdpc3RlckhhbmRsZXIoTm90aWZpY2F0aW9uSWQuRmlsdGVyQ2hhbmdlZCwgKG1vZGVsKSA9PiB7XHJcbiAgICAgIGNvbnN0IGZpbHRlckV2ZW50UmVzcG9uc2UgPSBtb2RlbCBhcyBGaWx0ZXJFdmVudDtcclxuICAgICAgcmV0dXJuIHRoaXMudmlzdWFsSWQud29ya3NoZWV0ID09PSBmaWx0ZXJFdmVudFJlc3BvbnNlLnZpc3VhbElkLndvcmtzaGVldDtcclxuICAgIH0sIChldmVudDogRmlsdGVyRXZlbnQpID0+IHtcclxuICAgICAgZmlsdGVyRXZlbnQudHJpZ2dlckV2ZW50KCgpID0+IG5ldyBGaWx0ZXJDaGFuZ2VkRXZlbnQod29ya3NoZWV0LCBldmVudC5maWVsZE5hbWUpKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJlc3VsdHMucHVzaChtYXJrc0V2ZW50KTtcclxuICAgIHJlc3VsdHMucHVzaChmaWx0ZXJFdmVudCk7XHJcblxyXG4gICAgLy8gVE9ETyAtIG90aGVyIGV2ZW50IHR5cGVzXHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdHM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHZpc3VhbElkKCk6IFZpc3VhbElkIHtcclxuICAgIHJldHVybiB0aGlzLl92aXN1YWxJZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhcHBseUZpbHRlckFzeW5jKFxyXG4gICAgZmllbGROYW1lOiBzdHJpbmcsIHZhbHVlczogQXJyYXk8c3RyaW5nPiwgdXBkYXRlVHlwZTogQ29udHJhY3QuRmlsdGVyVXBkYXRlVHlwZSwgb3B0aW9uczogQ29udHJhY3QuRmlsdGVyT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgIGNvbnN0IHNlcnZpY2UgPSBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZTxGaWx0ZXJTZXJ2aWNlPihTZXJ2aWNlTmFtZXMuRmlsdGVyKTtcclxuICAgICAgcmV0dXJuIHNlcnZpY2UuYXBwbHlGaWx0ZXJBc3luYyh0aGlzLnZpc3VhbElkLCBmaWVsZE5hbWUsIHZhbHVlcywgdXBkYXRlVHlwZSwgb3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gIHB1YmxpYyBhcHBseVJhbmdlRmlsdGVyQXN5bmMoZmllbGROYW1lOiBzdHJpbmcsIGZpbHRlck9wdGlvbnM6IENvbnRyYWN0LlJhbmdlRmlsdGVyT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICBjb25zdCBzZXJ2aWNlID0gQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2U8RmlsdGVyU2VydmljZT4oU2VydmljZU5hbWVzLkZpbHRlcik7XHJcbiAgICByZXR1cm4gc2VydmljZS5hcHBseVJhbmdlRmlsdGVyQXN5bmModGhpcy52aXN1YWxJZCwgZmllbGROYW1lLCBmaWx0ZXJPcHRpb25zKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbGVhckZpbHRlckFzeW5jKGZpZWxkTmFtZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIGNvbnN0IHNlcnZpY2UgPSBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZTxGaWx0ZXJTZXJ2aWNlPihTZXJ2aWNlTmFtZXMuRmlsdGVyKTtcclxuICAgIHJldHVybiBzZXJ2aWNlLmNsZWFyRmlsdGVyQXN5bmModGhpcy52aXN1YWxJZCwgZmllbGROYW1lKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXREYXRhU291cmNlc0FzeW5jKCk6IFByb21pc2U8QXJyYXk8Q29udHJhY3QuRGF0YVNvdXJjZT4+IHtcclxuICAgIGNvbnN0IHNlcnZpY2UgPSBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZTxEYXRhU291cmNlU2VydmljZT4oU2VydmljZU5hbWVzLkRhdGFTb3VyY2VTZXJ2aWNlKTtcclxuXHJcbiAgICByZXR1cm4gc2VydmljZS5nZXREYXRhU291cmNlc0FzeW5jKCkudGhlbjxBcnJheTxDb250cmFjdC5EYXRhU291cmNlPj4ocmVzdWx0ID0+IHtcclxuICAgICAgY29uc3QgZGF0YVNjaGVtYTogRGF0YVNjaGVtYSA9IHJlc3VsdCBhcyBEYXRhU2NoZW1hO1xyXG4gICAgICBjb25zdCB3b3Jrc2hlZXREYXRhU291cmNlSW5mbzogV29ya3NoZWV0RGF0YVNvdXJjZUluZm8gPSBkYXRhU2NoZW1hLndvcmtzaGVldERhdGFTY2hlbWFNYXBbdGhpcy5uYW1lXTtcclxuXHJcbiAgICAgIGxldCBkYXRhU291cmNlczogQXJyYXk8Q29udHJhY3QuRGF0YVNvdXJjZT4gPSBbXTtcclxuXHJcbiAgICAgIC8vIEZpcnN0LCBhZGQgdGhlIHByaW1hcnkgZGF0YXNvdXJjZS4gIEJ5IGNvbnZlbnRpb24sIGl0IGNvbWVzIGZpcnN0IGluIHRoZSByZXR1cm5lZCBhcnJheS5cclxuICAgICAgbGV0IHByaW1hcnlJZDogc3RyaW5nID0gd29ya3NoZWV0RGF0YVNvdXJjZUluZm8ucHJpbWFyeURhdGFTb3VyY2U7XHJcbiAgICAgIGRhdGFTb3VyY2VzLnB1c2godGhpcy5jcmVhdGVEYXRhU291cmNlQnlJZChwcmltYXJ5SWQsIGRhdGFTY2hlbWEuZGF0YVNvdXJjZXNbcHJpbWFyeUlkXSkpO1xyXG5cclxuICAgICAgLy8gVGhlbiwgbG9vcCB0aHJvdWdoIGFueSBzZWNvbmRhcnkgZGF0YSBzb3VyY2VzIGFuZCBhZGQgdGhlbS5cclxuICAgICAgZm9yIChsZXQgc2Vjb25kYXJ5SWQgb2Ygd29ya3NoZWV0RGF0YVNvdXJjZUluZm8ucmVmZXJlbmNlZERhdGFTb3VyY2VMaXN0KSB7XHJcbiAgICAgICAgaWYgKHNlY29uZGFyeUlkICE9PSBwcmltYXJ5SWQpIHtcclxuICAgICAgICAgIGRhdGFTb3VyY2VzLnB1c2godGhpcy5jcmVhdGVEYXRhU291cmNlQnlJZChzZWNvbmRhcnlJZCwgZGF0YVNjaGVtYS5kYXRhU291cmNlc1tzZWNvbmRhcnlJZF0pKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBkYXRhU291cmNlcztcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEZpbHRlcnNBc3luYygpOiBQcm9taXNlPENvbnRyYWN0LkZpbHRlcltdPiB7XHJcbiAgICBjb25zdCBzZXJ2aWNlID0gQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2U8RmlsdGVyU2VydmljZT4oU2VydmljZU5hbWVzLkZpbHRlcik7XHJcbiAgICByZXR1cm4gc2VydmljZS5nZXRGaWx0ZXJzQXN5bmModGhpcy52aXN1YWxJZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0U2VsZWN0ZWRNYXJrc0FzeW5jKCk6IFByb21pc2U8Q29udHJhY3QuTWFya3NDb2xsZWN0aW9uPiB7XHJcbiAgICBjb25zdCBzZXJ2aWNlID0gQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2U8R2V0RGF0YVNlcnZpY2U+KFNlcnZpY2VOYW1lcy5HZXREYXRhKTtcclxuICAgIHJldHVybiBzZXJ2aWNlLmdldFNlbGVjdGVkTWFya3NBc3luYyh0aGlzLnZpc3VhbElkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRIaWdobGlnaHRlZE1hcmtzQXN5bmMoKTogUHJvbWlzZTxDb250cmFjdC5NYXJrc0NvbGxlY3Rpb24+IHtcclxuICAgIGNvbnN0IHNlcnZpY2UgPSBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZTxHZXREYXRhU2VydmljZT4oU2VydmljZU5hbWVzLkdldERhdGEpO1xyXG4gICAgcmV0dXJuIHNlcnZpY2UuZ2V0SGlnaGxpZ2h0ZWRNYXJrc0FzeW5jKHRoaXMudmlzdWFsSWQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFN1bW1hcnlEYXRhQXN5bmMob3B0aW9uczogQ29udHJhY3QuR2V0U3VtbWFyeURhdGFPcHRpb25zKTogUHJvbWlzZTxDb250cmFjdC5EYXRhVGFibGU+IHtcclxuICAgIGNvbnN0IHNlcnZpY2UgPSBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZTxHZXREYXRhU2VydmljZT4oU2VydmljZU5hbWVzLkdldERhdGEpO1xyXG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XHJcblxyXG4gICAgcmV0dXJuIHNlcnZpY2UuZ2V0VW5kZXJseWluZ0RhdGFBc3luYyhcclxuICAgICAgdGhpcy52aXN1YWxJZCwgR2V0RGF0YVR5cGUuU3VtbWFyeSwgISFvcHRpb25zLmlnbm9yZUFsaWFzZXMsICEhb3B0aW9ucy5pZ25vcmVTZWxlY3Rpb24sIHRydWUsIDApO1xyXG4gICAgfVxyXG5cclxuICBwdWJsaWMgZ2V0VW5kZXJseWluZ0RhdGFBc3luYyhvcHRpb25zOiBDb250cmFjdC5HZXRVbmRlcmx5aW5nRGF0YU9wdGlvbnMpOiBQcm9taXNlPENvbnRyYWN0LkRhdGFUYWJsZT4ge1xyXG4gICAgY29uc3Qgc2VydmljZSA9IEFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5nZXRTZXJ2aWNlPEdldERhdGFTZXJ2aWNlPihTZXJ2aWNlTmFtZXMuR2V0RGF0YSk7XHJcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcclxuICAgIHJldHVybiBzZXJ2aWNlLmdldFVuZGVybHlpbmdEYXRhQXN5bmMoXHJcbiAgICAgIHRoaXMudmlzdWFsSWQsXHJcbiAgICAgIEdldERhdGFUeXBlLlVuZGVybHlpbmcsXHJcbiAgICAgICEhb3B0aW9ucy5pZ25vcmVBbGlhc2VzLFxyXG4gICAgICAhIW9wdGlvbnMuaWdub3JlU2VsZWN0aW9uLFxyXG4gICAgICAhIW9wdGlvbnMuaW5jbHVkZUFsbENvbHVtbnMsXHJcbiAgICAgIG9wdGlvbnMubWF4Um93cyB8fCAwKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbGVhclNlbGVjdGVkTWFya3NBc3luYygpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IHNlcnZpY2UgPSBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZTxTZWxlY3Rpb25TZXJ2aWNlPihTZXJ2aWNlTmFtZXMuU2VsZWN0aW9uKTtcclxuICAgIHJldHVybiBzZXJ2aWNlLmNsZWFyU2VsZWN0ZWRNYXJrc0FzeW5jKHRoaXMudmlzdWFsSWQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbGVjdE1hcmtzQnlWYWx1ZUFzeW5jKHNlbGVjdGlvbnM6IEFycmF5PENvbnRyYWN0LlNlbGVjdGlvbkNyaXRlcmlhPixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uVXBkYXRlVHlwZTogQ29udHJhY3QuU2VsZWN0aW9uVXBkYXRlVHlwZSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3Qgc2VydmljZSA9IEFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5nZXRTZXJ2aWNlPFNlbGVjdGlvblNlcnZpY2U+KFNlcnZpY2VOYW1lcy5TZWxlY3Rpb24pO1xyXG4gICAgcmV0dXJuIHNlcnZpY2Uuc2VsZWN0TWFya3NCeVZhbHVlQXN5bmModGhpcy52aXN1YWxJZCwgc2VsZWN0aW9ucywgc2VsZWN0aW9uVXBkYXRlVHlwZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VsZWN0TWFya3NCeUlkQXN5bmMoc2VsZWN0aW9uczogQXJyYXk8Q29udHJhY3QuTWFya0luZm8+LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25VcGRhdGVUeXBlOiBDb250cmFjdC5TZWxlY3Rpb25VcGRhdGVUeXBlKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBzZXJ2aWNlID0gQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2U8U2VsZWN0aW9uU2VydmljZT4oU2VydmljZU5hbWVzLlNlbGVjdGlvbik7XHJcbiAgICByZXR1cm4gc2VydmljZS5zZWxlY3RNYXJrc0J5SWRBc3luYyh0aGlzLnZpc3VhbElkLCBzZWxlY3Rpb25zLCBzZWxlY3Rpb25VcGRhdGVUeXBlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlRGF0YVNvdXJjZUJ5SWQoaWQ6IHN0cmluZywgZGF0YVNvdXJjZUluZm86IERhdGFTb3VyY2VJbmZvKTogQ29udHJhY3QuRGF0YVNvdXJjZSB7XHJcbiAgICBjb25zdCBkYXRhU291cmNlSW1wbCA9IG5ldyBEYXRhU291cmNlSW1wbChkYXRhU291cmNlSW5mbyk7XHJcbiAgICBjb25zdCBkYXRhU291cmNlID0gbmV3IERhdGFTb3VyY2UoZGF0YVNvdXJjZUltcGwpO1xyXG4gICAgcmV0dXJuIGRhdGFTb3VyY2U7XHJcbiAgfVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4uL3NyYy9JbnRlcm5hbC9Xb3Jrc2hlZXRJbXBsLnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcclxuXHJcbmltcG9ydCB7IERhdGFTb3VyY2VJbXBsIH0gZnJvbSAnLi9JbnRlcm5hbC9EYXRhU291cmNlSW1wbCc7XHJcblxyXG5leHBvcnQgY2xhc3MgRGF0YVNvdXJjZSBpbXBsZW1lbnRzIENvbnRyYWN0LkRhdGFTb3VyY2Uge1xyXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIF9kYXRhU291cmNlSW1wbDogRGF0YVNvdXJjZUltcGwpIHsgfVxyXG5cclxuICBwdWJsaWMgZ2V0IG5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlSW1wbC5uYW1lO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBpZCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGFTb3VyY2VJbXBsLmlkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBmaWVsZHMoKTogQ29udHJhY3QuRmllbGRbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0YVNvdXJjZUltcGwuZmllbGRzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjb25uZWN0aW9uU3VtbWFyaWVzKCk6IENvbnRyYWN0LkNvbm5lY3Rpb25TdW1tYXJ5W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGFTb3VyY2VJbXBsLmNvbm5lY3Rpb25TdW1tYXJpZXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGV4dHJhY3RVcGRhdGVUaW1lKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0YVNvdXJjZUltcGwuZXh0cmFjdFVwZGF0ZVRpbWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGlzRXh0cmFjdCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlSW1wbC5pc0V4dHJhY3Q7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVmcmVzaEFzeW5jKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGFTb3VyY2VJbXBsLnJlZnJlc2hBc3luYygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFVuZGVybHlpbmdEYXRhKG9wdGlvbnM/OiBDb250cmFjdC5EYXRhU291cmNlVW5kZXJseWluZ0RhdGFPcHRpb25zKTpcclxuICAgIFByb21pc2U8Q29udHJhY3QuUGFnZWREYXRhPENvbnRyYWN0LkRhdGFUYWJsZT4+IHtcclxuICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlSW1wbC5nZXRVbmRlcmx5aW5nRGF0YSgpO1xyXG4gIH1cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuLi9zcmMvRGF0YVNvdXJjZS50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XHJcbmltcG9ydCAqIGFzIEludGVybmFsQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcclxuaW1wb3J0IHsgQXBpU2VydmljZVJlZ2lzdHJ5LCBEYXRhU291cmNlU2VydmljZSwgU2VydmljZU5hbWVzIH0gZnJvbSAnQHRhYmxlYXUvYXBpLXNoYXJlZCc7XHJcblxyXG5pbXBvcnQgeyBGaWVsZEltcGwgfSBmcm9tICcuL0ZpZWxkSW1wbCc7XHJcblxyXG5pbXBvcnQgeyBGaWVsZCB9IGZyb20gJy4uL0ZpZWxkJztcclxuXHJcbmV4cG9ydCBjbGFzcyBEYXRhU291cmNlSW1wbCB7XHJcbiAgcHJpdmF0ZSBfZmllbGRzOiBGaWVsZFtdO1xyXG5cclxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBfZGF0YVNvdXJjZUluZm86IEludGVybmFsQ29udHJhY3QuRGF0YVNvdXJjZSkge1xyXG4gICAgdGhpcy5fZmllbGRzID0gX2RhdGFTb3VyY2VJbmZvLmZpZWxkcy5tYXAoZmllbGRNb2RlbCA9PiB7XHJcbiAgICAgIGNvbnN0IGZpZWxkSW1wbCA9IG5ldyBGaWVsZEltcGwoZmllbGRNb2RlbCwgdGhpcyk7XHJcbiAgICAgIHJldHVybiBuZXcgRmllbGQoZmllbGRJbXBsKTtcclxuICAgIH0pO1xyXG4gICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgbmFtZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGFTb3VyY2VJbmZvLm5hbWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGlkKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0YVNvdXJjZUluZm8uaWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGV4dHJhY3RVcGRhdGVUaW1lKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0YVNvdXJjZUluZm8uZXh0cmFjdFVwZGF0ZVRpbWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGZpZWxkcygpOiBDb250cmFjdC5GaWVsZFtdIHtcclxuICAgIHJldHVybiB0aGlzLl9maWVsZHM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGlzRXh0cmFjdCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlSW5mby5pc0V4dHJhY3Q7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNvbm5lY3Rpb25TdW1tYXJpZXMoKTogQ29udHJhY3QuQ29ubmVjdGlvblN1bW1hcnlbXSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0RhdGFTb3VyY2UgY29ubmVjdGlvblN1bW1hcmllcyBBUEkgbm90IHlldCBpbXBsZW1lbnRlZC4nKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWZyZXNoQXN5bmMoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBkYXRhU291cmNlU2VydmljZSA9IEFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5nZXRTZXJ2aWNlPERhdGFTb3VyY2VTZXJ2aWNlPihcclxuICAgICAgU2VydmljZU5hbWVzLkRhdGFTb3VyY2VTZXJ2aWNlKTtcclxuXHJcbiAgICByZXR1cm4gZGF0YVNvdXJjZVNlcnZpY2UucmVmcmVzaEFzeW5jKHRoaXMuX2RhdGFTb3VyY2VJbmZvLmlkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRVbmRlcmx5aW5nRGF0YShvcHRpb25zPzogQ29udHJhY3QuRGF0YVNvdXJjZVVuZGVybHlpbmdEYXRhT3B0aW9ucyk6XHJcbiAgICBQcm9taXNlPENvbnRyYWN0LlBhZ2VkRGF0YTxDb250cmFjdC5EYXRhVGFibGU+PiB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0RhdGFTb3VyY2UgZ2V0VW5kZXJseWluZ0RhdGEgQVBJIG5vdCB5ZXQgaW1wbGVtZW50ZWQuJyk7XHJcbiAgfVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4uL3NyYy9JbnRlcm5hbC9EYXRhU291cmNlSW1wbC50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XHJcbmltcG9ydCAqIGFzIEludGVybmFsQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcclxuaW1wb3J0IHsgSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzIH0gZnJvbSAnQHRhYmxlYXUvYXBpLXNoYXJlZCc7XHJcblxyXG5leHBvcnQgY2xhc3MgRmllbGRJbXBsIHtcclxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBfZmllbGRJbmZvOiBJbnRlcm5hbENvbnRyYWN0LkZpZWxkLFxyXG4gICAgICAgICAgICAgICAgICAgICBwcml2YXRlIF9wYXJlbnREYXRhU291cmNlOiBDb250cmFjdC5EYXRhU291cmNlKSB7ICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgbmFtZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkSW5mby5uYW1lO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBpZCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkSW5mby5pZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZGVzY3JpcHRpb24oKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl9maWVsZEluZm8uZGVzY3JpcHRpb247XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGFnZ3JlZ2F0aW9uKCk6IENvbnRyYWN0LkZpZWxkQWdncmVnYXRpb25UeXBlIHtcclxuICAgIHJldHVybiBJbnRlcm5hbFRvRXh0ZXJuYWxFbnVtTWFwcGluZ3MuZmllbGRBZ2dyZWdhdGlvblR5cGUuY29udmVydCh0aGlzLl9maWVsZEluZm8uYWdncmVnYXRpb24pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBkYXRhU291cmNlKCk6IENvbnRyYWN0LkRhdGFTb3VyY2Uge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BhcmVudERhdGFTb3VyY2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHJvbGUoKTogQ29udHJhY3QuRmllbGRSb2xlVHlwZSB7XHJcbiAgICByZXR1cm4gSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzLmZpZWxkUm9sZVR5cGUuY29udmVydCh0aGlzLl9maWVsZEluZm8ucm9sZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGlzSGlkZGVuKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkSW5mby5pc0hpZGRlbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaXNHZW5lcmF0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmllbGRJbmZvLmlzR2VuZXJhdGVkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBpc0NhbGN1bGF0ZWRGaWVsZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9maWVsZEluZm8uaXNDYWxjdWxhdGVkRmllbGQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGlzQ29tYmluZWRGaWVsZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9maWVsZEluZm8uaXNDb21iaW5lZEZpZWxkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldENhbGN1bGF0ZWRGaWVsZEFzeW5jKCk6IFByb21pc2U8Q29udHJhY3QuQ2FsY3VsYXRlZEZpZWxkIHwgdW5kZWZpbmVkPiB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZpZWxkIGdldENhbGN1bGF0ZWRGaWVsZEFzeW5jIG1ldGhvZCBub3QgeWV0IGltcGxlbWVudGVkLicpO1xyXG4gIH1cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuLi9zcmMvSW50ZXJuYWwvRmllbGRJbXBsLnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcclxuXHJcbmltcG9ydCB7IEZpZWxkSW1wbCB9IGZyb20gJy4vSW50ZXJuYWwvRmllbGRJbXBsJztcclxuXHJcbmV4cG9ydCBjbGFzcyBGaWVsZCBpbXBsZW1lbnRzIENvbnRyYWN0LkZpZWxkIHtcclxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBfZmllbGRJbXBsOiBGaWVsZEltcGwpIHsgfVxyXG5cclxuICBwdWJsaWMgZ2V0IG5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9maWVsZEltcGwubmFtZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaWQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9maWVsZEltcGwuaWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGRlc2NyaXB0aW9uKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmllbGRJbXBsLmRlc2NyaXB0aW9uO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBhZ2dyZWdhdGlvbigpOiBDb250cmFjdC5GaWVsZEFnZ3JlZ2F0aW9uVHlwZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmllbGRJbXBsLmFnZ3JlZ2F0aW9uO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBkYXRhU291cmNlKCk6IENvbnRyYWN0LkRhdGFTb3VyY2Uge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkSW1wbC5kYXRhU291cmNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCByb2xlKCk6IENvbnRyYWN0LkZpZWxkUm9sZVR5cGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkSW1wbC5yb2xlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBpc0hpZGRlbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9maWVsZEltcGwuaXNIaWRkZW47XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGlzR2VuZXJhdGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkSW1wbC5pc0dlbmVyYXRlZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaXNDYWxjdWxhdGVkRmllbGQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmllbGRJbXBsLmlzQ2FsY3VsYXRlZEZpZWxkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjb2x1bW5UeXBlKCk6IENvbnRyYWN0LkNvbHVtblR5cGUge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKCdGaWVsZC5jb2x1bW5UeXBlIG5vdCB5ZXQgaW1wbGVtZXRuZWQuJyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGlzQ29tYmluZWRGaWVsZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9maWVsZEltcGwuaXNDb21iaW5lZEZpZWxkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldENhbGN1bGF0ZWRGaWVsZEFzeW5jKCk6IFByb21pc2U8Q29udHJhY3QuQ2FsY3VsYXRlZEZpZWxkIHwgdW5kZWZpbmVkPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmllbGRJbXBsLmdldENhbGN1bGF0ZWRGaWVsZEFzeW5jKCk7XHJcbiAgfVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4uL3NyYy9GaWVsZC50c1xuICoqLyIsImltcG9ydCB7IEFkZEluU2V0dGluZ3NJbmZvIH0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcclxuaW1wb3J0IHsgQXBpU2VydmljZVJlZ2lzdHJ5IH0gZnJvbSAnQHRhYmxlYXUvYXBpLXNoYXJlZCc7XHJcbmltcG9ydCB7IFBhcmFtIH0gZnJvbSAnQHRhYmxlYXUvYXBpLXV0aWxzJztcclxuXHJcbmltcG9ydCB7IEFkZEluU2VydmljZU5hbWVzIH0gZnJvbSAnLi4vU2VydmljZXMvQWRkSW5TZXJ2aWNlTmFtZXMnO1xyXG5pbXBvcnQgeyBTZXR0aW5nc0NvbGxlY3Rpb24sIFNldHRpbmdzU2VydmljZSB9IGZyb20gJy4uL1NlcnZpY2VzL1NldHRpbmdzU2VydmljZSc7XHJcblxyXG5leHBvcnQgY2xhc3MgU2V0dGluZ3NJbXBsIHtcclxuICBwcml2YXRlIF9pc01vZGlmaWVkOiBib29sZWFuO1xyXG4gIHByaXZhdGUgX2N1cnJlbnRTZXR0aW5nczogU2V0dGluZ3NDb2xsZWN0aW9uO1xyXG5cclxuICAvLyBTaW5jZSBwcm9taXNlcyBjYW4ndCBiZSBpbnRyb3NwZWN0ZWQgZm9yIHN0YXRlLCBrZWVwIGEgdmFyaWFibGUgdGhhdFxyXG4gIC8vIGluZGljYXRlcyBhIHNhdmUgaXMgaW4gcHJvZ3Jlc3MsIHNvIHRoYXQgc2V0L2VyYXNlIGNhbid0IGJlIGNhbGxlZCBkdXJpbmcgYSBzYXZlLlxyXG4gIHByaXZhdGUgX3NhdmVJblByb2dyZXNzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihzZXR0aW5nc0luZm86IEFkZEluU2V0dGluZ3NJbmZvKSB7XHJcbiAgICB0aGlzLmluaXRpYWxpemVTZXR0aW5ncyhzZXR0aW5nc0luZm8pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGVyYXNlKGtleTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBQYXJhbS52ZXJpZnlWYWx1ZShrZXksICdrZXknKTtcclxuXHJcbiAgICAvLyBPbmx5IG1ha2UgYSBtb2RpZmljYXRpb24gaWYgd2UgaGF2ZSB0aGUga2V5IGFscmVhZHlcclxuICAgIGlmICh0aGlzLl9jdXJyZW50U2V0dGluZ3Nba2V5XSkge1xyXG4gICAgICB0aGlzLnZlcmlmeVNldHRpbmdzQXJlVW5sb2NrZWQoKTtcclxuXHJcbiAgICAgIGRlbGV0ZSB0aGlzLl9jdXJyZW50U2V0dGluZ3Nba2V5XTtcclxuICAgICAgdGhpcy5faXNNb2RpZmllZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0KGtleTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIFBhcmFtLnZlcmlmeVZhbHVlKGtleSwgJ2tleScpO1xyXG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRTZXR0aW5nc1trZXldO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEFsbCgpOiBTZXR0aW5nc0NvbGxlY3Rpb24ge1xyXG4gICAgLy8gUmV0dXJucyBhIG11dGFibGUgY29weSBvZiB0aGUgc2V0dGluZ3NcclxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLl9jdXJyZW50U2V0dGluZ3MpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBpc01vZGlmaWVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lzTW9kaWZpZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2F2ZUFzeW5jKCk6IFByb21pc2U8U2V0dGluZ3NDb2xsZWN0aW9uPiB7XHJcbiAgICB0aGlzLnZlcmlmeVNldHRpbmdzQXJlVW5sb2NrZWQoKTtcclxuXHJcbiAgICAvLyBKdXN0IHJlc29sdmUgaW1tZWRpYXRlbHkgaWYgc2V0dGluZ3MgYXJlIHVuY2hhbmdlZFxyXG4gICAgaWYgKCF0aGlzLl9pc01vZGlmaWVkKSB7XHJcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmU8U2V0dGluZ3NDb2xsZWN0aW9uPih0aGlzLl9jdXJyZW50U2V0dGluZ3MpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX3NhdmVJblByb2dyZXNzID0gdHJ1ZTtcclxuXHJcbiAgICAvLyBVc2UgdGhlIHNldHRpbmdzIHNlcnZpY2UgdG8gc2F2ZSBzZXR0aW5ncyB0byB0d2JcclxuICAgIGNvbnN0IHNldHRpbmdzU2VydmljZSA9IEFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5nZXRTZXJ2aWNlPFNldHRpbmdzU2VydmljZT4oXHJcbiAgICAgIEFkZEluU2VydmljZU5hbWVzLlNldHRpbmdzU2VydmljZSk7XHJcblxyXG4gICAgcmV0dXJuIHNldHRpbmdzU2VydmljZS5zYXZlU2V0dGluZ3NBc3luYyh0aGlzLl9jdXJyZW50U2V0dGluZ3MpLnRoZW48U2V0dGluZ3NDb2xsZWN0aW9uPihuZXdTZXR0aW5ncyA9PiB7XHJcbiAgICAgIHRoaXMuX3NhdmVJblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuX2lzTW9kaWZpZWQgPSBmYWxzZTtcclxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLl9jdXJyZW50U2V0dGluZ3MsIG5ld1NldHRpbmdzKTtcclxuICAgICAgcmV0dXJuIG5ld1NldHRpbmdzO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0KGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBQYXJhbS52ZXJpZnlWYWx1ZShrZXksICdrZXknKTsgLy8gS2V5IHNob3VsZG4ndCBiZSBhbiBlbXB0eSBzdHJpbmcuXHJcbiAgICBQYXJhbS52ZXJpZnlTdHJpbmcodmFsdWUsICd2YWx1ZScpOyAvLyBFbXB0eSBzdHJpbmcgdmFsdWUgaXMgYWxsb3dlZC5cclxuICAgIHRoaXMudmVyaWZ5U2V0dGluZ3NBcmVVbmxvY2tlZCgpO1xyXG5cclxuICAgIHRoaXMuX2N1cnJlbnRTZXR0aW5nc1trZXldID0gdmFsdWU7XHJcbiAgICB0aGlzLl9pc01vZGlmaWVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVNldHRpbmdzKHNldHRpbmdzSW5mbzogQWRkSW5TZXR0aW5nc0luZm8pOiB2b2lkIHtcclxuICAgIFBhcmFtLnZlcmlmeVZhbHVlKHNldHRpbmdzSW5mbywgJ3NldHRpbmdzSW5mbycpO1xyXG4gICAgUGFyYW0udmVyaWZ5VmFsdWUoc2V0dGluZ3NJbmZvLnNldHRpbmdzVmFsdWVzLCAnc2V0dGluZ3NJbmZvLlNldHRpbmdzVmFsdWVzJyk7XHJcblxyXG4gICAgdGhpcy5fY3VycmVudFNldHRpbmdzID0gc2V0dGluZ3NJbmZvLnNldHRpbmdzVmFsdWVzO1xyXG5cclxuICAgIC8vIFJlc2V0IHRoZSBpc01vZGlmaWVkIGZsYWdcclxuICAgIHRoaXMuX2lzTW9kaWZpZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoaXMgaGVscGVyIHNob3VsZCBiZSBjYWxsZWQgYmVmb3JlIGFueSBsb2NhbCB1cGRhdGUgdG8gdGhpcy5jdXJyZW50U2V0dGluZ3MuXHJcbiAgICogQ2hlY2tzIGlmIGEgY3VycmVudCBzYXZlIGNhbGwgaXMgc3RpbGwgaW4gcHJvZ3Jlc3MgYW5kIHRocm93cyBhbiBlcnJvciBpZiBzby5cclxuICAgKi9cclxuICBwcml2YXRlIHZlcmlmeVNldHRpbmdzQXJlVW5sb2NrZWQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fc2F2ZUluUHJvZ3Jlc3MpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBc3luYyBTYXZlIGlzIGluIHByb2dyZXNzLCB1cGRhdGluZyBzZXR0aW5ncyBpcyBub3QgYWxsb3dlZC4nKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi4vc3JjL0ludGVybmFsL1NldHRpbmdzSW1wbC50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XHJcblxyXG5pbXBvcnQgeyBBZGRJbkltcGwgfSBmcm9tICcuLi9JbnRlcm5hbC9BZGRJbkltcGwnO1xyXG5cclxuLyoqXHJcbiAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBleHRlcm5hbCBBZGRJbiBuYW1lc3BhY2UuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQWRkSW4gaW1wbGVtZW50cyBDb250cmFjdC5BZGRJbiB7XHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgYWRkSW5JbXBsOiBBZGRJbkltcGwpIHtcclxuICAgIHRoaXMuYWRkSW5JbXBsID0gYWRkSW5JbXBsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBkYXNoYm9hcmRDb250ZW50KCk6IENvbnRyYWN0LkRhc2hib2FyZENvbnRlbnQge1xyXG4gICAgcmV0dXJuIHRoaXMuYWRkSW5JbXBsLmRhc2hib2FyZENvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGVudmlyb25tZW50KCk6IENvbnRyYWN0LkVudmlyb25tZW50IHtcclxuICAgIHJldHVybiB0aGlzLmFkZEluSW1wbC5lbnZpcm9ubWVudDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc2V0dGluZ3MoKTogQ29udHJhY3QuU2V0dGluZ3Mge1xyXG4gICAgcmV0dXJuIHRoaXMuYWRkSW5JbXBsLnNldHRpbmdzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCB1aSgpOiBDb250cmFjdC5VSSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0FQSSBjYWxsIG5vdCB5ZXQgaW1wbGVtZW50ZWQnKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbml0aWFsaXplQXN5bmMoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gdGhpcy5hZGRJbkltcGwuaW5pdGlhbGl6ZUFzeW5jKCk7XHJcbiAgfVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4uL3NyYy9OYW1lc3BhY2VzL0FkZEluLnRzXG4gKiovIl0sInNvdXJjZVJvb3QiOiIifQ==
diff --git a/Examples/ReactJs/src/tableau-addin-0.5.0.js b/Examples/ReactJs/src/tableau-addin-0.5.0.js
deleted file mode 100644
index a227f696..00000000
--- a/Examples/ReactJs/src/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/test/actions/.keep b/Examples/ReactJs/test/actions/.keep
deleted file mode 100644
index e69de29b..00000000
diff --git a/Examples/ReactJs/test/components/AddSettingsComponentTest.js b/Examples/ReactJs/test/components/AddSettingsComponentTest.js
deleted file mode 100644
index dbbb40ee..00000000
--- a/Examples/ReactJs/test/components/AddSettingsComponentTest.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/* eslint-env node, mocha */
-/* global expect */
-/* eslint no-console: 0 */
-'use strict';
-
-// Uncomment the following lines to use the react test utilities
-// import TestUtils from 'react-addons-test-utils';
-import createComponent from 'helpers/shallowRenderHelper';
-
-import AddSettingsComponent from 'components//AddSettingsComponent.js';
-
-describe('AddSettingsComponent', () => {
- let component;
-
- beforeEach(() => {
- component = createComponent(AddSettingsComponent);
- });
-
- it('should have its component name as default className', () => {
- expect(component.props.className).to.equal('addsettings-component');
- });
-});
diff --git a/Examples/ReactJs/test/components/EnvironmentDemoComponentTest.js b/Examples/ReactJs/test/components/EnvironmentDemoComponentTest.js
deleted file mode 100644
index d54cd83f..00000000
--- a/Examples/ReactJs/test/components/EnvironmentDemoComponentTest.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/* eslint-env node, mocha */
-/* global expect */
-/* eslint no-console: 0 */
-'use strict';
-
-// Uncomment the following lines to use the react test utilities
-// import TestUtils from 'react-addons-test-utils';
-import createComponent from 'helpers/shallowRenderHelper';
-
-import EnvironmentDemoComponent from 'components//EnvironmentDemoComponent.js';
-
-describe('EnvironmentDemoComponent', () => {
- let component;
-
- beforeEach(() => {
- component = createComponent(EnvironmentDemoComponent);
- });
-
- it('should have its component name as default className', () => {
- expect(component.props.className).to.equal('environmentdemo-component');
- });
-});
diff --git a/Examples/ReactJs/test/components/GetDataTableComponentTest.js b/Examples/ReactJs/test/components/GetDataTableComponentTest.js
deleted file mode 100644
index 05b0bf0f..00000000
--- a/Examples/ReactJs/test/components/GetDataTableComponentTest.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/* eslint-env node, mocha */
-/* global expect */
-/* eslint no-console: 0 */
-'use strict';
-
-// Uncomment the following lines to use the react test utilities
-// import TestUtils from 'react-addons-test-utils';
-import createComponent from 'helpers/shallowRenderHelper';
-
-import GetDataTableComponent from 'components//GetDataTableComponent.js';
-
-describe('GetDataTableComponent', () => {
- let component;
-
- beforeEach(() => {
- component = createComponent(GetDataTableComponent);
- });
-
- it('should have its component name as default className', () => {
- expect(component.props.className).to.equal('getdatatable-component');
- });
-});
diff --git a/Examples/ReactJs/test/components/LoadIndicatorComponentTest.js b/Examples/ReactJs/test/components/LoadIndicatorComponentTest.js
deleted file mode 100644
index 7304346b..00000000
--- a/Examples/ReactJs/test/components/LoadIndicatorComponentTest.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/* eslint-env node, mocha */
-/* global expect */
-/* eslint no-console: 0 */
-'use strict';
-
-// Uncomment the following lines to use the react test utilities
-// import TestUtils from 'react-addons-test-utils';
-import createComponent from 'helpers/shallowRenderHelper';
-
-import LoadIndicatorComponent from 'components//LoadIndicatorComponent.js';
-
-describe('LoadIndicatorComponent', () => {
- let component;
-
- beforeEach(() => {
- component = createComponent(LoadIndicatorComponent);
- });
-
- it('should have its component name as default className', () => {
- expect(component.props.className).to.equal('loadindicator-component');
- });
-});
diff --git a/Examples/ReactJs/test/components/MainTest.js b/Examples/ReactJs/test/components/MainTest.js
deleted file mode 100644
index a82f2afe..00000000
--- a/Examples/ReactJs/test/components/MainTest.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/*eslint-env node, mocha */
-/*global expect */
-/*eslint no-console: 0*/
-'use strict';
-
-// Uncomment the following lines to use the react test utilities
-// import React from 'react/addons';
-// const TestUtils = React.addons.TestUtils;
-import createComponent from 'helpers/shallowRenderHelper';
-
-import Main from 'components/Main';
-
-describe('MainComponent', function () {
-
- beforeEach(function () {
- this.MainComponent = createComponent(Main);
- });
-
- it('should have its component name as default className', function () {
- expect(this.MainComponent.props.className).to.equal('index');
- });
-});
diff --git a/Examples/ReactJs/test/components/ParametersDemoComponentTest.js b/Examples/ReactJs/test/components/ParametersDemoComponentTest.js
deleted file mode 100644
index 9aa11b34..00000000
--- a/Examples/ReactJs/test/components/ParametersDemoComponentTest.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/* eslint-env node, mocha */
-/* global expect */
-/* eslint no-console: 0 */
-'use strict';
-
-// Uncomment the following lines to use the react test utilities
-// import TestUtils from 'react-addons-test-utils';
-import createComponent from 'helpers/shallowRenderHelper';
-
-import ParametersDemoComponent from 'components//ParametersDemoComponent.js';
-
-describe('ParametersDemoComponent', () => {
- let component;
-
- beforeEach(() => {
- component = createComponent(ParametersDemoComponent);
- });
-
- it('should have its component name as default className', () => {
- expect(component.props.className).to.equal('parametersdemo-component');
- });
-});
\ No newline at end of file
diff --git a/Examples/ReactJs/test/components/SelectedMarksDemoComponentTest.js b/Examples/ReactJs/test/components/SelectedMarksDemoComponentTest.js
deleted file mode 100644
index f0917a43..00000000
--- a/Examples/ReactJs/test/components/SelectedMarksDemoComponentTest.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/* eslint-env node, mocha */
-/* global expect */
-/* eslint no-console: 0 */
-'use strict';
-
-// Uncomment the following lines to use the react test utilities
-// import TestUtils from 'react-addons-test-utils';
-import createComponent from 'helpers/shallowRenderHelper';
-
-import SelectedMarksDemoComponent from 'components//SelectedMarksDemoComponent.js';
-
-describe('SelectedMarksDemoComponent', () => {
- let component;
-
- beforeEach(() => {
- component = createComponent(SelectedMarksDemoComponent);
- });
-
- it('should have its component name as default className', () => {
- expect(component.props.className).to.equal('selectedmarksdemo-component');
- });
-});
diff --git a/Examples/ReactJs/test/components/SettingsDemoComponentTest.js b/Examples/ReactJs/test/components/SettingsDemoComponentTest.js
deleted file mode 100644
index 5d588acd..00000000
--- a/Examples/ReactJs/test/components/SettingsDemoComponentTest.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/* eslint-env node, mocha */
-/* global expect */
-/* eslint no-console: 0 */
-'use strict';
-
-// Uncomment the following lines to use the react test utilities
-// import TestUtils from 'react-addons-test-utils';
-import createComponent from 'helpers/shallowRenderHelper';
-
-import SettingsDemoComponent from 'components//SettingsDemoComponent.js';
-
-describe('SettingsDemoComponent', () => {
- let component;
-
- beforeEach(() => {
- component = createComponent(SettingsDemoComponent);
- });
-
- it('should have its component name as default className', () => {
- expect(component.props.className).to.equal('settingsdemo-component');
- });
-});
diff --git a/Examples/ReactJs/test/components/SettingsTableComponentTest.js b/Examples/ReactJs/test/components/SettingsTableComponentTest.js
deleted file mode 100644
index b09b18b6..00000000
--- a/Examples/ReactJs/test/components/SettingsTableComponentTest.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/* eslint-env node, mocha */
-/* global expect */
-/* eslint no-console: 0 */
-'use strict';
-
-// Uncomment the following lines to use the react test utilities
-// import TestUtils from 'react-addons-test-utils';
-import createComponent from 'helpers/shallowRenderHelper';
-
-import SettingsTableComponent from 'components//SettingsTableComponent.js';
-
-describe('SettingsTableComponent', () => {
- let component;
-
- beforeEach(() => {
- component = createComponent(SettingsTableComponent);
- });
-
- it('should have its component name as default className', () => {
- expect(component.props.className).to.equal('settingstable-component');
- });
-});
diff --git a/Examples/ReactJs/test/config/ConfigTest.js b/Examples/ReactJs/test/config/ConfigTest.js
deleted file mode 100644
index 20a11d0e..00000000
--- a/Examples/ReactJs/test/config/ConfigTest.js
+++ /dev/null
@@ -1,12 +0,0 @@
-/*eslint-env node, mocha */
-/*global expect */
-/*eslint no-console: 0*/
-'use strict';
-
-import config from 'config';
-
-describe('appEnvConfigTests', function () {
- it('should load app config file depending on current --env', function () {
- expect(config.appEnv).to.equal('test');
- });
-});
diff --git a/Examples/ReactJs/test/helpers/shallowRenderHelper.js b/Examples/ReactJs/test/helpers/shallowRenderHelper.js
deleted file mode 100644
index e8cc1d40..00000000
--- a/Examples/ReactJs/test/helpers/shallowRenderHelper.js
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * Function to get the shallow output for a given component
- * As we are using phantom.js, we also need to include the fn.proto.bind shim!
- *
- * @see http://simonsmith.io/unit-testing-react-components-without-a-dom/
- * @author somonsmith
- */
-import React from 'react';
-import TestUtils from 'react-addons-test-utils';
-
-/**
- * Get the shallow rendered component
- *
- * @param {Object} component The component to return the output for
- * @param {Object} props [optional] The components properties
- * @param {Mixed} ...children [optional] List of children
- * @return {Object} Shallow rendered output
- */
-export default function createComponent(component, props = {}, ...children) {
- const shallowRenderer = TestUtils.createRenderer();
- shallowRenderer.render(React.createElement(component, props, children.length > 1 ? children : children[0]));
- return shallowRenderer.getRenderOutput();
-}
diff --git a/Examples/ReactJs/test/loadtests.js b/Examples/ReactJs/test/loadtests.js
deleted file mode 100644
index 6e80a969..00000000
--- a/Examples/ReactJs/test/loadtests.js
+++ /dev/null
@@ -1,8 +0,0 @@
-'use strict';
-
-require('babel-polyfill');
-require('core-js/fn/object/assign');
-
-// Add support for all files in the test directory
-const testsContext = require.context('.', true, /(Test\.js$)|(Helper\.js$)/);
-testsContext.keys().forEach(testsContext);
diff --git a/Examples/ReactJs/test/sources/.keep b/Examples/ReactJs/test/sources/.keep
deleted file mode 100644
index e69de29b..00000000
diff --git a/Examples/ReactJs/test/stores/.keep b/Examples/ReactJs/test/stores/.keep
deleted file mode 100644
index e69de29b..00000000
diff --git a/Examples/ReactJs/webpack.config.js b/Examples/ReactJs/webpack.config.js
deleted file mode 100644
index 6b6a9391..00000000
--- a/Examples/ReactJs/webpack.config.js
+++ /dev/null
@@ -1,32 +0,0 @@
-'use strict';
-
-const path = require('path');
-const args = require('minimist')(process.argv.slice(2));
-
-// List of allowed environments
-const allowedEnvs = ['dev', 'dist', 'test'];
-
-// Set the correct environment
-let env;
-if (args._.length > 0 && args._.indexOf('start') !== -1) {
- env = 'test';
-} else if (args.env) {
- env = args.env;
-} else {
- env = 'dev';
-}
-process.env.REACT_WEBPACK_ENV = env;
-
-/**
- * Build the webpack configuration
- * @param {String} wantedEnv The wanted environment
- * @return {Object} Webpack config
- */
-function buildConfig(wantedEnv) {
- let isValid = wantedEnv && wantedEnv.length > 0 && allowedEnvs.indexOf(wantedEnv) !== -1;
- let validEnv = isValid ? wantedEnv : 'dev';
- let config = require(path.join(__dirname, 'cfg/' + validEnv));
- return config;
-}
-
-module.exports = buildConfig(env);
diff --git a/Examples/ReactJs/yarn.lock b/Examples/ReactJs/yarn.lock
deleted file mode 100644
index 7f9e9daa..00000000
--- a/Examples/ReactJs/yarn.lock
+++ /dev/null
@@ -1,5417 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-abbrev@1:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f"
-
-abbrev@1.0.x:
- version "1.0.9"
- resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135"
-
-accepts@1.3.3, accepts@~1.3.3:
- version "1.3.3"
- resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca"
- dependencies:
- mime-types "~2.1.11"
- negotiator "0.6.1"
-
-acorn-jsx@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b"
- dependencies:
- acorn "^3.0.4"
-
-acorn@^3.0.0, acorn@^3.0.4:
- version "3.3.0"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
-
-acorn@^5.0.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.1.tgz#53fe161111f912ab999ee887a90a0bc52822fd75"
-
-after@0.8.2:
- version "0.8.2"
- resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f"
-
-ajv-keywords@^1.0.0:
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c"
-
-ajv@^4.7.0, ajv@^4.9.1:
- version "4.11.8"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536"
- dependencies:
- co "^4.6.0"
- json-stable-stringify "^1.0.1"
-
-align-text@^0.1.1, align-text@^0.1.3:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
- dependencies:
- kind-of "^3.0.2"
- longest "^1.0.1"
- repeat-string "^1.5.2"
-
-alphanum-sort@^1.0.1, alphanum-sort@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
-
-amdefine@>=0.0.4:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
-
-ansi-escapes@^1.1.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e"
-
-ansi-regex@^2.0.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
-
-ansi-regex@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
-
-ansi-styles@^2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
-
-ansi-styles@^3.1.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88"
- dependencies:
- color-convert "^1.9.0"
-
-ansi-styles@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178"
-
-anymatch@^1.3.0:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a"
- dependencies:
- micromatch "^2.1.5"
- normalize-path "^2.0.0"
-
-aproba@^1.0.3:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.2.tgz#45c6629094de4e96f693ef7eab74ae079c240fc1"
-
-are-we-there-yet@~1.1.2:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d"
- dependencies:
- delegates "^1.0.0"
- readable-stream "^2.0.6"
-
-argparse@^1.0.7:
- version "1.0.9"
- resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86"
- dependencies:
- sprintf-js "~1.0.2"
-
-arr-diff@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
- dependencies:
- arr-flatten "^1.0.1"
-
-arr-flatten@^1.0.1:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
-
-array-find-index@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
-
-array-flatten@1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
-
-array-slice@^0.2.3:
- version "0.2.3"
- resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5"
-
-array-union@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
- dependencies:
- array-uniq "^1.0.1"
-
-array-uniq@^1.0.1:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
-
-array-unique@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
-
-array.prototype.find@^2.0.1:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.0.4.tgz#556a5c5362c08648323ddaeb9de9d14bc1864c90"
- dependencies:
- define-properties "^1.1.2"
- es-abstract "^1.7.0"
-
-arraybuffer.slice@0.0.6:
- version "0.0.6"
- resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca"
-
-arrify@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
-
-asap@~2.0.3:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
-
-asn1@~0.2.3:
- version "0.2.3"
- resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86"
-
-assert-plus@1.0.0, assert-plus@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
-
-assert-plus@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234"
-
-assert@^1.1.1:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91"
- dependencies:
- util "0.10.3"
-
-assertion-error@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.2.tgz#13ca515d86206da0bac66e834dd397d87581094c"
-
-async-each@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
-
-async@1.x, async@^1.3.0, async@^1.4.0:
- version "1.5.2"
- resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
-
-async@^0.9.0, async@~0.9.0:
- version "0.9.2"
- resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d"
-
-async@~0.2.6:
- version "0.2.10"
- resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1"
-
-asynckit@^0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
-
-autoprefixer@^6.3.1:
- version "6.7.7"
- resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014"
- dependencies:
- browserslist "^1.7.6"
- caniuse-db "^1.0.30000634"
- normalize-range "^0.1.2"
- num2fraction "^1.2.2"
- postcss "^5.2.16"
- postcss-value-parser "^3.2.3"
-
-aws-sign2@~0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f"
-
-aws4@^1.2.1:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e"
-
-babel-code-frame@^6.16.0, babel-code-frame@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4"
- dependencies:
- chalk "^1.1.0"
- esutils "^2.0.2"
- js-tokens "^3.0.0"
-
-babel-core@^6.0.0, babel-core@^6.1.4, babel-core@^6.24.1:
- version "6.25.0"
- resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.25.0.tgz#7dd42b0463c742e9d5296deb3ec67a9322dad729"
- dependencies:
- babel-code-frame "^6.22.0"
- babel-generator "^6.25.0"
- babel-helpers "^6.24.1"
- babel-messages "^6.23.0"
- babel-register "^6.24.1"
- babel-runtime "^6.22.0"
- babel-template "^6.25.0"
- babel-traverse "^6.25.0"
- babel-types "^6.25.0"
- babylon "^6.17.2"
- convert-source-map "^1.1.0"
- debug "^2.1.1"
- json5 "^0.5.0"
- lodash "^4.2.0"
- minimatch "^3.0.2"
- path-is-absolute "^1.0.0"
- private "^0.1.6"
- slash "^1.0.0"
- source-map "^0.5.0"
-
-babel-eslint@^6.0.0:
- version "6.1.2"
- resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-6.1.2.tgz#5293419fe3672d66598d327da9694567ba6a5f2f"
- dependencies:
- babel-traverse "^6.0.20"
- babel-types "^6.0.19"
- babylon "^6.0.18"
- lodash.assign "^4.0.0"
- lodash.pickby "^4.0.0"
-
-babel-generator@^6.25.0:
- version "6.25.0"
- resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.25.0.tgz#33a1af70d5f2890aeb465a4a7793c1df6a9ea9fc"
- dependencies:
- babel-messages "^6.23.0"
- babel-runtime "^6.22.0"
- babel-types "^6.25.0"
- detect-indent "^4.0.0"
- jsesc "^1.3.0"
- lodash "^4.2.0"
- source-map "^0.5.0"
- trim-right "^1.0.1"
-
-babel-helper-bindify-decorators@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz#14c19e5f142d7b47f19a52431e52b1ccbc40a330"
- dependencies:
- babel-runtime "^6.22.0"
- babel-traverse "^6.24.1"
- babel-types "^6.24.1"
-
-babel-helper-builder-binary-assignment-operator-visitor@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664"
- dependencies:
- babel-helper-explode-assignable-expression "^6.24.1"
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-helper-builder-react-jsx@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.24.1.tgz#0ad7917e33c8d751e646daca4e77cc19377d2cbc"
- dependencies:
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
- esutils "^2.0.0"
-
-babel-helper-call-delegate@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d"
- dependencies:
- babel-helper-hoist-variables "^6.24.1"
- babel-runtime "^6.22.0"
- babel-traverse "^6.24.1"
- babel-types "^6.24.1"
-
-babel-helper-define-map@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.24.1.tgz#7a9747f258d8947d32d515f6aa1c7bd02204a080"
- dependencies:
- babel-helper-function-name "^6.24.1"
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
- lodash "^4.2.0"
-
-babel-helper-explode-assignable-expression@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa"
- dependencies:
- babel-runtime "^6.22.0"
- babel-traverse "^6.24.1"
- babel-types "^6.24.1"
-
-babel-helper-explode-class@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz#7dc2a3910dee007056e1e31d640ced3d54eaa9eb"
- dependencies:
- babel-helper-bindify-decorators "^6.24.1"
- babel-runtime "^6.22.0"
- babel-traverse "^6.24.1"
- babel-types "^6.24.1"
-
-babel-helper-function-name@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9"
- dependencies:
- babel-helper-get-function-arity "^6.24.1"
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
- babel-traverse "^6.24.1"
- babel-types "^6.24.1"
-
-babel-helper-get-function-arity@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d"
- dependencies:
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-helper-hoist-variables@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76"
- dependencies:
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-helper-optimise-call-expression@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257"
- dependencies:
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-helper-regex@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz#d36e22fab1008d79d88648e32116868128456ce8"
- dependencies:
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
- lodash "^4.2.0"
-
-babel-helper-remap-async-to-generator@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b"
- dependencies:
- babel-helper-function-name "^6.24.1"
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
- babel-traverse "^6.24.1"
- babel-types "^6.24.1"
-
-babel-helper-replace-supers@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a"
- dependencies:
- babel-helper-optimise-call-expression "^6.24.1"
- babel-messages "^6.23.0"
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
- babel-traverse "^6.24.1"
- babel-types "^6.24.1"
-
-babel-helpers@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2"
- dependencies:
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
-
-babel-loader@^6.0.0:
- version "6.4.1"
- resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-6.4.1.tgz#0b34112d5b0748a8dcdbf51acf6f9bd42d50b8ca"
- dependencies:
- find-cache-dir "^0.1.1"
- loader-utils "^0.2.16"
- mkdirp "^0.5.1"
- object-assign "^4.0.1"
-
-babel-messages@^6.23.0:
- version "6.23.0"
- resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e"
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-check-es2015-constants@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a"
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-syntax-async-functions@^6.8.0:
- version "6.13.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95"
-
-babel-plugin-syntax-async-generators@^6.5.0:
- version "6.13.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a"
-
-babel-plugin-syntax-class-constructor-call@^6.18.0:
- version "6.18.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz#9cb9d39fe43c8600bec8146456ddcbd4e1a76416"
-
-babel-plugin-syntax-class-properties@^6.8.0:
- version "6.13.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de"
-
-babel-plugin-syntax-decorators@^6.13.0:
- version "6.13.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b"
-
-babel-plugin-syntax-do-expressions@^6.8.0:
- version "6.13.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-syntax-do-expressions/-/babel-plugin-syntax-do-expressions-6.13.0.tgz#5747756139aa26d390d09410b03744ba07e4796d"
-
-babel-plugin-syntax-dynamic-import@^6.18.0:
- version "6.18.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da"
-
-babel-plugin-syntax-exponentiation-operator@^6.8.0:
- version "6.13.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de"
-
-babel-plugin-syntax-export-extensions@^6.8.0:
- version "6.13.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz#70a1484f0f9089a4e84ad44bac353c95b9b12721"
-
-babel-plugin-syntax-flow@^6.18.0:
- version "6.18.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d"
-
-babel-plugin-syntax-function-bind@^6.8.0:
- version "6.13.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.13.0.tgz#48c495f177bdf31a981e732f55adc0bdd2601f46"
-
-babel-plugin-syntax-jsx@^6.3.13, babel-plugin-syntax-jsx@^6.8.0:
- version "6.18.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946"
-
-babel-plugin-syntax-object-rest-spread@^6.8.0:
- version "6.13.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5"
-
-babel-plugin-syntax-trailing-function-commas@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3"
-
-babel-plugin-transform-async-generator-functions@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz#f058900145fd3e9907a6ddf28da59f215258a5db"
- dependencies:
- babel-helper-remap-async-to-generator "^6.24.1"
- babel-plugin-syntax-async-generators "^6.5.0"
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-async-to-generator@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761"
- dependencies:
- babel-helper-remap-async-to-generator "^6.24.1"
- babel-plugin-syntax-async-functions "^6.8.0"
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-class-constructor-call@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz#80dc285505ac067dcb8d6c65e2f6f11ab7765ef9"
- dependencies:
- babel-plugin-syntax-class-constructor-call "^6.18.0"
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
-
-babel-plugin-transform-class-properties@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac"
- dependencies:
- babel-helper-function-name "^6.24.1"
- babel-plugin-syntax-class-properties "^6.8.0"
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
-
-babel-plugin-transform-decorators@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz#788013d8f8c6b5222bdf7b344390dfd77569e24d"
- dependencies:
- babel-helper-explode-class "^6.24.1"
- babel-plugin-syntax-decorators "^6.13.0"
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
- babel-types "^6.24.1"
-
-babel-plugin-transform-do-expressions@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-do-expressions/-/babel-plugin-transform-do-expressions-6.22.0.tgz#28ccaf92812d949c2cd1281f690c8fdc468ae9bb"
- dependencies:
- babel-plugin-syntax-do-expressions "^6.8.0"
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-arrow-functions@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221"
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-block-scoped-functions@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141"
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-block-scoping@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz#76c295dc3a4741b1665adfd3167215dcff32a576"
- dependencies:
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
- babel-traverse "^6.24.1"
- babel-types "^6.24.1"
- lodash "^4.2.0"
-
-babel-plugin-transform-es2015-classes@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db"
- dependencies:
- babel-helper-define-map "^6.24.1"
- babel-helper-function-name "^6.24.1"
- babel-helper-optimise-call-expression "^6.24.1"
- babel-helper-replace-supers "^6.24.1"
- babel-messages "^6.23.0"
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
- babel-traverse "^6.24.1"
- babel-types "^6.24.1"
-
-babel-plugin-transform-es2015-computed-properties@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3"
- dependencies:
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
-
-babel-plugin-transform-es2015-destructuring@^6.22.0:
- version "6.23.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d"
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-duplicate-keys@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e"
- dependencies:
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-plugin-transform-es2015-for-of@^6.22.0:
- version "6.23.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691"
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-function-name@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b"
- dependencies:
- babel-helper-function-name "^6.24.1"
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-plugin-transform-es2015-literals@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e"
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-modules-amd@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154"
- dependencies:
- babel-plugin-transform-es2015-modules-commonjs "^6.24.1"
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
-
-babel-plugin-transform-es2015-modules-commonjs@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz#d3e310b40ef664a36622200097c6d440298f2bfe"
- dependencies:
- babel-plugin-transform-strict-mode "^6.24.1"
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
- babel-types "^6.24.1"
-
-babel-plugin-transform-es2015-modules-systemjs@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23"
- dependencies:
- babel-helper-hoist-variables "^6.24.1"
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
-
-babel-plugin-transform-es2015-modules-umd@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468"
- dependencies:
- babel-plugin-transform-es2015-modules-amd "^6.24.1"
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
-
-babel-plugin-transform-es2015-object-super@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d"
- dependencies:
- babel-helper-replace-supers "^6.24.1"
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-parameters@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b"
- dependencies:
- babel-helper-call-delegate "^6.24.1"
- babel-helper-get-function-arity "^6.24.1"
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
- babel-traverse "^6.24.1"
- babel-types "^6.24.1"
-
-babel-plugin-transform-es2015-shorthand-properties@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0"
- dependencies:
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-plugin-transform-es2015-spread@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1"
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-sticky-regex@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc"
- dependencies:
- babel-helper-regex "^6.24.1"
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-plugin-transform-es2015-template-literals@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d"
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-typeof-symbol@^6.22.0:
- version "6.23.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372"
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-unicode-regex@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9"
- dependencies:
- babel-helper-regex "^6.24.1"
- babel-runtime "^6.22.0"
- regexpu-core "^2.0.0"
-
-babel-plugin-transform-exponentiation-operator@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e"
- dependencies:
- babel-helper-builder-binary-assignment-operator-visitor "^6.24.1"
- babel-plugin-syntax-exponentiation-operator "^6.8.0"
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-export-extensions@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz#53738b47e75e8218589eea946cbbd39109bbe653"
- dependencies:
- babel-plugin-syntax-export-extensions "^6.8.0"
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-flow-strip-types@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf"
- dependencies:
- babel-plugin-syntax-flow "^6.18.0"
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-function-bind@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-function-bind/-/babel-plugin-transform-function-bind-6.22.0.tgz#c6fb8e96ac296a310b8cf8ea401462407ddf6a97"
- dependencies:
- babel-plugin-syntax-function-bind "^6.8.0"
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-object-rest-spread@^6.22.0:
- version "6.23.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.23.0.tgz#875d6bc9be761c58a2ae3feee5dc4895d8c7f921"
- dependencies:
- babel-plugin-syntax-object-rest-spread "^6.8.0"
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-react-display-name@^6.23.0:
- version "6.25.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz#67e2bf1f1e9c93ab08db96792e05392bf2cc28d1"
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-react-jsx-self@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz#df6d80a9da2612a121e6ddd7558bcbecf06e636e"
- dependencies:
- babel-plugin-syntax-jsx "^6.8.0"
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-react-jsx-source@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz#66ac12153f5cd2d17b3c19268f4bf0197f44ecd6"
- dependencies:
- babel-plugin-syntax-jsx "^6.8.0"
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-react-jsx@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz#840a028e7df460dfc3a2d29f0c0d91f6376e66a3"
- dependencies:
- babel-helper-builder-react-jsx "^6.24.1"
- babel-plugin-syntax-jsx "^6.8.0"
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-regenerator@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz#b8da305ad43c3c99b4848e4fe4037b770d23c418"
- dependencies:
- regenerator-transform "0.9.11"
-
-babel-plugin-transform-strict-mode@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758"
- dependencies:
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-polyfill@^6.3.14:
- version "6.23.0"
- resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.23.0.tgz#8364ca62df8eafb830499f699177466c3b03499d"
- dependencies:
- babel-runtime "^6.22.0"
- core-js "^2.4.0"
- regenerator-runtime "^0.10.0"
-
-babel-preset-es2015@^6.0.15:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939"
- dependencies:
- babel-plugin-check-es2015-constants "^6.22.0"
- babel-plugin-transform-es2015-arrow-functions "^6.22.0"
- babel-plugin-transform-es2015-block-scoped-functions "^6.22.0"
- babel-plugin-transform-es2015-block-scoping "^6.24.1"
- babel-plugin-transform-es2015-classes "^6.24.1"
- babel-plugin-transform-es2015-computed-properties "^6.24.1"
- babel-plugin-transform-es2015-destructuring "^6.22.0"
- babel-plugin-transform-es2015-duplicate-keys "^6.24.1"
- babel-plugin-transform-es2015-for-of "^6.22.0"
- babel-plugin-transform-es2015-function-name "^6.24.1"
- babel-plugin-transform-es2015-literals "^6.22.0"
- babel-plugin-transform-es2015-modules-amd "^6.24.1"
- babel-plugin-transform-es2015-modules-commonjs "^6.24.1"
- babel-plugin-transform-es2015-modules-systemjs "^6.24.1"
- babel-plugin-transform-es2015-modules-umd "^6.24.1"
- babel-plugin-transform-es2015-object-super "^6.24.1"
- babel-plugin-transform-es2015-parameters "^6.24.1"
- babel-plugin-transform-es2015-shorthand-properties "^6.24.1"
- babel-plugin-transform-es2015-spread "^6.22.0"
- babel-plugin-transform-es2015-sticky-regex "^6.24.1"
- babel-plugin-transform-es2015-template-literals "^6.22.0"
- babel-plugin-transform-es2015-typeof-symbol "^6.22.0"
- babel-plugin-transform-es2015-unicode-regex "^6.24.1"
- babel-plugin-transform-regenerator "^6.24.1"
-
-babel-preset-flow@^6.23.0:
- version "6.23.0"
- resolved "https://registry.yarnpkg.com/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz#e71218887085ae9a24b5be4169affb599816c49d"
- dependencies:
- babel-plugin-transform-flow-strip-types "^6.22.0"
-
-babel-preset-react@^6.0.15:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-preset-react/-/babel-preset-react-6.24.1.tgz#ba69dfaea45fc3ec639b6a4ecea6e17702c91380"
- dependencies:
- babel-plugin-syntax-jsx "^6.3.13"
- babel-plugin-transform-react-display-name "^6.23.0"
- babel-plugin-transform-react-jsx "^6.24.1"
- babel-plugin-transform-react-jsx-self "^6.22.0"
- babel-plugin-transform-react-jsx-source "^6.22.0"
- babel-preset-flow "^6.23.0"
-
-babel-preset-stage-0@^6.5.0:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-preset-stage-0/-/babel-preset-stage-0-6.24.1.tgz#5642d15042f91384d7e5af8bc88b1db95b039e6a"
- dependencies:
- babel-plugin-transform-do-expressions "^6.22.0"
- babel-plugin-transform-function-bind "^6.22.0"
- babel-preset-stage-1 "^6.24.1"
-
-babel-preset-stage-1@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz#7692cd7dcd6849907e6ae4a0a85589cfb9e2bfb0"
- dependencies:
- babel-plugin-transform-class-constructor-call "^6.24.1"
- babel-plugin-transform-export-extensions "^6.22.0"
- babel-preset-stage-2 "^6.24.1"
-
-babel-preset-stage-2@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz#d9e2960fb3d71187f0e64eec62bc07767219bdc1"
- dependencies:
- babel-plugin-syntax-dynamic-import "^6.18.0"
- babel-plugin-transform-class-properties "^6.24.1"
- babel-plugin-transform-decorators "^6.24.1"
- babel-preset-stage-3 "^6.24.1"
-
-babel-preset-stage-3@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz#836ada0a9e7a7fa37cb138fb9326f87934a48395"
- dependencies:
- babel-plugin-syntax-trailing-function-commas "^6.22.0"
- babel-plugin-transform-async-generator-functions "^6.24.1"
- babel-plugin-transform-async-to-generator "^6.24.1"
- babel-plugin-transform-exponentiation-operator "^6.24.1"
- babel-plugin-transform-object-rest-spread "^6.22.0"
-
-babel-register@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.24.1.tgz#7e10e13a2f71065bdfad5a1787ba45bca6ded75f"
- dependencies:
- babel-core "^6.24.1"
- babel-runtime "^6.22.0"
- core-js "^2.4.0"
- home-or-tmp "^2.0.0"
- lodash "^4.2.0"
- mkdirp "^0.5.1"
- source-map-support "^0.4.2"
-
-babel-runtime@^6.11.6, babel-runtime@^6.18.0, babel-runtime@^6.22.0:
- version "6.25.0"
- resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.25.0.tgz#33b98eaa5d482bb01a8d1aa6b437ad2b01aec41c"
- dependencies:
- core-js "^2.4.0"
- regenerator-runtime "^0.10.0"
-
-babel-template@^6.24.1, babel-template@^6.25.0:
- version "6.25.0"
- resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.25.0.tgz#665241166b7c2aa4c619d71e192969552b10c071"
- dependencies:
- babel-runtime "^6.22.0"
- babel-traverse "^6.25.0"
- babel-types "^6.25.0"
- babylon "^6.17.2"
- lodash "^4.2.0"
-
-babel-traverse@^6.0.20, babel-traverse@^6.24.1, babel-traverse@^6.25.0:
- version "6.25.0"
- resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.25.0.tgz#2257497e2fcd19b89edc13c4c91381f9512496f1"
- dependencies:
- babel-code-frame "^6.22.0"
- babel-messages "^6.23.0"
- babel-runtime "^6.22.0"
- babel-types "^6.25.0"
- babylon "^6.17.2"
- debug "^2.2.0"
- globals "^9.0.0"
- invariant "^2.2.0"
- lodash "^4.2.0"
-
-babel-types@^6.0.19, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.25.0:
- version "6.25.0"
- resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.25.0.tgz#70afb248d5660e5d18f811d91c8303b54134a18e"
- dependencies:
- babel-runtime "^6.22.0"
- esutils "^2.0.2"
- lodash "^4.2.0"
- to-fast-properties "^1.0.1"
-
-babylon@^6.0.18, babylon@^6.17.2:
- version "6.17.4"
- resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.4.tgz#3e8b7402b88d22c3423e137a1577883b15ff869a"
-
-backo2@1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947"
-
-balanced-match@^0.4.2:
- version "0.4.2"
- resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
-
-balanced-match@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
-
-base64-arraybuffer@0.1.5:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8"
-
-base64-js@^1.0.2:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886"
-
-base64id@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6"
-
-batch@0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
-
-bcrypt-pbkdf@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d"
- dependencies:
- tweetnacl "^0.14.3"
-
-better-assert@~1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522"
- dependencies:
- callsite "1.0.0"
-
-big.js@^3.1.3:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978"
-
-binary-extensions@^1.0.0:
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.9.0.tgz#66506c16ce6f4d6928a5b3cd6a33ca41e941e37b"
-
-blob@0.0.4:
- version "0.0.4"
- resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921"
-
-block-stream@*:
- version "0.0.9"
- resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
- dependencies:
- inherits "~2.0.0"
-
-bluebird@^3.3.0:
- version "3.5.0"
- resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c"
-
-body-parser@^1.16.1:
- version "1.17.2"
- resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.17.2.tgz#f8892abc8f9e627d42aedafbca66bf5ab99104ee"
- dependencies:
- bytes "2.4.0"
- content-type "~1.0.2"
- debug "2.6.7"
- depd "~1.1.0"
- http-errors "~1.6.1"
- iconv-lite "0.4.15"
- on-finished "~2.3.0"
- qs "6.4.0"
- raw-body "~2.2.0"
- type-is "~1.6.15"
-
-boom@2.x.x:
- version "2.10.1"
- resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f"
- dependencies:
- hoek "2.x.x"
-
-bower-webpack-plugin@^0.1.9:
- version "0.1.9"
- resolved "https://registry.yarnpkg.com/bower-webpack-plugin/-/bower-webpack-plugin-0.1.9.tgz#17790f551538acde8f94b7018680c145544bb2e1"
- dependencies:
- loader-utils "^0.2.5"
- q "^1.0.1"
-
-brace-expansion@^1.1.7:
- version "1.1.8"
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292"
- dependencies:
- balanced-match "^1.0.0"
- concat-map "0.0.1"
-
-braces@^0.1.2:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6"
- dependencies:
- expand-range "^0.1.0"
-
-braces@^1.8.2:
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7"
- dependencies:
- expand-range "^1.8.1"
- preserve "^0.2.0"
- repeat-element "^1.1.2"
-
-browser-stdout@1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f"
-
-browserify-aes@0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-0.4.0.tgz#067149b668df31c4b58533e02d01e806d8608e2c"
- dependencies:
- inherits "^2.0.1"
-
-browserify-zlib@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d"
- dependencies:
- pako "~0.2.0"
-
-browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6:
- version "1.7.7"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9"
- dependencies:
- caniuse-db "^1.0.30000639"
- electron-to-chromium "^1.2.7"
-
-buffer@^4.9.0:
- version "4.9.1"
- resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298"
- dependencies:
- base64-js "^1.0.2"
- ieee754 "^1.1.4"
- isarray "^1.0.0"
-
-builtin-modules@^1.0.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
-
-builtin-status-codes@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
-
-bytes@2.4.0:
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339"
-
-bytes@2.5.0:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.5.0.tgz#4c9423ea2d252c270c41b2bdefeff9bb6b62c06a"
-
-caller-path@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f"
- dependencies:
- callsites "^0.2.0"
-
-callsite@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20"
-
-callsites@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca"
-
-camelcase-keys@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
- dependencies:
- camelcase "^2.0.0"
- map-obj "^1.0.0"
-
-camelcase@^1.0.2:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
-
-camelcase@^2.0.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
-
-caniuse-api@^1.5.2:
- version "1.6.1"
- resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c"
- dependencies:
- browserslist "^1.3.6"
- caniuse-db "^1.0.30000529"
- lodash.memoize "^4.1.2"
- lodash.uniq "^4.5.0"
-
-caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639:
- version "1.0.30000708"
- resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000708.tgz#c2e736bd3b7fc5f6c14e4c6dfe62b98ed15e8a5b"
-
-caseless@~0.11.0:
- version "0.11.0"
- resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7"
-
-caseless@~0.12.0:
- version "0.12.0"
- resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
-
-center-align@^0.1.1:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad"
- dependencies:
- align-text "^0.1.3"
- lazy-cache "^1.0.3"
-
-chai@^3.2.0:
- version "3.5.0"
- resolved "https://registry.yarnpkg.com/chai/-/chai-3.5.0.tgz#4d02637b067fe958bdbfdd3a40ec56fef7373247"
- dependencies:
- assertion-error "^1.0.1"
- deep-eql "^0.1.3"
- type-detect "^1.0.0"
-
-chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
- dependencies:
- ansi-styles "^2.2.1"
- escape-string-regexp "^1.0.2"
- has-ansi "^2.0.0"
- strip-ansi "^3.0.0"
- supports-color "^2.0.0"
-
-chalk@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.0.1.tgz#dbec49436d2ae15f536114e76d14656cdbc0f44d"
- dependencies:
- ansi-styles "^3.1.0"
- escape-string-regexp "^1.0.5"
- supports-color "^4.0.0"
-
-chalk@~0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f"
- dependencies:
- ansi-styles "~1.0.0"
- has-color "~0.1.0"
- strip-ansi "~0.1.0"
-
-chokidar@^1.0.0, chokidar@^1.4.1:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468"
- dependencies:
- anymatch "^1.3.0"
- async-each "^1.0.0"
- glob-parent "^2.0.0"
- inherits "^2.0.1"
- is-binary-path "^1.0.0"
- is-glob "^2.0.0"
- path-is-absolute "^1.0.0"
- readdirp "^2.0.0"
- optionalDependencies:
- fsevents "^1.0.0"
-
-circular-json@^0.3.1:
- version "0.3.3"
- resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66"
-
-clap@^1.0.9:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.0.tgz#59c90fe3e137104746ff19469a27a634ff68c857"
- dependencies:
- chalk "^1.1.3"
-
-classnames@^2.2.3, classnames@^2.2.4, classnames@^2.2.5:
- version "2.2.5"
- resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.5.tgz#fb3801d453467649ef3603c7d61a02bd129bde6d"
-
-cli-cursor@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987"
- dependencies:
- restore-cursor "^1.0.1"
-
-cli-width@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a"
-
-cliui@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1"
- dependencies:
- center-align "^0.1.1"
- right-align "^0.1.1"
- wordwrap "0.0.2"
-
-clone@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149"
-
-co@^4.6.0:
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
-
-coa@~1.0.1:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd"
- dependencies:
- q "^1.1.2"
-
-code-point-at@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
-
-color-convert@^1.3.0, color-convert@^1.9.0:
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a"
- dependencies:
- color-name "^1.1.1"
-
-color-name@^1.0.0, color-name@^1.1.1:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
-
-color-string@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991"
- dependencies:
- color-name "^1.0.0"
-
-color@^0.11.0:
- version "0.11.4"
- resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764"
- dependencies:
- clone "^1.0.2"
- color-convert "^1.3.0"
- color-string "^0.3.0"
-
-colormin@^1.0.5:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133"
- dependencies:
- color "^0.11.0"
- css-color-names "0.0.4"
- has "^1.0.1"
-
-colors@^1.1.0, colors@~1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63"
-
-combine-lists@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/combine-lists/-/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6"
- dependencies:
- lodash "^4.5.0"
-
-combined-stream@^1.0.5, combined-stream@~1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009"
- dependencies:
- delayed-stream "~1.0.0"
-
-commander@2.9.0:
- version "2.9.0"
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
- dependencies:
- graceful-readlink ">= 1.0.0"
-
-commander@^2.9.0:
- version "2.11.0"
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563"
-
-commondir@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
-
-component-bind@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1"
-
-component-emitter@1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3"
-
-component-emitter@1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
-
-component-inherit@0.0.3:
- version "0.0.3"
- resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143"
-
-compressible@~2.0.10:
- version "2.0.11"
- resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.11.tgz#16718a75de283ed8e604041625a2064586797d8a"
- dependencies:
- mime-db ">= 1.29.0 < 2"
-
-compression@^1.5.2:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.0.tgz#030c9f198f1643a057d776a738e922da4373012d"
- dependencies:
- accepts "~1.3.3"
- bytes "2.5.0"
- compressible "~2.0.10"
- debug "2.6.8"
- on-headers "~1.0.1"
- safe-buffer "5.1.1"
- vary "~1.1.1"
-
-concat-map@0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
-
-concat-stream@1.5.0:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.0.tgz#53f7d43c51c5e43f81c8fdd03321c631be68d611"
- dependencies:
- inherits "~2.0.1"
- readable-stream "~2.0.0"
- typedarray "~0.0.5"
-
-concat-stream@^1.5.2:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7"
- dependencies:
- inherits "^2.0.3"
- readable-stream "^2.2.2"
- typedarray "^0.0.6"
-
-connect-history-api-fallback@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.3.0.tgz#e51d17f8f0ef0db90a64fdb47de3051556e9f169"
-
-connect@^3.6.0:
- version "3.6.2"
- resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.2.tgz#694e8d20681bfe490282c8ab886be98f09f42fe7"
- dependencies:
- debug "2.6.7"
- finalhandler "1.0.3"
- parseurl "~1.3.1"
- utils-merge "1.0.0"
-
-console-browserify@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
- dependencies:
- date-now "^0.1.4"
-
-console-control-strings@^1.0.0, console-control-strings@~1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
-
-constants-browserify@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
-
-content-disposition@0.5.2:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4"
-
-content-type@~1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed"
-
-convert-source-map@^1.1.0:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5"
-
-cookie-signature@1.0.6:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
-
-cookie@0.3.1:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
-
-copyfiles@^1.0.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/copyfiles/-/copyfiles-1.2.0.tgz#a8da3ac41aa2220ae29bd3c58b6984294f2c593c"
- dependencies:
- glob "^7.0.5"
- ltcdr "^2.2.1"
- minimatch "^3.0.3"
- mkdirp "^0.5.1"
- noms "0.0.0"
- through2 "^2.0.1"
-
-core-js@^1.0.0:
- version "1.2.7"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
-
-core-js@^2.2.0, core-js@^2.4.0, core-js@^2.4.1:
- version "2.4.1"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e"
-
-core-util-is@~1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
-
-create-react-class@^15.5.2, create-react-class@^15.6.0:
- version "15.6.0"
- resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.0.tgz#ab448497c26566e1e29413e883207d57cfe7bed4"
- dependencies:
- fbjs "^0.8.9"
- loose-envify "^1.3.1"
- object-assign "^4.1.1"
-
-cryptiles@2.x.x:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8"
- dependencies:
- boom "2.x.x"
-
-crypto-browserify@3.3.0:
- version "3.3.0"
- resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.3.0.tgz#b9fc75bb4a0ed61dcf1cd5dae96eb30c9c3e506c"
- dependencies:
- browserify-aes "0.4.0"
- pbkdf2-compat "2.0.1"
- ripemd160 "0.2.0"
- sha.js "2.2.6"
-
-css-color-names@0.0.4:
- version "0.0.4"
- resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
-
-css-loader@^0.23.0:
- version "0.23.1"
- resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.23.1.tgz#9fa23f2b5c0965235910ad5ecef3b8a36390fe50"
- dependencies:
- css-selector-tokenizer "^0.5.1"
- cssnano ">=2.6.1 <4"
- loader-utils "~0.2.2"
- lodash.camelcase "^3.0.1"
- object-assign "^4.0.1"
- postcss "^5.0.6"
- postcss-modules-extract-imports "^1.0.0"
- postcss-modules-local-by-default "^1.0.1"
- postcss-modules-scope "^1.0.0"
- postcss-modules-values "^1.1.0"
- source-list-map "^0.1.4"
-
-css-selector-tokenizer@^0.5.1:
- version "0.5.4"
- resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.5.4.tgz#139bafd34a35fd0c1428487049e0699e6f6a2c21"
- dependencies:
- cssesc "^0.1.0"
- fastparse "^1.1.1"
-
-css-selector-tokenizer@^0.7.0:
- version "0.7.0"
- resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86"
- dependencies:
- cssesc "^0.1.0"
- fastparse "^1.1.1"
- regexpu-core "^1.0.0"
-
-cssesc@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4"
-
-"cssnano@>=2.6.1 <4":
- version "3.10.0"
- resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38"
- dependencies:
- autoprefixer "^6.3.1"
- decamelize "^1.1.2"
- defined "^1.0.0"
- has "^1.0.1"
- object-assign "^4.0.1"
- postcss "^5.0.14"
- postcss-calc "^5.2.0"
- postcss-colormin "^2.1.8"
- postcss-convert-values "^2.3.4"
- postcss-discard-comments "^2.0.4"
- postcss-discard-duplicates "^2.0.1"
- postcss-discard-empty "^2.0.1"
- postcss-discard-overridden "^0.1.1"
- postcss-discard-unused "^2.2.1"
- postcss-filter-plugins "^2.0.0"
- postcss-merge-idents "^2.1.5"
- postcss-merge-longhand "^2.0.1"
- postcss-merge-rules "^2.0.3"
- postcss-minify-font-values "^1.0.2"
- postcss-minify-gradients "^1.0.1"
- postcss-minify-params "^1.0.4"
- postcss-minify-selectors "^2.0.4"
- postcss-normalize-charset "^1.1.0"
- postcss-normalize-url "^3.0.7"
- postcss-ordered-values "^2.1.0"
- postcss-reduce-idents "^2.2.2"
- postcss-reduce-initial "^1.0.0"
- postcss-reduce-transforms "^1.0.3"
- postcss-svgo "^2.1.1"
- postcss-unique-selectors "^2.0.2"
- postcss-value-parser "^3.2.3"
- postcss-zindex "^2.0.1"
-
-csso@~2.3.1:
- version "2.3.2"
- resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85"
- dependencies:
- clap "^1.0.9"
- source-map "^0.5.3"
-
-currently-unhandled@^0.4.1:
- version "0.4.1"
- resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
- dependencies:
- array-find-index "^1.0.1"
-
-custom-event@~1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425"
-
-d@1:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f"
- dependencies:
- es5-ext "^0.10.9"
-
-dashdash@^1.12.0:
- version "1.14.1"
- resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
- dependencies:
- assert-plus "^1.0.0"
-
-date-now@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
-
-dateformat@^1.0.6:
- version "1.0.12"
- resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9"
- dependencies:
- get-stdin "^4.0.1"
- meow "^3.3.0"
-
-debug@0.7.4:
- version "0.7.4"
- resolved "https://registry.yarnpkg.com/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39"
-
-debug@2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da"
- dependencies:
- ms "0.7.1"
-
-debug@2.3.3:
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c"
- dependencies:
- ms "0.7.2"
-
-debug@2.6.0:
- version "2.6.0"
- resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.0.tgz#bc596bcabe7617f11d9fa15361eded5608b8499b"
- dependencies:
- ms "0.7.2"
-
-debug@2.6.7:
- version "2.6.7"
- resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.7.tgz#92bad1f6d05bbb6bba22cca88bcd0ec894c2861e"
- dependencies:
- ms "2.0.0"
-
-debug@2.6.8, debug@^2.1.1, debug@^2.2.0, debug@^2.6.6:
- version "2.6.8"
- resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc"
- dependencies:
- ms "2.0.0"
-
-decamelize@^1.0.0, decamelize@^1.1.2:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
-
-deep-eql@^0.1.3:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-0.1.3.tgz#ef558acab8de25206cd713906d74e56930eb69f2"
- dependencies:
- type-detect "0.1.1"
-
-deep-extend@~0.4.0:
- version "0.4.2"
- resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f"
-
-deep-is@~0.1.3:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
-
-define-properties@^1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94"
- dependencies:
- foreach "^2.0.5"
- object-keys "^1.0.8"
-
-defined@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
-
-del@^2.0.2:
- version "2.2.2"
- resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8"
- dependencies:
- globby "^5.0.0"
- is-path-cwd "^1.0.0"
- is-path-in-cwd "^1.0.0"
- object-assign "^4.0.1"
- pify "^2.0.0"
- pinkie-promise "^2.0.0"
- rimraf "^2.2.8"
-
-delayed-stream@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
-
-delegates@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
-
-depd@1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3"
-
-depd@~1.1.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359"
-
-destroy@~1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
-
-detect-indent@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208"
- dependencies:
- repeating "^2.0.0"
-
-di@^0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c"
-
-diff@3.2.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9"
-
-doctrine@^1.2.2:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa"
- dependencies:
- esutils "^2.0.2"
- isarray "^1.0.0"
-
-doctrine@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63"
- dependencies:
- esutils "^2.0.2"
- isarray "^1.0.0"
-
-"dom-helpers@^2.4.0 || ^3.0.0", dom-helpers@^3.2.0:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.2.1.tgz#3203e07fed217bd1f424b019735582fc37b2825a"
-
-dom-serialize@^2.2.0:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b"
- dependencies:
- custom-event "~1.0.0"
- ent "~2.2.0"
- extend "^3.0.0"
- void-elements "^2.0.0"
-
-dom-walk@^0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018"
-
-domain-browser@^1.1.1:
- version "1.1.7"
- resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc"
-
-ecc-jsbn@~0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
- dependencies:
- jsbn "~0.1.0"
-
-ee-first@1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
-
-electron-to-chromium@^1.2.7:
- version "1.3.16"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.16.tgz#d0e026735754770901ae301a21664cba45d92f7d"
-
-emojis-list@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
-
-encodeurl@~1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20"
-
-encoding@^0.1.11:
- version "0.1.12"
- resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb"
- dependencies:
- iconv-lite "~0.4.13"
-
-engine.io-client@1.8.3:
- version "1.8.3"
- resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.8.3.tgz#1798ed93451246453d4c6f635d7a201fe940d5ab"
- dependencies:
- component-emitter "1.2.1"
- component-inherit "0.0.3"
- debug "2.3.3"
- engine.io-parser "1.3.2"
- has-cors "1.1.0"
- indexof "0.0.1"
- parsejson "0.0.3"
- parseqs "0.0.5"
- parseuri "0.0.5"
- ws "1.1.2"
- xmlhttprequest-ssl "1.5.3"
- yeast "0.1.2"
-
-engine.io-parser@1.3.2:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-1.3.2.tgz#937b079f0007d0893ec56d46cb220b8cb435220a"
- dependencies:
- after "0.8.2"
- arraybuffer.slice "0.0.6"
- base64-arraybuffer "0.1.5"
- blob "0.0.4"
- has-binary "0.1.7"
- wtf-8 "1.0.0"
-
-engine.io@1.8.3:
- version "1.8.3"
- resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.8.3.tgz#8de7f97895d20d39b85f88eeee777b2bd42b13d4"
- dependencies:
- accepts "1.3.3"
- base64id "1.0.0"
- cookie "0.3.1"
- debug "2.3.3"
- engine.io-parser "1.3.2"
- ws "1.1.2"
-
-enhanced-resolve@~0.9.0:
- version "0.9.1"
- resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz#4d6e689b3725f86090927ccc86cd9f1635b89e2e"
- dependencies:
- graceful-fs "^4.1.2"
- memory-fs "^0.2.0"
- tapable "^0.1.8"
-
-ent@~2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d"
-
-errno@^0.1.3:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d"
- dependencies:
- prr "~0.0.0"
-
-error-ex@^1.2.0:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc"
- dependencies:
- is-arrayish "^0.2.1"
-
-es-abstract@^1.7.0:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.7.0.tgz#dfade774e01bfcd97f96180298c449c8623fb94c"
- dependencies:
- es-to-primitive "^1.1.1"
- function-bind "^1.1.0"
- is-callable "^1.1.3"
- is-regex "^1.0.3"
-
-es-to-primitive@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d"
- dependencies:
- is-callable "^1.1.1"
- is-date-object "^1.0.1"
- is-symbol "^1.0.1"
-
-es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14:
- version "0.10.24"
- resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.24.tgz#a55877c9924bc0c8d9bd3c2cbe17495ac1709b14"
- dependencies:
- es6-iterator "2"
- es6-symbol "~3.1"
-
-es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.1.tgz#8e319c9f0453bf575d374940a655920e59ca5512"
- dependencies:
- d "1"
- es5-ext "^0.10.14"
- es6-symbol "^3.1"
-
-es6-map@^0.1.3:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0"
- dependencies:
- d "1"
- es5-ext "~0.10.14"
- es6-iterator "~2.0.1"
- es6-set "~0.1.5"
- es6-symbol "~3.1.1"
- event-emitter "~0.3.5"
-
-es6-promise@~4.0.3:
- version "4.0.5"
- resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.0.5.tgz#7882f30adde5b240ccfa7f7d78c548330951ae42"
-
-es6-set@~0.1.5:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1"
- dependencies:
- d "1"
- es5-ext "~0.10.14"
- es6-iterator "~2.0.1"
- es6-symbol "3.1.1"
- event-emitter "~0.3.5"
-
-es6-symbol@3.1.1, es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1, es6-symbol@~3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77"
- dependencies:
- d "1"
- es5-ext "~0.10.14"
-
-es6-weak-map@^2.0.1:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f"
- dependencies:
- d "1"
- es5-ext "^0.10.14"
- es6-iterator "^2.0.1"
- es6-symbol "^3.1.1"
-
-escape-html@~1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
-
-escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
-
-escodegen@1.8.x, escodegen@^1.6.1:
- version "1.8.1"
- resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018"
- dependencies:
- esprima "^2.7.1"
- estraverse "^1.9.1"
- esutils "^2.0.2"
- optionator "^0.8.1"
- optionalDependencies:
- source-map "~0.2.0"
-
-escope@^3.6.0:
- version "3.6.0"
- resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3"
- dependencies:
- es6-map "^0.1.3"
- es6-weak-map "^2.0.1"
- esrecurse "^4.1.0"
- estraverse "^4.1.1"
-
-eslint-loader@^1.0.0:
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-1.9.0.tgz#7e1be9feddca328d3dcfaef1ad49d5beffe83a13"
- dependencies:
- loader-fs-cache "^1.0.0"
- loader-utils "^1.0.2"
- object-assign "^4.0.1"
- object-hash "^1.1.4"
- rimraf "^2.6.1"
-
-eslint-plugin-react@^6.0.0:
- version "6.10.3"
- resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz#c5435beb06774e12c7db2f6abaddcbf900cd3f78"
- dependencies:
- array.prototype.find "^2.0.1"
- doctrine "^1.2.2"
- has "^1.0.1"
- jsx-ast-utils "^1.3.4"
- object.assign "^4.0.4"
-
-eslint@^3.0.0:
- version "3.19.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.19.0.tgz#c8fc6201c7f40dd08941b87c085767386a679acc"
- dependencies:
- babel-code-frame "^6.16.0"
- chalk "^1.1.3"
- concat-stream "^1.5.2"
- debug "^2.1.1"
- doctrine "^2.0.0"
- escope "^3.6.0"
- espree "^3.4.0"
- esquery "^1.0.0"
- estraverse "^4.2.0"
- esutils "^2.0.2"
- file-entry-cache "^2.0.0"
- glob "^7.0.3"
- globals "^9.14.0"
- ignore "^3.2.0"
- imurmurhash "^0.1.4"
- inquirer "^0.12.0"
- is-my-json-valid "^2.10.0"
- is-resolvable "^1.0.0"
- js-yaml "^3.5.1"
- json-stable-stringify "^1.0.0"
- levn "^0.3.0"
- lodash "^4.0.0"
- mkdirp "^0.5.0"
- natural-compare "^1.4.0"
- optionator "^0.8.2"
- path-is-inside "^1.0.1"
- pluralize "^1.2.1"
- progress "^1.1.8"
- require-uncached "^1.0.2"
- shelljs "^0.7.5"
- strip-bom "^3.0.0"
- strip-json-comments "~2.0.1"
- table "^3.7.8"
- text-table "~0.2.0"
- user-home "^2.0.0"
-
-espree@^3.4.0:
- version "3.4.3"
- resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.3.tgz#2910b5ccd49ce893c2ffffaab4fd8b3a31b82374"
- dependencies:
- acorn "^5.0.1"
- acorn-jsx "^3.0.0"
-
-esprima@2.7.x, esprima@^2.1.0, esprima@^2.6.0, esprima@^2.7.1:
- version "2.7.3"
- resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
-
-esprima@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804"
-
-esquery@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa"
- dependencies:
- estraverse "^4.0.0"
-
-esrecurse@^4.1.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.0.tgz#fa9568d98d3823f9a41d91e902dcab9ea6e5b163"
- dependencies:
- estraverse "^4.1.0"
- object-assign "^4.0.1"
-
-estraverse@^1.9.1:
- version "1.9.3"
- resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44"
-
-estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
-
-esutils@^2.0.0, esutils@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
-
-etag@~1.8.0:
- version "1.8.0"
- resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051"
-
-event-emitter@~0.3.5:
- version "0.3.5"
- resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39"
- dependencies:
- d "1"
- es5-ext "~0.10.14"
-
-eventemitter3@1.x.x:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508"
-
-events@^1.0.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
-
-eventsource@0.1.6:
- version "0.1.6"
- resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232"
- dependencies:
- original ">=0.0.5"
-
-exit-hook@^1.0.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8"
-
-expand-braces@^0.1.1:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea"
- dependencies:
- array-slice "^0.2.3"
- array-unique "^0.2.1"
- braces "^0.1.2"
-
-expand-brackets@^0.1.4:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
- dependencies:
- is-posix-bracket "^0.1.0"
-
-expand-range@^0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044"
- dependencies:
- is-number "^0.1.1"
- repeat-string "^0.2.2"
-
-expand-range@^1.8.1:
- version "1.8.2"
- resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
- dependencies:
- fill-range "^2.1.0"
-
-express@^4.13.3:
- version "4.15.3"
- resolved "https://registry.yarnpkg.com/express/-/express-4.15.3.tgz#bab65d0f03aa80c358408972fc700f916944b662"
- dependencies:
- accepts "~1.3.3"
- array-flatten "1.1.1"
- content-disposition "0.5.2"
- content-type "~1.0.2"
- cookie "0.3.1"
- cookie-signature "1.0.6"
- debug "2.6.7"
- depd "~1.1.0"
- encodeurl "~1.0.1"
- escape-html "~1.0.3"
- etag "~1.8.0"
- finalhandler "~1.0.3"
- fresh "0.5.0"
- merge-descriptors "1.0.1"
- methods "~1.1.2"
- on-finished "~2.3.0"
- parseurl "~1.3.1"
- path-to-regexp "0.1.7"
- proxy-addr "~1.1.4"
- qs "6.4.0"
- range-parser "~1.2.0"
- send "0.15.3"
- serve-static "1.12.3"
- setprototypeof "1.0.3"
- statuses "~1.3.1"
- type-is "~1.6.15"
- utils-merge "1.0.0"
- vary "~1.1.1"
-
-extend@^3.0.0, extend@~3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
-
-extglob@^0.3.1:
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
- dependencies:
- is-extglob "^1.0.0"
-
-extract-zip@~1.5.0:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.5.0.tgz#92ccf6d81ef70a9fa4c1747114ccef6d8688a6c4"
- dependencies:
- concat-stream "1.5.0"
- debug "0.7.4"
- mkdirp "0.5.0"
- yauzl "2.4.1"
-
-extsprintf@1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550"
-
-fast-levenshtein@~2.0.4:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
-
-fastparse@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8"
-
-faye-websocket@^0.10.0:
- version "0.10.0"
- resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4"
- dependencies:
- websocket-driver ">=0.5.1"
-
-faye-websocket@~0.11.0:
- version "0.11.1"
- resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38"
- dependencies:
- websocket-driver ">=0.5.1"
-
-fbjs@^0.8.12, fbjs@^0.8.9:
- version "0.8.14"
- resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.14.tgz#d1dbe2be254c35a91e09f31f9cd50a40b2a0ed1c"
- dependencies:
- core-js "^1.0.0"
- isomorphic-fetch "^2.1.1"
- loose-envify "^1.0.0"
- object-assign "^4.1.0"
- promise "^7.1.1"
- setimmediate "^1.0.5"
- ua-parser-js "^0.7.9"
-
-fd-slicer@~1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65"
- dependencies:
- pend "~1.2.0"
-
-figures@^1.3.5:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e"
- dependencies:
- escape-string-regexp "^1.0.5"
- object-assign "^4.1.0"
-
-file-entry-cache@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361"
- dependencies:
- flat-cache "^1.2.1"
- object-assign "^4.0.1"
-
-file-loader@^0.9.0:
- version "0.9.0"
- resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-0.9.0.tgz#1d2daddd424ce6d1b07cfe3f79731bed3617ab42"
- dependencies:
- loader-utils "~0.2.5"
-
-filename-regex@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
-
-fill-range@^2.1.0:
- version "2.2.3"
- resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723"
- dependencies:
- is-number "^2.1.0"
- isobject "^2.0.0"
- randomatic "^1.1.3"
- repeat-element "^1.1.2"
- repeat-string "^1.5.2"
-
-finalhandler@1.0.3, finalhandler@~1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.3.tgz#ef47e77950e999780e86022a560e3217e0d0cc89"
- dependencies:
- debug "2.6.7"
- encodeurl "~1.0.1"
- escape-html "~1.0.3"
- on-finished "~2.3.0"
- parseurl "~1.3.1"
- statuses "~1.3.1"
- unpipe "~1.0.0"
-
-find-cache-dir@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9"
- dependencies:
- commondir "^1.0.1"
- mkdirp "^0.5.1"
- pkg-dir "^1.0.0"
-
-find-up@^1.0.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
- dependencies:
- path-exists "^2.0.0"
- pinkie-promise "^2.0.0"
-
-flat-cache@^1.2.1:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96"
- dependencies:
- circular-json "^0.3.1"
- del "^2.0.2"
- graceful-fs "^4.1.2"
- write "^0.2.1"
-
-flatten@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782"
-
-for-in@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
-
-for-own@^0.1.4:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce"
- dependencies:
- for-in "^1.0.1"
-
-foreach@^2.0.5:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
-
-forever-agent@~0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
-
-form-data@~2.1.1:
- version "2.1.4"
- resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1"
- dependencies:
- asynckit "^0.4.0"
- combined-stream "^1.0.5"
- mime-types "^2.1.12"
-
-forwarded@~0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363"
-
-fresh@0.5.0:
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e"
-
-fs-extra@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950"
- dependencies:
- graceful-fs "^4.1.2"
- jsonfile "^2.1.0"
- klaw "^1.0.0"
-
-fs.realpath@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
-
-fs@0.0.1-security:
- version "0.0.1-security"
- resolved "https://registry.yarnpkg.com/fs/-/fs-0.0.1-security.tgz#8a7bd37186b6dddf3813f23858b57ecaaf5e41d4"
-
-fsevents@^1.0.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.2.tgz#3282b713fb3ad80ede0e9fcf4611b5aa6fc033f4"
- dependencies:
- nan "^2.3.0"
- node-pre-gyp "^0.6.36"
-
-fstream-ignore@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105"
- dependencies:
- fstream "^1.0.0"
- inherits "2"
- minimatch "^3.0.0"
-
-fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2:
- version "1.0.11"
- resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171"
- dependencies:
- graceful-fs "^4.1.2"
- inherits "~2.0.0"
- mkdirp ">=0.5 0"
- rimraf "2"
-
-function-bind@^1.0.2, function-bind@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771"
-
-gauge@~2.7.3:
- version "2.7.4"
- resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
- dependencies:
- aproba "^1.0.3"
- console-control-strings "^1.0.0"
- has-unicode "^2.0.0"
- object-assign "^4.1.0"
- signal-exit "^3.0.0"
- string-width "^1.0.1"
- strip-ansi "^3.0.1"
- wide-align "^1.1.0"
-
-generate-function@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74"
-
-generate-object-property@^1.1.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0"
- dependencies:
- is-property "^1.0.0"
-
-get-stdin@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
-
-getpass@^0.1.1:
- version "0.1.7"
- resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
- dependencies:
- assert-plus "^1.0.0"
-
-glob-base@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
- dependencies:
- glob-parent "^2.0.0"
- is-glob "^2.0.0"
-
-glob-parent@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28"
- dependencies:
- is-glob "^2.0.0"
-
-glob@7.1.1:
- version "7.1.1"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8"
- dependencies:
- fs.realpath "^1.0.0"
- inflight "^1.0.4"
- inherits "2"
- minimatch "^3.0.2"
- once "^1.3.0"
- path-is-absolute "^1.0.0"
-
-glob@^5.0.15:
- version "5.0.15"
- resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1"
- dependencies:
- inflight "^1.0.4"
- inherits "2"
- minimatch "2 || 3"
- once "^1.3.0"
- path-is-absolute "^1.0.0"
-
-glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1:
- version "7.1.2"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
- dependencies:
- fs.realpath "^1.0.0"
- inflight "^1.0.4"
- inherits "2"
- minimatch "^3.0.4"
- once "^1.3.0"
- path-is-absolute "^1.0.0"
-
-global@^4.3.2:
- version "4.3.2"
- resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f"
- dependencies:
- min-document "^2.19.0"
- process "~0.5.1"
-
-globals@^9.0.0, globals@^9.14.0:
- version "9.18.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
-
-globby@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d"
- dependencies:
- array-union "^1.0.1"
- arrify "^1.0.0"
- glob "^7.0.3"
- object-assign "^4.0.1"
- pify "^2.0.0"
- pinkie-promise "^2.0.0"
-
-graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9:
- version "4.1.11"
- resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
-
-"graceful-readlink@>= 1.0.0":
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
-
-growl@1.9.2:
- version "1.9.2"
- resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f"
-
-handlebars@^4.0.1:
- version "4.0.10"
- resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.10.tgz#3d30c718b09a3d96f23ea4cc1f403c4d3ba9ff4f"
- dependencies:
- async "^1.4.0"
- optimist "^0.6.1"
- source-map "^0.4.4"
- optionalDependencies:
- uglify-js "^2.6"
-
-har-schema@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e"
-
-har-validator@~2.0.6:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d"
- dependencies:
- chalk "^1.1.1"
- commander "^2.9.0"
- is-my-json-valid "^2.12.4"
- pinkie-promise "^2.0.0"
-
-har-validator@~4.2.1:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a"
- dependencies:
- ajv "^4.9.1"
- har-schema "^1.0.5"
-
-has-ansi@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
- dependencies:
- ansi-regex "^2.0.0"
-
-has-binary@0.1.7:
- version "0.1.7"
- resolved "https://registry.yarnpkg.com/has-binary/-/has-binary-0.1.7.tgz#68e61eb16210c9545a0a5cce06a873912fe1e68c"
- dependencies:
- isarray "0.0.1"
-
-has-color@~0.1.0:
- version "0.1.7"
- resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f"
-
-has-cors@1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39"
-
-has-flag@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
-
-has-flag@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
-
-has-unicode@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
-
-has@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28"
- dependencies:
- function-bind "^1.0.2"
-
-hasha@~2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/hasha/-/hasha-2.2.0.tgz#78d7cbfc1e6d66303fe79837365984517b2f6ee1"
- dependencies:
- is-stream "^1.0.1"
- pinkie-promise "^2.0.0"
-
-hawk@~3.1.3:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4"
- dependencies:
- boom "2.x.x"
- cryptiles "2.x.x"
- hoek "2.x.x"
- sntp "1.x.x"
-
-hoek@2.x.x:
- version "2.16.3"
- resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
-
-home-or-tmp@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8"
- dependencies:
- os-homedir "^1.0.0"
- os-tmpdir "^1.0.1"
-
-hosted-git-info@^2.1.4:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c"
-
-html-comment-regex@^1.1.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e"
-
-http-errors@~1.6.1:
- version "1.6.1"
- resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.1.tgz#5f8b8ed98aca545656bf572997387f904a722257"
- dependencies:
- depd "1.1.0"
- inherits "2.0.3"
- setprototypeof "1.0.3"
- statuses ">= 1.3.1 < 2"
-
-http-proxy-middleware@~0.17.1:
- version "0.17.4"
- resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz#642e8848851d66f09d4f124912846dbaeb41b833"
- dependencies:
- http-proxy "^1.16.2"
- is-glob "^3.1.0"
- lodash "^4.17.2"
- micromatch "^2.3.11"
-
-http-proxy@^1.13.0, http-proxy@^1.16.2:
- version "1.16.2"
- resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742"
- dependencies:
- eventemitter3 "1.x.x"
- requires-port "1.x.x"
-
-http-signature@~1.1.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf"
- dependencies:
- assert-plus "^0.2.0"
- jsprim "^1.2.2"
- sshpk "^1.7.0"
-
-https-browserify@0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82"
-
-iconv-lite@0.4.15:
- version "0.4.15"
- resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb"
-
-iconv-lite@~0.4.13:
- version "0.4.18"
- resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.18.tgz#23d8656b16aae6742ac29732ea8f0336a4789cf2"
-
-icss-replace-symbols@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded"
-
-ieee754@^1.1.4:
- version "1.1.8"
- resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4"
-
-ignore@^3.2.0:
- version "3.3.3"
- resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.3.tgz#432352e57accd87ab3110e82d3fea0e47812156d"
-
-imurmurhash@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
-
-indent-string@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
- dependencies:
- repeating "^2.0.0"
-
-indexes-of@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607"
-
-indexof@0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
-
-inflight@^1.0.4:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
- dependencies:
- once "^1.3.0"
- wrappy "1"
-
-inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
-
-inherits@2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
-
-ini@~1.3.0:
- version "1.3.4"
- resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
-
-inquirer@^0.12.0:
- version "0.12.0"
- resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e"
- dependencies:
- ansi-escapes "^1.1.0"
- ansi-regex "^2.0.0"
- chalk "^1.0.0"
- cli-cursor "^1.0.1"
- cli-width "^2.0.0"
- figures "^1.3.5"
- lodash "^4.3.0"
- readline2 "^1.0.1"
- run-async "^0.1.0"
- rx-lite "^3.1.2"
- string-width "^1.0.1"
- strip-ansi "^3.0.0"
- through "^2.3.6"
-
-interpret@^0.6.4:
- version "0.6.6"
- resolved "https://registry.yarnpkg.com/interpret/-/interpret-0.6.6.tgz#fecd7a18e7ce5ca6abfb953e1f86213a49f1625b"
-
-interpret@^1.0.0:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90"
-
-invariant@^2.1.0, invariant@^2.2.0, invariant@^2.2.1:
- version "2.2.2"
- resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
- dependencies:
- loose-envify "^1.0.0"
-
-ipaddr.js@1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.4.0.tgz#296aca878a821816e5b85d0a285a99bcff4582f0"
-
-is-absolute-url@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6"
-
-is-arrayish@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
-
-is-binary-path@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
- dependencies:
- binary-extensions "^1.0.0"
-
-is-buffer@^1.1.5:
- version "1.1.5"
- resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc"
-
-is-builtin-module@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
- dependencies:
- builtin-modules "^1.0.0"
-
-is-callable@^1.1.1, is-callable@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2"
-
-is-date-object@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
-
-is-dotfile@^1.0.0:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1"
-
-is-equal-shallow@^0.1.3:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534"
- dependencies:
- is-primitive "^2.0.0"
-
-is-extendable@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
-
-is-extglob@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
-
-is-extglob@^2.1.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
-
-is-finite@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
- dependencies:
- number-is-nan "^1.0.0"
-
-is-fullwidth-code-point@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
- dependencies:
- number-is-nan "^1.0.0"
-
-is-fullwidth-code-point@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
-
-is-glob@^2.0.0, is-glob@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
- dependencies:
- is-extglob "^1.0.0"
-
-is-glob@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
- dependencies:
- is-extglob "^2.1.0"
-
-is-my-json-valid@^2.10.0, is-my-json-valid@^2.12.4:
- version "2.16.0"
- resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693"
- dependencies:
- generate-function "^2.0.0"
- generate-object-property "^1.1.0"
- jsonpointer "^4.0.0"
- xtend "^4.0.0"
-
-is-number@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806"
-
-is-number@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
- dependencies:
- kind-of "^3.0.2"
-
-is-number@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
- dependencies:
- kind-of "^3.0.2"
-
-is-path-cwd@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d"
-
-is-path-in-cwd@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc"
- dependencies:
- is-path-inside "^1.0.0"
-
-is-path-inside@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f"
- dependencies:
- path-is-inside "^1.0.1"
-
-is-plain-obj@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
-
-is-posix-bracket@^0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
-
-is-primitive@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
-
-is-property@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
-
-is-regex@^1.0.3:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
- dependencies:
- has "^1.0.1"
-
-is-resolvable@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62"
- dependencies:
- tryit "^1.0.1"
-
-is-stream@^1.0.1:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
-
-is-svg@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9"
- dependencies:
- html-comment-regex "^1.1.0"
-
-is-symbol@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572"
-
-is-typedarray@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
-
-is-utf8@^0.2.0:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
-
-isarray@0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
-
-isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
-
-isbinaryfile@^3.0.0:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621"
-
-isexe@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
-
-isobject@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
- dependencies:
- isarray "1.0.0"
-
-isomorphic-fetch@^2.1.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9"
- dependencies:
- node-fetch "^1.0.1"
- whatwg-fetch ">=0.10.0"
-
-isparta-instrumenter-loader@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/isparta-instrumenter-loader/-/isparta-instrumenter-loader-1.0.1.tgz#9c308c9be03a7bc7e30bad9b6ee87c203e029526"
- dependencies:
- isparta "^4.0.0"
- loader-utils "^0.2.6"
- lodash "^3.5.0"
-
-isparta@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/isparta/-/isparta-4.0.0.tgz#1de91996f480b22dcb1aca8510255bae1574446e"
- dependencies:
- babel-core "^6.1.4"
- escodegen "^1.6.1"
- esprima "^2.1.0"
- istanbul "^0.4.0"
- mkdirp "^0.5.0"
- nomnomnomnom "^2.0.0"
- object-assign "^4.0.1"
- source-map "^0.5.0"
- which "^1.0.9"
-
-isstream@~0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
-
-istanbul@^0.4.0:
- version "0.4.5"
- resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b"
- dependencies:
- abbrev "1.0.x"
- async "1.x"
- escodegen "1.8.x"
- esprima "2.7.x"
- glob "^5.0.15"
- handlebars "^4.0.1"
- js-yaml "3.x"
- mkdirp "0.5.x"
- nopt "3.x"
- once "1.x"
- resolve "1.1.x"
- supports-color "^3.1.0"
- which "^1.1.1"
- wordwrap "^1.0.0"
-
-js-base64@^2.1.9:
- version "2.1.9"
- resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce"
-
-js-tokens@^3.0.0:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
-
-js-yaml@3.x, js-yaml@^3.5.1:
- version "3.9.1"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.9.1.tgz#08775cebdfdd359209f0d2acd383c8f86a6904a0"
- dependencies:
- argparse "^1.0.7"
- esprima "^4.0.0"
-
-js-yaml@~3.7.0:
- version "3.7.0"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80"
- dependencies:
- argparse "^1.0.7"
- esprima "^2.6.0"
-
-jsbn@~0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
-
-jsesc@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
-
-jsesc@~0.5.0:
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
-
-json-schema@0.2.3:
- version "0.2.3"
- resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
-
-json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
- dependencies:
- jsonify "~0.0.0"
-
-json-stringify-safe@~5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
-
-json3@3.3.2, json3@^3.3.2:
- version "3.3.2"
- resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1"
-
-json5@^0.5.0:
- version "0.5.1"
- resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
-
-jsonfile@^2.1.0:
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8"
- optionalDependencies:
- graceful-fs "^4.1.6"
-
-jsonify@~0.0.0:
- version "0.0.0"
- resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
-
-jsonpointer@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9"
-
-jsprim@^1.2.2:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.0.tgz#a3b87e40298d8c380552d8cc7628a0bb95a22918"
- dependencies:
- assert-plus "1.0.0"
- extsprintf "1.0.2"
- json-schema "0.2.3"
- verror "1.3.6"
-
-jsx-ast-utils@^1.3.4:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz#3867213e8dd79bf1e8f2300c0cfc1efb182c0df1"
-
-karma-chai@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/karma-chai/-/karma-chai-0.1.0.tgz#bee5ad40400517811ae34bb945f762909108b79a"
-
-karma-coverage@^1.0.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/karma-coverage/-/karma-coverage-1.1.1.tgz#5aff8b39cf6994dc22de4c84362c76001b637cf6"
- dependencies:
- dateformat "^1.0.6"
- istanbul "^0.4.0"
- lodash "^3.8.0"
- minimatch "^3.0.0"
- source-map "^0.5.1"
-
-karma-mocha-reporter@^2.0.0:
- version "2.2.3"
- resolved "https://registry.yarnpkg.com/karma-mocha-reporter/-/karma-mocha-reporter-2.2.3.tgz#04fdda45a1d9697a73871c7472223c581701ab20"
- dependencies:
- chalk "1.1.3"
-
-karma-mocha@^1.0.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/karma-mocha/-/karma-mocha-1.3.0.tgz#eeaac7ffc0e201eb63c467440d2b69c7cf3778bf"
- dependencies:
- minimist "1.2.0"
-
-karma-phantomjs-launcher@^1.0.0:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/karma-phantomjs-launcher/-/karma-phantomjs-launcher-1.0.4.tgz#d23ca34801bda9863ad318e3bb4bd4062b13acd2"
- dependencies:
- lodash "^4.0.1"
- phantomjs-prebuilt "^2.1.7"
-
-karma-sourcemap-loader@^0.3.5:
- version "0.3.7"
- resolved "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz#91322c77f8f13d46fed062b042e1009d4c4505d8"
- dependencies:
- graceful-fs "^4.1.2"
-
-karma-webpack@^1.7.0:
- version "1.8.1"
- resolved "https://registry.yarnpkg.com/karma-webpack/-/karma-webpack-1.8.1.tgz#39d5fd2edeea3cc3ef5b405989b37d5b0e6a3b4e"
- dependencies:
- async "~0.9.0"
- loader-utils "^0.2.5"
- lodash "^3.8.0"
- source-map "^0.1.41"
- webpack-dev-middleware "^1.0.11"
-
-karma@^1.0.0:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/karma/-/karma-1.7.0.tgz#6f7a1a406446fa2e187ec95398698f4cee476269"
- dependencies:
- bluebird "^3.3.0"
- body-parser "^1.16.1"
- chokidar "^1.4.1"
- colors "^1.1.0"
- combine-lists "^1.0.0"
- connect "^3.6.0"
- core-js "^2.2.0"
- di "^0.0.1"
- dom-serialize "^2.2.0"
- expand-braces "^0.1.1"
- glob "^7.1.1"
- graceful-fs "^4.1.2"
- http-proxy "^1.13.0"
- isbinaryfile "^3.0.0"
- lodash "^3.8.0"
- log4js "^0.6.31"
- mime "^1.3.4"
- minimatch "^3.0.2"
- optimist "^0.6.1"
- qjobs "^1.1.4"
- range-parser "^1.2.0"
- rimraf "^2.6.0"
- safe-buffer "^5.0.1"
- socket.io "1.7.3"
- source-map "^0.5.3"
- tmp "0.0.31"
- useragent "^2.1.12"
-
-kew@~0.7.0:
- version "0.7.0"
- resolved "https://registry.yarnpkg.com/kew/-/kew-0.7.0.tgz#79d93d2d33363d6fdd2970b335d9141ad591d79b"
-
-keycode@^2.1.2, keycode@^2.1.8:
- version "2.1.9"
- resolved "https://registry.yarnpkg.com/keycode/-/keycode-2.1.9.tgz#964a23c54e4889405b4861a5c9f0480d45141dfa"
-
-kind-of@^3.0.2:
- version "3.2.2"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
- dependencies:
- is-buffer "^1.1.5"
-
-kind-of@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
- dependencies:
- is-buffer "^1.1.5"
-
-klaw@^1.0.0:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439"
- optionalDependencies:
- graceful-fs "^4.1.9"
-
-lazy-cache@^1.0.3:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
-
-levn@^0.3.0, levn@~0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
- dependencies:
- prelude-ls "~1.1.2"
- type-check "~0.3.2"
-
-load-json-file@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
- dependencies:
- graceful-fs "^4.1.2"
- parse-json "^2.2.0"
- pify "^2.0.0"
- pinkie-promise "^2.0.0"
- strip-bom "^2.0.0"
-
-loader-fs-cache@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.1.tgz#56e0bf08bd9708b26a765b68509840c8dec9fdbc"
- dependencies:
- find-cache-dir "^0.1.1"
- mkdirp "0.5.1"
-
-loader-utils@^0.2.11, loader-utils@^0.2.16, loader-utils@^0.2.5, loader-utils@^0.2.6, loader-utils@~0.2.2, loader-utils@~0.2.5:
- version "0.2.17"
- resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348"
- dependencies:
- big.js "^3.1.3"
- emojis-list "^2.0.0"
- json5 "^0.5.0"
- object-assign "^4.0.1"
-
-loader-utils@^1.0.2:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd"
- dependencies:
- big.js "^3.1.3"
- emojis-list "^2.0.0"
- json5 "^0.5.0"
-
-loaders.css@^0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/loaders.css/-/loaders.css-0.1.2.tgz#3a9fb43726c73334a38142af9d0629019b658743"
-
-lodash._baseassign@^3.0.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e"
- dependencies:
- lodash._basecopy "^3.0.0"
- lodash.keys "^3.0.0"
-
-lodash._basecopy@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36"
-
-lodash._basecreate@^3.0.0:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821"
-
-lodash._createcompounder@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/lodash._createcompounder/-/lodash._createcompounder-3.0.0.tgz#5dd2cb55372d6e70e0e2392fb2304d6631091075"
- dependencies:
- lodash.deburr "^3.0.0"
- lodash.words "^3.0.0"
-
-lodash._getnative@^3.0.0:
- version "3.9.1"
- resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5"
-
-lodash._isiterateecall@^3.0.0:
- version "3.0.9"
- resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c"
-
-lodash._root@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692"
-
-lodash.assign@^4.0.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7"
-
-lodash.camelcase@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-3.0.1.tgz#932c8b87f8a4377897c67197533282f97aeac298"
- dependencies:
- lodash._createcompounder "^3.0.0"
-
-lodash.create@3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7"
- dependencies:
- lodash._baseassign "^3.0.0"
- lodash._basecreate "^3.0.0"
- lodash._isiterateecall "^3.0.0"
-
-lodash.deburr@^3.0.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/lodash.deburr/-/lodash.deburr-3.2.0.tgz#6da8f54334a366a7cf4c4c76ef8d80aa1b365ed5"
- dependencies:
- lodash._root "^3.0.0"
-
-lodash.isarguments@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a"
-
-lodash.isarray@^3.0.0:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55"
-
-lodash.keys@^3.0.0:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a"
- dependencies:
- lodash._getnative "^3.0.0"
- lodash.isarguments "^3.0.0"
- lodash.isarray "^3.0.0"
-
-lodash.memoize@^4.1.2:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
-
-lodash.pickby@^4.0.0:
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/lodash.pickby/-/lodash.pickby-4.6.0.tgz#7dea21d8c18d7703a27c704c15d3b84a67e33aff"
-
-lodash.uniq@^4.5.0:
- version "4.5.0"
- resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
-
-lodash.words@^3.0.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/lodash.words/-/lodash.words-3.2.0.tgz#4e2a8649bc08745b17c695b1a3ce8fee596623b3"
- dependencies:
- lodash._root "^3.0.0"
-
-lodash@^3.5.0, lodash@^3.8.0:
- version "3.10.1"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6"
-
-lodash@^4.0.0, lodash@^4.0.1, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.5.0:
- version "4.17.4"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
-
-log4js@^0.6.31:
- version "0.6.38"
- resolved "https://registry.yarnpkg.com/log4js/-/log4js-0.6.38.tgz#2c494116695d6fb25480943d3fc872e662a522fd"
- dependencies:
- readable-stream "~1.0.2"
- semver "~4.3.3"
-
-longest@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
-
-loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.0, loose-envify@^1.3.1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848"
- dependencies:
- js-tokens "^3.0.0"
-
-loud-rejection@^1.0.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
- dependencies:
- currently-unhandled "^0.4.1"
- signal-exit "^3.0.0"
-
-lru-cache@2.2.x:
- version "2.2.4"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d"
-
-ltcdr@^2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/ltcdr/-/ltcdr-2.2.1.tgz#5ab87ad1d4c1dab8e8c08bbf037ee0c1902287cf"
-
-macaddress@^0.2.8:
- version "0.2.8"
- resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12"
-
-map-obj@^1.0.0, map-obj@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
-
-math-expression-evaluator@^1.2.14:
- version "1.2.17"
- resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac"
-
-media-typer@0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
-
-memory-fs@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.2.0.tgz#f2bb25368bc121e391c2520de92969caee0a0290"
-
-memory-fs@~0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.3.0.tgz#7bcc6b629e3a43e871d7e29aca6ae8a7f15cbb20"
- dependencies:
- errno "^0.1.3"
- readable-stream "^2.0.1"
-
-memory-fs@~0.4.1:
- version "0.4.1"
- resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
- dependencies:
- errno "^0.1.3"
- readable-stream "^2.0.1"
-
-meow@^3.3.0:
- version "3.7.0"
- resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
- dependencies:
- camelcase-keys "^2.0.0"
- decamelize "^1.1.2"
- loud-rejection "^1.0.0"
- map-obj "^1.0.1"
- minimist "^1.1.3"
- normalize-package-data "^2.3.4"
- object-assign "^4.0.1"
- read-pkg-up "^1.0.1"
- redent "^1.0.0"
- trim-newlines "^1.0.0"
-
-merge-descriptors@1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
-
-methods@~1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
-
-micromatch@^2.1.5, micromatch@^2.3.11:
- version "2.3.11"
- resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
- dependencies:
- arr-diff "^2.0.0"
- array-unique "^0.2.1"
- braces "^1.8.2"
- expand-brackets "^0.1.4"
- extglob "^0.3.1"
- filename-regex "^2.0.0"
- is-extglob "^1.0.0"
- is-glob "^2.0.1"
- kind-of "^3.0.2"
- normalize-path "^2.0.1"
- object.omit "^2.0.0"
- parse-glob "^3.0.4"
- regex-cache "^0.4.2"
-
-"mime-db@>= 1.29.0 < 2", mime-db@~1.29.0:
- version "1.29.0"
- resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.29.0.tgz#48d26d235589651704ac5916ca06001914266878"
-
-mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.7:
- version "2.1.16"
- resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.16.tgz#2b858a52e5ecd516db897ac2be87487830698e23"
- dependencies:
- mime-db "~1.29.0"
-
-mime@1.3.4:
- version "1.3.4"
- resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53"
-
-mime@1.3.x, mime@^1.3.4:
- version "1.3.6"
- resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.6.tgz#591d84d3653a6b0b4a3b9df8de5aa8108e72e5e0"
-
-min-document@^2.19.0:
- version "2.19.0"
- resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685"
- dependencies:
- dom-walk "^0.1.0"
-
-"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
- dependencies:
- brace-expansion "^1.1.7"
-
-minimist@0.0.8:
- version "0.0.8"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
-
-minimist@1.2.0, minimist@^1.1.3, minimist@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
-
-minimist@~0.0.1:
- version "0.0.10"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
-
-mkdirp@0.5.0:
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.0.tgz#1d73076a6df986cd9344e15e71fcc05a4c9abf12"
- dependencies:
- minimist "0.0.8"
-
-mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
- version "0.5.1"
- resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
- dependencies:
- minimist "0.0.8"
-
-mocha@^3.0.0:
- version "3.4.2"
- resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.4.2.tgz#d0ef4d332126dbf18d0d640c9b382dd48be97594"
- dependencies:
- browser-stdout "1.3.0"
- commander "2.9.0"
- debug "2.6.0"
- diff "3.2.0"
- escape-string-regexp "1.0.5"
- glob "7.1.1"
- growl "1.9.2"
- json3 "3.3.2"
- lodash.create "3.1.1"
- mkdirp "0.5.1"
- supports-color "3.1.2"
-
-ms@0.7.1:
- version "0.7.1"
- resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098"
-
-ms@0.7.2:
- version "0.7.2"
- resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765"
-
-ms@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
-
-mute-stream@0.0.5:
- version "0.0.5"
- resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0"
-
-nan@^2.3.0:
- version "2.6.2"
- resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45"
-
-natural-compare@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
-
-negotiator@0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
-
-node-fetch@^1.0.1:
- version "1.7.1"
- resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.1.tgz#899cb3d0a3c92f952c47f1b876f4c8aeabd400d5"
- dependencies:
- encoding "^0.1.11"
- is-stream "^1.0.1"
-
-node-libs-browser@^0.7.0:
- version "0.7.0"
- resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-0.7.0.tgz#3e272c0819e308935e26674408d7af0e1491b83b"
- dependencies:
- assert "^1.1.1"
- browserify-zlib "^0.1.4"
- buffer "^4.9.0"
- console-browserify "^1.1.0"
- constants-browserify "^1.0.0"
- crypto-browserify "3.3.0"
- domain-browser "^1.1.1"
- events "^1.0.0"
- https-browserify "0.0.1"
- os-browserify "^0.2.0"
- path-browserify "0.0.0"
- process "^0.11.0"
- punycode "^1.2.4"
- querystring-es3 "^0.2.0"
- readable-stream "^2.0.5"
- stream-browserify "^2.0.1"
- stream-http "^2.3.1"
- string_decoder "^0.10.25"
- timers-browserify "^2.0.2"
- tty-browserify "0.0.0"
- url "^0.11.0"
- util "^0.10.3"
- vm-browserify "0.0.4"
-
-node-pre-gyp@^0.6.36:
- version "0.6.36"
- resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz#db604112cb74e0d477554e9b505b17abddfab786"
- dependencies:
- mkdirp "^0.5.1"
- nopt "^4.0.1"
- npmlog "^4.0.2"
- rc "^1.1.7"
- request "^2.81.0"
- rimraf "^2.6.1"
- semver "^5.3.0"
- tar "^2.2.1"
- tar-pack "^3.4.0"
-
-nomnomnomnom@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/nomnomnomnom/-/nomnomnomnom-2.0.1.tgz#b2239f031c8d04da67e32836e1e3199e12f7a8e2"
- dependencies:
- chalk "~0.4.0"
- underscore "~1.6.0"
-
-noms@0.0.0:
- version "0.0.0"
- resolved "https://registry.yarnpkg.com/noms/-/noms-0.0.0.tgz#da8ebd9f3af9d6760919b27d9cdc8092a7332859"
- dependencies:
- inherits "^2.0.1"
- readable-stream "~1.0.31"
-
-nopt@3.x:
- version "3.0.6"
- resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
- dependencies:
- abbrev "1"
-
-nopt@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
- dependencies:
- abbrev "1"
- osenv "^0.1.4"
-
-normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f"
- dependencies:
- hosted-git-info "^2.1.4"
- is-builtin-module "^1.0.0"
- semver "2 || 3 || 4 || 5"
- validate-npm-package-license "^3.0.1"
-
-normalize-path@^2.0.0, normalize-path@^2.0.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
- dependencies:
- remove-trailing-separator "^1.0.1"
-
-normalize-range@^0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
-
-normalize-url@^1.4.0:
- version "1.9.1"
- resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c"
- dependencies:
- object-assign "^4.0.1"
- prepend-http "^1.0.0"
- query-string "^4.1.0"
- sort-keys "^1.0.0"
-
-normalize.css@^4.2.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/normalize.css/-/normalize.css-4.2.0.tgz#21d66cc557154d4379fd1e079ec7de58a379b099"
-
-npmlog@^4.0.2:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
- dependencies:
- are-we-there-yet "~1.1.2"
- console-control-strings "~1.1.0"
- gauge "~2.7.3"
- set-blocking "~2.0.0"
-
-null-loader@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/null-loader/-/null-loader-0.1.1.tgz#17be9abfcd3ff0e1512f6fc4afcb1f5039378fae"
-
-num2fraction@^1.2.2:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede"
-
-number-is-nan@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
-
-oauth-sign@~0.8.1:
- version "0.8.2"
- resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
-
-object-assign@4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0"
-
-object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
-
-object-component@0.0.3:
- version "0.0.3"
- resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291"
-
-object-hash@^1.1.4:
- version "1.1.8"
- resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.1.8.tgz#28a659cf987d96a4dabe7860289f3b5326c4a03c"
-
-object-keys@^1.0.10, object-keys@^1.0.8:
- version "1.0.11"
- resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d"
-
-object.assign@^4.0.4:
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.0.4.tgz#b1c9cc044ef1b9fe63606fc141abbb32e14730cc"
- dependencies:
- define-properties "^1.1.2"
- function-bind "^1.1.0"
- object-keys "^1.0.10"
-
-object.omit@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
- dependencies:
- for-own "^0.1.4"
- is-extendable "^0.1.1"
-
-on-finished@~2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
- dependencies:
- ee-first "1.1.1"
-
-on-headers@~1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7"
-
-once@1.x, once@^1.3.0, once@^1.3.3:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
- dependencies:
- wrappy "1"
-
-onetime@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789"
-
-open@0.0.5:
- version "0.0.5"
- resolved "https://registry.yarnpkg.com/open/-/open-0.0.5.tgz#42c3e18ec95466b6bf0dc42f3a2945c3f0cad8fc"
-
-optimist@^0.6.1, optimist@~0.6.0, optimist@~0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686"
- dependencies:
- minimist "~0.0.1"
- wordwrap "~0.0.2"
-
-optionator@^0.8.1, optionator@^0.8.2:
- version "0.8.2"
- resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
- dependencies:
- deep-is "~0.1.3"
- fast-levenshtein "~2.0.4"
- levn "~0.3.0"
- prelude-ls "~1.1.2"
- type-check "~0.3.2"
- wordwrap "~1.0.0"
-
-options@>=0.0.5:
- version "0.0.6"
- resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f"
-
-original@>=0.0.5:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/original/-/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b"
- dependencies:
- url-parse "1.0.x"
-
-os-browserify@^0.2.0:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f"
-
-os-homedir@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
-
-os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
-
-osenv@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644"
- dependencies:
- os-homedir "^1.0.0"
- os-tmpdir "^1.0.0"
-
-pako@~0.2.0:
- version "0.2.9"
- resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75"
-
-parse-glob@^3.0.4:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
- dependencies:
- glob-base "^0.3.0"
- is-dotfile "^1.0.0"
- is-extglob "^1.0.0"
- is-glob "^2.0.0"
-
-parse-json@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
- dependencies:
- error-ex "^1.2.0"
-
-parsejson@0.0.3:
- version "0.0.3"
- resolved "https://registry.yarnpkg.com/parsejson/-/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab"
- dependencies:
- better-assert "~1.0.0"
-
-parseqs@0.0.5:
- version "0.0.5"
- resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d"
- dependencies:
- better-assert "~1.0.0"
-
-parseuri@0.0.5:
- version "0.0.5"
- resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a"
- dependencies:
- better-assert "~1.0.0"
-
-parseurl@~1.3.1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56"
-
-path-browserify@0.0.0:
- version "0.0.0"
- resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a"
-
-path-exists@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
- dependencies:
- pinkie-promise "^2.0.0"
-
-path-is-absolute@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
-
-path-is-inside@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
-
-path-parse@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1"
-
-path-to-regexp@0.1.7:
- version "0.1.7"
- resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
-
-path-type@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
- dependencies:
- graceful-fs "^4.1.2"
- pify "^2.0.0"
- pinkie-promise "^2.0.0"
-
-pbkdf2-compat@2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz#b6e0c8fa99494d94e0511575802a59a5c142f288"
-
-pend@~1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
-
-performance-now@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5"
-
-phantomjs-prebuilt@^2.0.0, phantomjs-prebuilt@^2.1.7:
- version "2.1.14"
- resolved "https://registry.yarnpkg.com/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.14.tgz#d53d311fcfb7d1d08ddb24014558f1188c516da0"
- dependencies:
- es6-promise "~4.0.3"
- extract-zip "~1.5.0"
- fs-extra "~1.0.0"
- hasha "~2.2.0"
- kew "~0.7.0"
- progress "~1.1.8"
- request "~2.79.0"
- request-progress "~2.0.1"
- which "~1.2.10"
-
-pify@^2.0.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
-
-pinkie-promise@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
- dependencies:
- pinkie "^2.0.0"
-
-pinkie@^2.0.0:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
-
-pkg-dir@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4"
- dependencies:
- find-up "^1.0.0"
-
-pluralize@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45"
-
-postcss-calc@^5.2.0:
- version "5.3.1"
- resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e"
- dependencies:
- postcss "^5.0.2"
- postcss-message-helpers "^2.0.0"
- reduce-css-calc "^1.2.6"
-
-postcss-colormin@^2.1.8:
- version "2.2.2"
- resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b"
- dependencies:
- colormin "^1.0.5"
- postcss "^5.0.13"
- postcss-value-parser "^3.2.3"
-
-postcss-convert-values@^2.3.4:
- version "2.6.1"
- resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d"
- dependencies:
- postcss "^5.0.11"
- postcss-value-parser "^3.1.2"
-
-postcss-discard-comments@^2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d"
- dependencies:
- postcss "^5.0.14"
-
-postcss-discard-duplicates@^2.0.1:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932"
- dependencies:
- postcss "^5.0.4"
-
-postcss-discard-empty@^2.0.1:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5"
- dependencies:
- postcss "^5.0.14"
-
-postcss-discard-overridden@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58"
- dependencies:
- postcss "^5.0.16"
-
-postcss-discard-unused@^2.2.1:
- version "2.2.3"
- resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433"
- dependencies:
- postcss "^5.0.14"
- uniqs "^2.0.0"
-
-postcss-filter-plugins@^2.0.0:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c"
- dependencies:
- postcss "^5.0.4"
- uniqid "^4.0.0"
-
-postcss-merge-idents@^2.1.5:
- version "2.1.7"
- resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270"
- dependencies:
- has "^1.0.1"
- postcss "^5.0.10"
- postcss-value-parser "^3.1.1"
-
-postcss-merge-longhand@^2.0.1:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658"
- dependencies:
- postcss "^5.0.4"
-
-postcss-merge-rules@^2.0.3:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721"
- dependencies:
- browserslist "^1.5.2"
- caniuse-api "^1.5.2"
- postcss "^5.0.4"
- postcss-selector-parser "^2.2.2"
- vendors "^1.0.0"
-
-postcss-message-helpers@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e"
-
-postcss-minify-font-values@^1.0.2:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69"
- dependencies:
- object-assign "^4.0.1"
- postcss "^5.0.4"
- postcss-value-parser "^3.0.2"
-
-postcss-minify-gradients@^1.0.1:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1"
- dependencies:
- postcss "^5.0.12"
- postcss-value-parser "^3.3.0"
-
-postcss-minify-params@^1.0.4:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3"
- dependencies:
- alphanum-sort "^1.0.1"
- postcss "^5.0.2"
- postcss-value-parser "^3.0.2"
- uniqs "^2.0.0"
-
-postcss-minify-selectors@^2.0.4:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf"
- dependencies:
- alphanum-sort "^1.0.2"
- has "^1.0.1"
- postcss "^5.0.14"
- postcss-selector-parser "^2.0.0"
-
-postcss-modules-extract-imports@^1.0.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz#66140ecece38ef06bf0d3e355d69bf59d141ea85"
- dependencies:
- postcss "^6.0.1"
-
-postcss-modules-local-by-default@^1.0.1:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069"
- dependencies:
- css-selector-tokenizer "^0.7.0"
- postcss "^6.0.1"
-
-postcss-modules-scope@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90"
- dependencies:
- css-selector-tokenizer "^0.7.0"
- postcss "^6.0.1"
-
-postcss-modules-values@^1.1.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20"
- dependencies:
- icss-replace-symbols "^1.1.0"
- postcss "^6.0.1"
-
-postcss-normalize-charset@^1.1.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1"
- dependencies:
- postcss "^5.0.5"
-
-postcss-normalize-url@^3.0.7:
- version "3.0.8"
- resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222"
- dependencies:
- is-absolute-url "^2.0.0"
- normalize-url "^1.4.0"
- postcss "^5.0.14"
- postcss-value-parser "^3.2.3"
-
-postcss-ordered-values@^2.1.0:
- version "2.2.3"
- resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d"
- dependencies:
- postcss "^5.0.4"
- postcss-value-parser "^3.0.1"
-
-postcss-reduce-idents@^2.2.2:
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3"
- dependencies:
- postcss "^5.0.4"
- postcss-value-parser "^3.0.2"
-
-postcss-reduce-initial@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea"
- dependencies:
- postcss "^5.0.4"
-
-postcss-reduce-transforms@^1.0.3:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1"
- dependencies:
- has "^1.0.1"
- postcss "^5.0.8"
- postcss-value-parser "^3.0.1"
-
-postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2:
- version "2.2.3"
- resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90"
- dependencies:
- flatten "^1.0.2"
- indexes-of "^1.0.1"
- uniq "^1.0.1"
-
-postcss-svgo@^2.1.1:
- version "2.1.6"
- resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d"
- dependencies:
- is-svg "^2.0.0"
- postcss "^5.0.14"
- postcss-value-parser "^3.2.3"
- svgo "^0.7.0"
-
-postcss-unique-selectors@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d"
- dependencies:
- alphanum-sort "^1.0.1"
- postcss "^5.0.4"
- uniqs "^2.0.0"
-
-postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0:
- version "3.3.0"
- resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15"
-
-postcss-zindex@^2.0.1:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22"
- dependencies:
- has "^1.0.1"
- postcss "^5.0.4"
- uniqs "^2.0.0"
-
-postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.16:
- version "5.2.17"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.17.tgz#cf4f597b864d65c8a492b2eabe9d706c879c388b"
- dependencies:
- chalk "^1.1.3"
- js-base64 "^2.1.9"
- source-map "^0.5.6"
- supports-color "^3.2.3"
-
-postcss@^6.0.1:
- version "6.0.8"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.8.tgz#89067a9ce8b11f8a84cbc5117efc30419a0857b3"
- dependencies:
- chalk "^2.0.1"
- source-map "^0.5.6"
- supports-color "^4.2.0"
-
-prelude-ls@~1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
-
-prepend-http@^1.0.0:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
-
-preserve@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
-
-private@^0.1.6:
- version "0.1.7"
- resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1"
-
-process-nextick-args@~1.0.6:
- version "1.0.7"
- resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
-
-process@^0.11.0:
- version "0.11.10"
- resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
-
-process@~0.5.1:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf"
-
-progress@^1.1.8, progress@~1.1.8:
- version "1.1.8"
- resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be"
-
-promise@^7.1.1:
- version "7.3.1"
- resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf"
- dependencies:
- asap "~2.0.3"
-
-prop-types-extra@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/prop-types-extra/-/prop-types-extra-1.0.1.tgz#a57bd4810e82d27a3ff4317ecc1b4ad005f79a82"
- dependencies:
- warning "^3.0.0"
-
-prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.8:
- version "15.5.10"
- resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.5.10.tgz#2797dfc3126182e3a95e3dfbb2e893ddd7456154"
- dependencies:
- fbjs "^0.8.9"
- loose-envify "^1.3.1"
-
-proxy-addr@~1.1.4:
- version "1.1.5"
- resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.5.tgz#71c0ee3b102de3f202f3b64f608d173fcba1a918"
- dependencies:
- forwarded "~0.1.0"
- ipaddr.js "1.4.0"
-
-prr@~0.0.0:
- version "0.0.0"
- resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a"
-
-punycode@1.3.2:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
-
-punycode@^1.2.4, punycode@^1.4.1:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
-
-q@^1.0.1, q@^1.1.2:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1"
-
-qjobs@^1.1.4:
- version "1.1.5"
- resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.1.5.tgz#659de9f2cf8dcc27a1481276f205377272382e73"
-
-qs@6.4.0, qs@~6.4.0:
- version "6.4.0"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233"
-
-qs@~6.3.0:
- version "6.3.2"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c"
-
-query-string@^4.1.0:
- version "4.3.4"
- resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb"
- dependencies:
- object-assign "^4.1.0"
- strict-uri-encode "^1.0.0"
-
-querystring-es3@^0.2.0:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
-
-querystring@0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
-
-querystringify@0.0.x:
- version "0.0.4"
- resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c"
-
-querystringify@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-1.0.0.tgz#6286242112c5b712fa654e526652bf6a13ff05cb"
-
-randomatic@^1.1.3:
- version "1.1.7"
- resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c"
- dependencies:
- is-number "^3.0.0"
- kind-of "^4.0.0"
-
-range-parser@^1.0.3, range-parser@^1.2.0, range-parser@~1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e"
-
-raw-body@~2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.2.0.tgz#994976cf6a5096a41162840492f0bdc5d6e7fb96"
- dependencies:
- bytes "2.4.0"
- iconv-lite "0.4.15"
- unpipe "1.0.0"
-
-rc@^1.1.7:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95"
- dependencies:
- deep-extend "~0.4.0"
- ini "~1.3.0"
- minimist "^1.2.0"
- strip-json-comments "~2.0.1"
-
-react-addons-test-utils@^15.0.0:
- version "15.6.0"
- resolved "https://registry.yarnpkg.com/react-addons-test-utils/-/react-addons-test-utils-15.6.0.tgz#062d36117fe8d18f3ba5e06eb33383b0b85ea5b9"
-
-react-bootstrap-autosuggest@^0.5.0:
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/react-bootstrap-autosuggest/-/react-bootstrap-autosuggest-0.5.0.tgz#0c8c62ca21d8d14cd5f4eeb5997152484773c439"
- dependencies:
- classnames "^2.2.5"
- fbjs "^0.8.12"
- keycode "^2.1.8"
- prop-types "^15.5.8"
- warning "^3.0.0"
-
-react-bootstrap-date-picker@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/react-bootstrap-date-picker/-/react-bootstrap-date-picker-5.0.1.tgz#4d0cb33d93d5c2d92df1040b3509be8269a892ea"
-
-react-bootstrap@^0.31.1:
- version "0.31.1"
- resolved "https://registry.yarnpkg.com/react-bootstrap/-/react-bootstrap-0.31.1.tgz#679c9f73ae77ff207867d536496207291f3a3ed7"
- dependencies:
- babel-runtime "^6.11.6"
- classnames "^2.2.5"
- dom-helpers "^3.2.0"
- invariant "^2.2.1"
- keycode "^2.1.2"
- prop-types "^15.5.10"
- prop-types-extra "^1.0.1"
- react-overlays "^0.7.0"
- react-prop-types "^0.4.0"
- uncontrollable "^4.1.0"
- warning "^3.0.0"
-
-react-dom@^15.6.1:
- version "15.6.1"
- resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-15.6.1.tgz#2cb0ed4191038e53c209eb3a79a23e2a4cf99470"
- dependencies:
- fbjs "^0.8.9"
- loose-envify "^1.1.0"
- object-assign "^4.1.0"
- prop-types "^15.5.10"
-
-react-dropdown@^1.2.5:
- version "1.2.5"
- resolved "https://registry.yarnpkg.com/react-dropdown/-/react-dropdown-1.2.5.tgz#9a4d2a4c939d7526bbd7c6a8106949ef2244a8f1"
- dependencies:
- classnames "^2.2.3"
-
-react-hot-api@^0.4.5:
- version "0.4.7"
- resolved "https://registry.yarnpkg.com/react-hot-api/-/react-hot-api-0.4.7.tgz#a7e22a56d252e11abd9366b61264cf4492c58171"
-
-react-hot-loader@^1.2.9:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-1.3.1.tgz#c95647ae78b73dfceff6ec71ffcb04182ff6daf9"
- dependencies:
- react-hot-api "^0.4.5"
- source-map "^0.4.4"
-
-react-input-autosize@^1.1.3:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/react-input-autosize/-/react-input-autosize-1.1.4.tgz#cbc45072d4084ddc57806db8e3b34e644b8366ac"
- dependencies:
- create-react-class "^15.5.2"
- prop-types "^15.5.8"
-
-react-overlays@^0.7.0:
- version "0.7.0"
- resolved "https://registry.yarnpkg.com/react-overlays/-/react-overlays-0.7.0.tgz#531898ff566c7e5c7226ead2863b8cf9fbb5a981"
- dependencies:
- classnames "^2.2.5"
- dom-helpers "^3.2.0"
- prop-types "^15.5.8"
- react-prop-types "^0.4.0"
- warning "^3.0.0"
-
-react-prop-types@^0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/react-prop-types/-/react-prop-types-0.4.0.tgz#f99b0bfb4006929c9af2051e7c1414a5c75b93d0"
- dependencies:
- warning "^3.0.0"
-
-react-select@^1.0.0-rc.5:
- version "1.0.0-rc.5"
- resolved "https://registry.yarnpkg.com/react-select/-/react-select-1.0.0-rc.5.tgz#9d316f252b1adc372ddb5cdf1f119c6b7cfdb5d6"
- dependencies:
- classnames "^2.2.4"
- create-react-class "^15.5.2"
- prop-types "^15.5.8"
- react-input-autosize "^1.1.3"
-
-react-spinkit@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/react-spinkit/-/react-spinkit-3.0.0.tgz#31fdaf4e18177766c57d1b1f3330290f8492a85a"
- dependencies:
- classnames "^2.2.3"
- loaders.css "^0.1.2"
- object-assign "^4.1.0"
- prop-types "^15.5.8"
-
-react-virtualized@^9.9.0:
- version "9.9.0"
- resolved "https://registry.yarnpkg.com/react-virtualized/-/react-virtualized-9.9.0.tgz#799a6f23819eeb82860d59b82fad33d1d420325e"
- dependencies:
- babel-runtime "^6.11.6"
- classnames "^2.2.3"
- dom-helpers "^2.4.0 || ^3.0.0"
- loose-envify "^1.3.0"
- prop-types "^15.5.4"
-
-react@^15.6.1:
- version "15.6.1"
- resolved "https://registry.yarnpkg.com/react/-/react-15.6.1.tgz#baa8434ec6780bde997cdc380b79cd33b96393df"
- dependencies:
- create-react-class "^15.6.0"
- fbjs "^0.8.9"
- loose-envify "^1.1.0"
- object-assign "^4.1.0"
- prop-types "^15.5.10"
-
-read-pkg-up@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
- dependencies:
- find-up "^1.0.0"
- read-pkg "^1.0.0"
-
-read-pkg@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
- dependencies:
- load-json-file "^1.0.0"
- normalize-package-data "^2.3.2"
- path-type "^1.0.0"
-
-readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.6:
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c"
- dependencies:
- core-util-is "~1.0.0"
- inherits "~2.0.3"
- isarray "~1.0.0"
- process-nextick-args "~1.0.6"
- safe-buffer "~5.1.1"
- string_decoder "~1.0.3"
- util-deprecate "~1.0.1"
-
-readable-stream@~1.0.2, readable-stream@~1.0.31:
- version "1.0.34"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c"
- dependencies:
- core-util-is "~1.0.0"
- inherits "~2.0.1"
- isarray "0.0.1"
- string_decoder "~0.10.x"
-
-readable-stream@~2.0.0:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e"
- dependencies:
- core-util-is "~1.0.0"
- inherits "~2.0.1"
- isarray "~1.0.0"
- process-nextick-args "~1.0.6"
- string_decoder "~0.10.x"
- util-deprecate "~1.0.1"
-
-readdirp@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78"
- dependencies:
- graceful-fs "^4.1.2"
- minimatch "^3.0.2"
- readable-stream "^2.0.2"
- set-immediate-shim "^1.0.1"
-
-readline2@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35"
- dependencies:
- code-point-at "^1.0.0"
- is-fullwidth-code-point "^1.0.0"
- mute-stream "0.0.5"
-
-rechoir@^0.6.2:
- version "0.6.2"
- resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
- dependencies:
- resolve "^1.1.6"
-
-redent@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"
- dependencies:
- indent-string "^2.1.0"
- strip-indent "^1.0.1"
-
-reduce-css-calc@^1.2.6:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716"
- dependencies:
- balanced-match "^0.4.2"
- math-expression-evaluator "^1.2.14"
- reduce-function-call "^1.0.1"
-
-reduce-function-call@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99"
- dependencies:
- balanced-match "^0.4.2"
-
-regenerate@^1.2.1:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260"
-
-regenerator-runtime@^0.10.0:
- version "0.10.5"
- resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658"
-
-regenerator-transform@0.9.11:
- version "0.9.11"
- resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.9.11.tgz#3a7d067520cb7b7176769eb5ff868691befe1283"
- dependencies:
- babel-runtime "^6.18.0"
- babel-types "^6.19.0"
- private "^0.1.6"
-
-regex-cache@^0.4.2:
- version "0.4.3"
- resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145"
- dependencies:
- is-equal-shallow "^0.1.3"
- is-primitive "^2.0.0"
-
-regexpu-core@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b"
- dependencies:
- regenerate "^1.2.1"
- regjsgen "^0.2.0"
- regjsparser "^0.1.4"
-
-regexpu-core@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240"
- dependencies:
- regenerate "^1.2.1"
- regjsgen "^0.2.0"
- regjsparser "^0.1.4"
-
-regjsgen@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7"
-
-regjsparser@^0.1.4:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c"
- dependencies:
- jsesc "~0.5.0"
-
-remove-trailing-separator@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz#69b062d978727ad14dc6b56ba4ab772fd8d70511"
-
-repeat-element@^1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
-
-repeat-string@^0.2.2:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae"
-
-repeat-string@^1.5.2:
- version "1.6.1"
- resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
-
-repeating@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
- dependencies:
- is-finite "^1.0.0"
-
-request-progress@~2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-2.0.1.tgz#5d36bb57961c673aa5b788dbc8141fdf23b44e08"
- dependencies:
- throttleit "^1.0.0"
-
-request@^2.81.0:
- version "2.81.0"
- resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0"
- dependencies:
- aws-sign2 "~0.6.0"
- aws4 "^1.2.1"
- caseless "~0.12.0"
- combined-stream "~1.0.5"
- extend "~3.0.0"
- forever-agent "~0.6.1"
- form-data "~2.1.1"
- har-validator "~4.2.1"
- hawk "~3.1.3"
- http-signature "~1.1.0"
- is-typedarray "~1.0.0"
- isstream "~0.1.2"
- json-stringify-safe "~5.0.1"
- mime-types "~2.1.7"
- oauth-sign "~0.8.1"
- performance-now "^0.2.0"
- qs "~6.4.0"
- safe-buffer "^5.0.1"
- stringstream "~0.0.4"
- tough-cookie "~2.3.0"
- tunnel-agent "^0.6.0"
- uuid "^3.0.0"
-
-request@~2.79.0:
- version "2.79.0"
- resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de"
- dependencies:
- aws-sign2 "~0.6.0"
- aws4 "^1.2.1"
- caseless "~0.11.0"
- combined-stream "~1.0.5"
- extend "~3.0.0"
- forever-agent "~0.6.1"
- form-data "~2.1.1"
- har-validator "~2.0.6"
- hawk "~3.1.3"
- http-signature "~1.1.0"
- is-typedarray "~1.0.0"
- isstream "~0.1.2"
- json-stringify-safe "~5.0.1"
- mime-types "~2.1.7"
- oauth-sign "~0.8.1"
- qs "~6.3.0"
- stringstream "~0.0.4"
- tough-cookie "~2.3.0"
- tunnel-agent "~0.4.1"
- uuid "^3.0.0"
-
-require-uncached@^1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3"
- dependencies:
- caller-path "^0.1.0"
- resolve-from "^1.0.0"
-
-requires-port@1.0.x, requires-port@1.x.x:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
-
-resolve-from@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226"
-
-resolve@1.1.x:
- version "1.1.7"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
-
-resolve@^1.1.6:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.4.0.tgz#a75be01c53da25d934a98ebd0e4c4a7312f92a86"
- dependencies:
- path-parse "^1.0.5"
-
-restore-cursor@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541"
- dependencies:
- exit-hook "^1.0.0"
- onetime "^1.0.0"
-
-right-align@^0.1.1:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
- dependencies:
- align-text "^0.1.1"
-
-rimraf@2, rimraf@^2.2.8, rimraf@^2.4.3, rimraf@^2.5.1, rimraf@^2.6.0, rimraf@^2.6.1:
- version "2.6.1"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d"
- dependencies:
- glob "^7.0.5"
-
-ripemd160@0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-0.2.0.tgz#2bf198bde167cacfa51c0a928e84b68bbe171fce"
-
-run-async@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389"
- dependencies:
- once "^1.3.0"
-
-rx-lite@^3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102"
-
-safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
-
-sax@~1.2.1:
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
-
-"semver@2 || 3 || 4 || 5", semver@^5.3.0:
- version "5.4.1"
- resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e"
-
-semver@~4.3.3:
- version "4.3.6"
- resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da"
-
-send@0.15.3:
- version "0.15.3"
- resolved "https://registry.yarnpkg.com/send/-/send-0.15.3.tgz#5013f9f99023df50d1bd9892c19e3defd1d53309"
- dependencies:
- debug "2.6.7"
- depd "~1.1.0"
- destroy "~1.0.4"
- encodeurl "~1.0.1"
- escape-html "~1.0.3"
- etag "~1.8.0"
- fresh "0.5.0"
- http-errors "~1.6.1"
- mime "1.3.4"
- ms "2.0.0"
- on-finished "~2.3.0"
- range-parser "~1.2.0"
- statuses "~1.3.1"
-
-serve-index@^1.7.2:
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.0.tgz#d2b280fc560d616ee81b48bf0fa82abed2485ce7"
- dependencies:
- accepts "~1.3.3"
- batch "0.6.1"
- debug "2.6.8"
- escape-html "~1.0.3"
- http-errors "~1.6.1"
- mime-types "~2.1.15"
- parseurl "~1.3.1"
-
-serve-static@1.12.3:
- version "1.12.3"
- resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.12.3.tgz#9f4ba19e2f3030c547f8af99107838ec38d5b1e2"
- dependencies:
- encodeurl "~1.0.1"
- escape-html "~1.0.3"
- parseurl "~1.3.1"
- send "0.15.3"
-
-set-blocking@~2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
-
-set-immediate-shim@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
-
-setimmediate@^1.0.4, setimmediate@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
-
-setprototypeof@1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04"
-
-sha.js@2.2.6:
- version "2.2.6"
- resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.2.6.tgz#17ddeddc5f722fb66501658895461977867315ba"
-
-shelljs@^0.7.5:
- version "0.7.8"
- resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.8.tgz#decbcf874b0d1e5fb72e14b164a9683048e9acb3"
- dependencies:
- glob "^7.0.0"
- interpret "^1.0.0"
- rechoir "^0.6.2"
-
-signal-exit@^3.0.0:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
-
-slash@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
-
-slice-ansi@0.0.4:
- version "0.0.4"
- resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35"
-
-sntp@1.x.x:
- version "1.0.9"
- resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
- dependencies:
- hoek "2.x.x"
-
-socket.io-adapter@0.5.0:
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b"
- dependencies:
- debug "2.3.3"
- socket.io-parser "2.3.1"
-
-socket.io-client@1.7.3:
- version "1.7.3"
- resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.7.3.tgz#b30e86aa10d5ef3546601c09cde4765e381da377"
- dependencies:
- backo2 "1.0.2"
- component-bind "1.0.0"
- component-emitter "1.2.1"
- debug "2.3.3"
- engine.io-client "1.8.3"
- has-binary "0.1.7"
- indexof "0.0.1"
- object-component "0.0.3"
- parseuri "0.0.5"
- socket.io-parser "2.3.1"
- to-array "0.1.4"
-
-socket.io-parser@2.3.1:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0"
- dependencies:
- component-emitter "1.1.2"
- debug "2.2.0"
- isarray "0.0.1"
- json3 "3.3.2"
-
-socket.io@1.7.3:
- version "1.7.3"
- resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.7.3.tgz#b8af9caba00949e568e369f1327ea9be9ea2461b"
- dependencies:
- debug "2.3.3"
- engine.io "1.8.3"
- has-binary "0.1.7"
- object-assign "4.1.0"
- socket.io-adapter "0.5.0"
- socket.io-client "1.7.3"
- socket.io-parser "2.3.1"
-
-sockjs-client@^1.0.3:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.4.tgz#5babe386b775e4cf14e7520911452654016c8b12"
- dependencies:
- debug "^2.6.6"
- eventsource "0.1.6"
- faye-websocket "~0.11.0"
- inherits "^2.0.1"
- json3 "^3.3.2"
- url-parse "^1.1.8"
-
-sockjs@^0.3.15:
- version "0.3.18"
- resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.18.tgz#d9b289316ca7df77595ef299e075f0f937eb4207"
- dependencies:
- faye-websocket "^0.10.0"
- uuid "^2.0.2"
-
-sort-keys@^1.0.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad"
- dependencies:
- is-plain-obj "^1.0.0"
-
-source-list-map@^0.1.4, source-list-map@~0.1.7:
- version "0.1.8"
- resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106"
-
-source-map-support@^0.4.2:
- version "0.4.15"
- resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.15.tgz#03202df65c06d2bd8c7ec2362a193056fef8d3b1"
- dependencies:
- source-map "^0.5.6"
-
-source-map@^0.1.41:
- version "0.1.43"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346"
- dependencies:
- amdefine ">=0.0.4"
-
-source-map@^0.4.4, source-map@~0.4.1:
- version "0.4.4"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
- dependencies:
- amdefine ">=0.0.4"
-
-source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1:
- version "0.5.6"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
-
-source-map@~0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d"
- dependencies:
- amdefine ">=0.0.4"
-
-spdx-correct@~1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40"
- dependencies:
- spdx-license-ids "^1.0.2"
-
-spdx-expression-parse@~1.0.0:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c"
-
-spdx-license-ids@^1.0.2:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57"
-
-sprintf-js@~1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
-
-sshpk@^1.7.0:
- version "1.13.1"
- resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3"
- dependencies:
- asn1 "~0.2.3"
- assert-plus "^1.0.0"
- dashdash "^1.12.0"
- getpass "^0.1.1"
- optionalDependencies:
- bcrypt-pbkdf "^1.0.0"
- ecc-jsbn "~0.1.1"
- jsbn "~0.1.0"
- tweetnacl "~0.14.0"
-
-"statuses@>= 1.3.1 < 2", statuses@~1.3.1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e"
-
-stream-browserify@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db"
- dependencies:
- inherits "~2.0.1"
- readable-stream "^2.0.2"
-
-stream-cache@~0.0.1:
- version "0.0.2"
- resolved "https://registry.yarnpkg.com/stream-cache/-/stream-cache-0.0.2.tgz#1ac5ad6832428ca55667dbdee395dad4e6db118f"
-
-stream-http@^2.3.1:
- version "2.7.2"
- resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.2.tgz#40a050ec8dc3b53b33d9909415c02c0bf1abfbad"
- dependencies:
- builtin-status-codes "^3.0.0"
- inherits "^2.0.1"
- readable-stream "^2.2.6"
- to-arraybuffer "^1.0.0"
- xtend "^4.0.0"
-
-strict-uri-encode@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
-
-string-width@^1.0.1, string-width@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
- dependencies:
- code-point-at "^1.0.0"
- is-fullwidth-code-point "^1.0.0"
- strip-ansi "^3.0.0"
-
-string-width@^2.0.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
- dependencies:
- is-fullwidth-code-point "^2.0.0"
- strip-ansi "^4.0.0"
-
-string_decoder@^0.10.25, string_decoder@~0.10.x:
- version "0.10.31"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
-
-string_decoder@~1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab"
- dependencies:
- safe-buffer "~5.1.0"
-
-stringstream@~0.0.4:
- version "0.0.5"
- resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
-
-strip-ansi@^3.0.0, strip-ansi@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
- dependencies:
- ansi-regex "^2.0.0"
-
-strip-ansi@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
- dependencies:
- ansi-regex "^3.0.0"
-
-strip-ansi@~0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991"
-
-strip-bom@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
- dependencies:
- is-utf8 "^0.2.0"
-
-strip-bom@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
-
-strip-indent@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2"
- dependencies:
- get-stdin "^4.0.1"
-
-strip-json-comments@~2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
-
-style-loader@^0.13.0:
- version "0.13.2"
- resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.13.2.tgz#74533384cf698c7104c7951150b49717adc2f3bb"
- dependencies:
- loader-utils "^1.0.2"
-
-supports-color@3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5"
- dependencies:
- has-flag "^1.0.0"
-
-supports-color@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
-
-supports-color@^3.1.0, supports-color@^3.1.1, supports-color@^3.2.3:
- version "3.2.3"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6"
- dependencies:
- has-flag "^1.0.0"
-
-supports-color@^4.0.0, supports-color@^4.2.0:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.2.1.tgz#65a4bb2631e90e02420dba5554c375a4754bb836"
- dependencies:
- has-flag "^2.0.0"
-
-svgo@^0.7.0:
- version "0.7.2"
- resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5"
- dependencies:
- coa "~1.0.1"
- colors "~1.1.2"
- csso "~2.3.1"
- js-yaml "~3.7.0"
- mkdirp "~0.5.1"
- sax "~1.2.1"
- whet.extend "~0.9.9"
-
-table@^3.7.8:
- version "3.8.3"
- resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f"
- dependencies:
- ajv "^4.7.0"
- ajv-keywords "^1.0.0"
- chalk "^1.1.1"
- lodash "^4.0.0"
- slice-ansi "0.0.4"
- string-width "^2.0.0"
-
-tapable@^0.1.8, tapable@~0.1.8:
- version "0.1.10"
- resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.1.10.tgz#29c35707c2b70e50d07482b5d202e8ed446dafd4"
-
-tar-pack@^3.4.0:
- version "3.4.0"
- resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984"
- dependencies:
- debug "^2.2.0"
- fstream "^1.0.10"
- fstream-ignore "^1.0.5"
- once "^1.3.3"
- readable-stream "^2.1.4"
- rimraf "^2.5.1"
- tar "^2.2.1"
- uid-number "^0.0.6"
-
-tar@^2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
- dependencies:
- block-stream "*"
- fstream "^1.0.2"
- inherits "2"
-
-text-table@~0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
-
-throttleit@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c"
-
-through2@^2.0.1:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be"
- dependencies:
- readable-stream "^2.1.5"
- xtend "~4.0.1"
-
-through@^2.3.6:
- version "2.3.8"
- resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
-
-time-stamp@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-2.0.0.tgz#95c6a44530e15ba8d6f4a3ecb8c3a3fac46da357"
-
-timers-browserify@^2.0.2:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.3.tgz#41fd0bdc926a5feedc33a17a8e1f7d491925f7fc"
- dependencies:
- global "^4.3.2"
- setimmediate "^1.0.4"
-
-tmp@0.0.31, tmp@0.0.x:
- version "0.0.31"
- resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7"
- dependencies:
- os-tmpdir "~1.0.1"
-
-to-array@0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890"
-
-to-arraybuffer@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
-
-to-fast-properties@^1.0.1:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47"
-
-tough-cookie@~2.3.0:
- version "2.3.2"
- resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a"
- dependencies:
- punycode "^1.4.1"
-
-trim-newlines@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
-
-trim-right@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
-
-tryit@^1.0.1:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb"
-
-tty-browserify@0.0.0:
- version "0.0.0"
- resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
-
-tunnel-agent@^0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
- dependencies:
- safe-buffer "^5.0.1"
-
-tunnel-agent@~0.4.1:
- version "0.4.3"
- resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb"
-
-tweetnacl@^0.14.3, tweetnacl@~0.14.0:
- version "0.14.5"
- resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
-
-type-check@~0.3.2:
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
- dependencies:
- prelude-ls "~1.1.2"
-
-type-detect@0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822"
-
-type-detect@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-1.0.0.tgz#762217cc06db258ec48908a1298e8b95121e8ea2"
-
-type-is@~1.6.15:
- version "1.6.15"
- resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410"
- dependencies:
- media-typer "0.3.0"
- mime-types "~2.1.15"
-
-typedarray@^0.0.6, typedarray@~0.0.5:
- version "0.0.6"
- resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
-
-ua-parser-js@^0.7.9:
- version "0.7.14"
- resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.14.tgz#110d53fa4c3f326c121292bbeac904d2e03387ca"
-
-uglify-js@^2.6:
- version "2.8.29"
- resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd"
- dependencies:
- source-map "~0.5.1"
- yargs "~3.10.0"
- optionalDependencies:
- uglify-to-browserify "~1.0.0"
-
-uglify-js@~2.7.3:
- version "2.7.5"
- resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.7.5.tgz#4612c0c7baaee2ba7c487de4904ae122079f2ca8"
- dependencies:
- async "~0.2.6"
- source-map "~0.5.1"
- uglify-to-browserify "~1.0.0"
- yargs "~3.10.0"
-
-uglify-to-browserify@~1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
-
-uid-number@^0.0.6:
- version "0.0.6"
- resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
-
-ultron@1.0.x:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa"
-
-uncontrollable@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/uncontrollable/-/uncontrollable-4.1.0.tgz#e0358291252e1865222d90939b19f2f49f81c1a9"
- dependencies:
- invariant "^2.1.0"
-
-underscore@~1.6.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8"
-
-uniq@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
-
-uniqid@^4.0.0:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/uniqid/-/uniqid-4.1.1.tgz#89220ddf6b751ae52b5f72484863528596bb84c1"
- dependencies:
- macaddress "^0.2.8"
-
-uniqs@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02"
-
-unpipe@1.0.0, unpipe@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
-
-url-loader@^0.5.6:
- version "0.5.9"
- resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-0.5.9.tgz#cc8fea82c7b906e7777019250869e569e995c295"
- dependencies:
- loader-utils "^1.0.2"
- mime "1.3.x"
-
-url-parse@1.0.x:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b"
- dependencies:
- querystringify "0.0.x"
- requires-port "1.0.x"
-
-url-parse@^1.1.8:
- version "1.1.9"
- resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.1.9.tgz#c67f1d775d51f0a18911dd7b3ffad27bb9e5bd19"
- dependencies:
- querystringify "~1.0.0"
- requires-port "1.0.x"
-
-url@^0.11.0:
- version "0.11.0"
- resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
- dependencies:
- punycode "1.3.2"
- querystring "0.2.0"
-
-user-home@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f"
- dependencies:
- os-homedir "^1.0.0"
-
-useragent@^2.1.12:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.2.1.tgz#cf593ef4f2d175875e8bb658ea92e18a4fd06d8e"
- dependencies:
- lru-cache "2.2.x"
- tmp "0.0.x"
-
-util-deprecate@~1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
-
-util@0.10.3, util@^0.10.3:
- version "0.10.3"
- resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
- dependencies:
- inherits "2.0.1"
-
-utils-merge@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8"
-
-uuid@^2.0.2:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a"
-
-uuid@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04"
-
-validate-npm-package-license@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc"
- dependencies:
- spdx-correct "~1.0.0"
- spdx-expression-parse "~1.0.0"
-
-vary@~1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.1.tgz#67535ebb694c1d52257457984665323f587e8d37"
-
-vendors@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22"
-
-verror@1.3.6:
- version "1.3.6"
- resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c"
- dependencies:
- extsprintf "1.0.2"
-
-vm-browserify@0.0.4:
- version "0.0.4"
- resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73"
- dependencies:
- indexof "0.0.1"
-
-void-elements@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec"
-
-warning@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c"
- dependencies:
- loose-envify "^1.0.0"
-
-watchpack@^0.2.1:
- version "0.2.9"
- resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-0.2.9.tgz#62eaa4ab5e5ba35fdfc018275626e3c0f5e3fb0b"
- dependencies:
- async "^0.9.0"
- chokidar "^1.0.0"
- graceful-fs "^4.1.2"
-
-webpack-core@~0.6.9:
- version "0.6.9"
- resolved "https://registry.yarnpkg.com/webpack-core/-/webpack-core-0.6.9.tgz#fc571588c8558da77be9efb6debdc5a3b172bdc2"
- dependencies:
- source-list-map "~0.1.7"
- source-map "~0.4.1"
-
-webpack-dev-middleware@^1.0.11, webpack-dev-middleware@^1.10.2:
- version "1.12.0"
- resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.12.0.tgz#d34efefb2edda7e1d3b5dbe07289513219651709"
- dependencies:
- memory-fs "~0.4.1"
- mime "^1.3.4"
- path-is-absolute "^1.0.0"
- range-parser "^1.0.3"
- time-stamp "^2.0.0"
-
-webpack-dev-server@^1.12.0:
- version "1.16.5"
- resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-1.16.5.tgz#0cbd5f2d2ac8d4e593aacd5c9702e7bbd5e59892"
- dependencies:
- compression "^1.5.2"
- connect-history-api-fallback "^1.3.0"
- express "^4.13.3"
- http-proxy-middleware "~0.17.1"
- open "0.0.5"
- optimist "~0.6.1"
- serve-index "^1.7.2"
- sockjs "^0.3.15"
- sockjs-client "^1.0.3"
- stream-cache "~0.0.1"
- strip-ansi "^3.0.0"
- supports-color "^3.1.1"
- webpack-dev-middleware "^1.10.2"
-
-webpack@^1.12.0:
- version "1.15.0"
- resolved "https://registry.yarnpkg.com/webpack/-/webpack-1.15.0.tgz#4ff31f53db03339e55164a9d468ee0324968fe98"
- dependencies:
- acorn "^3.0.0"
- async "^1.3.0"
- clone "^1.0.2"
- enhanced-resolve "~0.9.0"
- interpret "^0.6.4"
- loader-utils "^0.2.11"
- memory-fs "~0.3.0"
- mkdirp "~0.5.0"
- node-libs-browser "^0.7.0"
- optimist "~0.6.0"
- supports-color "^3.1.0"
- tapable "~0.1.8"
- uglify-js "~2.7.3"
- watchpack "^0.2.1"
- webpack-core "~0.6.9"
-
-websocket-driver@>=0.5.1:
- version "0.6.5"
- resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36"
- dependencies:
- websocket-extensions ">=0.1.1"
-
-websocket-extensions@>=0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.1.tgz#76899499c184b6ef754377c2dbb0cd6cb55d29e7"
-
-whatwg-fetch@>=0.10.0:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84"
-
-whet.extend@~0.9.9:
- version "0.9.9"
- resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1"
-
-which@^1.0.9, which@^1.1.1, which@~1.2.10:
- version "1.2.14"
- resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5"
- dependencies:
- isexe "^2.0.0"
-
-wide-align@^1.1.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710"
- dependencies:
- string-width "^1.0.2"
-
-window-size@0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
-
-wordwrap@0.0.2:
- version "0.0.2"
- resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
-
-wordwrap@^1.0.0, wordwrap@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
-
-wordwrap@~0.0.2:
- version "0.0.3"
- resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
-
-wrappy@1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
-
-write@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757"
- dependencies:
- mkdirp "^0.5.1"
-
-ws@1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f"
- dependencies:
- options ">=0.0.5"
- ultron "1.0.x"
-
-wtf-8@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a"
-
-xmlhttprequest-ssl@1.5.3:
- version "1.5.3"
- resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d"
-
-xtend@^4.0.0, xtend@~4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
-
-yargs@~3.10.0:
- version "3.10.0"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"
- dependencies:
- camelcase "^1.0.2"
- cliui "^2.1.0"
- decamelize "^1.0.0"
- window-size "0.1.0"
-
-yauzl@2.4.1:
- version "2.4.1"
- resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005"
- dependencies:
- fd-slicer "~1.0.1"
-
-yeast@0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419"
diff --git a/README.md b/README.md
index d04dfc50..6755258d 100644
--- a/README.md
+++ b/README.md
@@ -2,15 +2,22 @@

-## Docs and Example Code
-This repository contains a [wiki](https://github.com/tableau/ProjectFrelard/wiki) which contains developer documentation. You are encouraged to use it and also contribute.
-Example code can be found in the folder called [Examples/ReactJs](https://github.com/tableau/ProjectFrelard/tree/master/Examples/ReactJs). Note: running the examples requires you to have [Node.js](http://nodejs.org) installed.
+## Setup and Running Samples
-Use [Issues](https://github.com/tableau/ProjectFrelard/issues) to log any problems or bugs you encounter in the docs or example code.
+### Pre-requisites
+* You must have Node.js and npm installed. You can get these from [http://nodejs.org](http://nodejs.org).
+
+### Setup
+1. Copy the `.trex` files of the sample you wish to run to `~\Documents\My Tableau Repository (Beta)\Extensions` so they are available to Tableau.
+2. Open a command prompt window to the location where you cloned this repo.
+3. Run `npm install`.
+4. Run `npm start`.
+5. Launch Tableau and use the sample in a dashboard.
## Known Issues (as of June 14, 2017)
+Use [Issues](https://github.com/tableau/ProjectFrelard/issues) to log any problems or bugs you encounter in the docs or sample code.
### Unhanded Exceptions During Interop (Qt Browser)
When invoking something from JS over to the C++ code, if there is an unhanded exception the Qt browser seems to become completely messed up and will not set up the web channel communications correctly any more until the process is restarted. This means if you get an exception which escapes, you might need to restart tableau in order to get things working again.
diff --git a/Samples/DataSources/DataSources.trex b/Samples/DataSources/DataSources.trex
new file mode 100644
index 00000000..0c58411a
--- /dev/null
+++ b/Samples/DataSources/DataSources.trex
@@ -0,0 +1,22 @@
+
+
+
+ en_US
+
+ DataSources Sample
+
+
+
+
+ 1.1
+
+ http://localhost:8765/samples/datasources/datasources.html
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAlhJREFUOI2Nkt9vy1EYh5/3bbsvRSySCZbIxI+ZCKsN2TKtSFyIrV2WuRCJuBiJWxfuxCVXbvwFgiEtposgLFJElnbU1SxIZIIRJDKTrdu+53Uhra4mce7Oe57Pcz7JOULFisViwZ+29LAzOSjQYDgz1ZcCvWuXV11MJpN+OS/lm6179teqH0yDqxPTCyKSA8DcDsyOmOprnCaeP7459pdgy969i0LTC3IO/RQMyoHcQN+3cnljW3dNIFC47qDaK3g7BwdTkwBaBELT4ZPOUVWgKl4ZBnjxJPUlMDnTDrp0pmr6RHFeEjjcUUXPDGeSEwDN0Xg8sivxMhJNjGzbHd8PkM3eHRfkrBM5NkcQaY2vUnTlrDIA0NoaX+KLXFFlowr14tvVpqb2MICzmQcKqxvbumv+NAhZGCCIPwEw6QWXKYRL/VUXO0+rAUJiPwAk5MIlgVfwPjjHLCL1APmHN94ZdqeYN+NW/mn6I4BvwQYchcLnwFhJMDiYmlRxAzjpKWZkYkUCcZ2I61wi37tLbYyjiN0fHk5Oz3nGSLSzBbNHCF35R7f6K1/hN9PRhek11FrymfQQQKB4+Gl05P2qNRtmETlXW7e+b2z01dfycGNbfFMAbqNyKp9Jp4rzOT8RYFs0njJkc2iqsCObvTsOsDWWqA5C1uFy+Uz/oXJeKwVT4h0RmPUXhi79vuC0Ku6yOffTK3g9lfxfDQAisY516sg5kfOCiJk7HoLt2cf9b/9LANAc7dznm98PagG1fUOZ9IP5uMB8Q4CPoyNvausapkTt3rNMuvdf3C/o6+czhtdwmwAAAABJRU5ErkJggg==
+
+
+
+ DataSources Sample
+
+
+
diff --git a/Examples/HelloFrelard/index.html b/Samples/DataSources/datasources.html
similarity index 59%
rename from Examples/HelloFrelard/index.html
rename to Samples/DataSources/datasources.html
index de09e156..c2318a64 100644
--- a/Examples/HelloFrelard/index.html
+++ b/Samples/DataSources/datasources.html
@@ -5,7 +5,7 @@
- Hello Frelard
+ Datasources Sample
@@ -14,18 +14,16 @@
-
-
+
+
-
-
+
+
-
Hello Frelard
-
Not Initialized
-
Initialize AddIn Api
+
DataSources Sample
diff --git a/Samples/DataSources/datasources.js b/Samples/DataSources/datasources.js
new file mode 100644
index 00000000..0ffdd02f
--- /dev/null
+++ b/Samples/DataSources/datasources.js
@@ -0,0 +1 @@
+// TODO
\ No newline at end of file
diff --git a/Examples/ReactJs/AddIns/SettingsDemo.trex b/Samples/Filtering/Filtering.trex
similarity index 79%
rename from Examples/ReactJs/AddIns/SettingsDemo.trex
rename to Samples/Filtering/Filtering.trex
index 870b9e41..67bfb9d0 100644
--- a/Examples/ReactJs/AddIns/SettingsDemo.trex
+++ b/Samples/Filtering/Filtering.trex
@@ -1,22 +1,22 @@
-
+
en_US
- Demonstrates Using the Settings Api
+ Filtering Sample
-
+
1.1
- http://localhost:8000#settings
+ http://localhost:8765/samples/filtering/filtering.html
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAlhJREFUOI2Nkt9vy1EYh5/3bbsvRSySCZbIxI+ZCKsN2TKtSFyIrV2WuRCJuBiJWxfuxCVXbvwFgiEtposgLFJElnbU1SxIZIIRJDKTrdu+53Uhra4mce7Oe57Pcz7JOULFisViwZ+29LAzOSjQYDgz1ZcCvWuXV11MJpN+OS/lm6179teqH0yDqxPTCyKSA8DcDsyOmOprnCaeP7459pdgy969i0LTC3IO/RQMyoHcQN+3cnljW3dNIFC47qDaK3g7BwdTkwBaBELT4ZPOUVWgKl4ZBnjxJPUlMDnTDrp0pmr6RHFeEjjcUUXPDGeSEwDN0Xg8sivxMhJNjGzbHd8PkM3eHRfkrBM5NkcQaY2vUnTlrDIA0NoaX+KLXFFlowr14tvVpqb2MICzmQcKqxvbumv+NAhZGCCIPwEw6QWXKYRL/VUXO0+rAUJiPwAk5MIlgVfwPjjHLCL1APmHN94ZdqeYN+NW/mn6I4BvwQYchcLnwFhJMDiYmlRxAzjpKWZkYkUCcZ2I61wi37tLbYyjiN0fHk5Oz3nGSLSzBbNHCF35R7f6K1/hN9PRhek11FrymfQQQKB4+Gl05P2qNRtmETlXW7e+b2z01dfycGNbfFMAbqNyKp9Jp4rzOT8RYFs0njJkc2iqsCObvTsOsDWWqA5C1uFy+Uz/oXJeKwVT4h0RmPUXhi79vuC0Ku6yOffTK3g9lfxfDQAisY516sg5kfOCiJk7HoLt2cf9b/9LANAc7dznm98PagG1fUOZ9IP5uMB8Q4CPoyNvausapkTt3rNMuvdf3C/o6+czhtdwmwAAAABJRU5ErkJggg==
- Settings Demo
+ Filtering Sample
diff --git a/Samples/Filtering/filtering.html b/Samples/Filtering/filtering.html
new file mode 100644
index 00000000..f5cddaef
--- /dev/null
+++ b/Samples/Filtering/filtering.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+ Filtering Sample
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Samples/Filtering/filtering.js b/Samples/Filtering/filtering.js
new file mode 100644
index 00000000..ea641885
--- /dev/null
+++ b/Samples/Filtering/filtering.js
@@ -0,0 +1 @@
+//TODO
\ No newline at end of file
diff --git a/Examples/ReactJs/AddIns/EnvironmentDemo.trex b/Samples/Parameters/Parameters.trex
similarity index 79%
rename from Examples/ReactJs/AddIns/EnvironmentDemo.trex
rename to Samples/Parameters/Parameters.trex
index 9ad3a946..659d0283 100644
--- a/Examples/ReactJs/AddIns/EnvironmentDemo.trex
+++ b/Samples/Parameters/Parameters.trex
@@ -1,22 +1,22 @@
-
+
en_US
- Demonstrates Using the Envirionment Api
+ Parameters Sample
-
+
1.1
- http://localhost:8000#environment
+ http://localhost:8765/samples/parameters/parameters.html
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAlhJREFUOI2Nkt9vy1EYh5/3bbsvRSySCZbIxI+ZCKsN2TKtSFyIrV2WuRCJuBiJWxfuxCVXbvwFgiEtposgLFJElnbU1SxIZIIRJDKTrdu+53Uhra4mce7Oe57Pcz7JOULFisViwZ+29LAzOSjQYDgz1ZcCvWuXV11MJpN+OS/lm6179teqH0yDqxPTCyKSA8DcDsyOmOprnCaeP7459pdgy969i0LTC3IO/RQMyoHcQN+3cnljW3dNIFC47qDaK3g7BwdTkwBaBELT4ZPOUVWgKl4ZBnjxJPUlMDnTDrp0pmr6RHFeEjjcUUXPDGeSEwDN0Xg8sivxMhJNjGzbHd8PkM3eHRfkrBM5NkcQaY2vUnTlrDIA0NoaX+KLXFFlowr14tvVpqb2MICzmQcKqxvbumv+NAhZGCCIPwEw6QWXKYRL/VUXO0+rAUJiPwAk5MIlgVfwPjjHLCL1APmHN94ZdqeYN+NW/mn6I4BvwQYchcLnwFhJMDiYmlRxAzjpKWZkYkUCcZ2I61wi37tLbYyjiN0fHk5Oz3nGSLSzBbNHCF35R7f6K1/hN9PRhek11FrymfQQQKB4+Gl05P2qNRtmETlXW7e+b2z01dfycGNbfFMAbqNyKp9Jp4rzOT8RYFs0njJkc2iqsCObvTsOsDWWqA5C1uFy+Uz/oXJeKwVT4h0RmPUXhi79vuC0Ku6yOffTK3g9lfxfDQAisY516sg5kfOCiJk7HoLt2cf9b/9LANAc7dznm98PagG1fUOZ9IP5uMB8Q4CPoyNvausapkTt3rNMuvdf3C/o6+czhtdwmwAAAABJRU5ErkJggg==
- Environment Demo
+ Parameters Sample
diff --git a/Samples/Parameters/parameters.html b/Samples/Parameters/parameters.html
new file mode 100644
index 00000000..06681702
--- /dev/null
+++ b/Samples/Parameters/parameters.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+ Parameters Sample
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Parameters Sample
+
+
+
+
diff --git a/Samples/Parameters/parameters.js b/Samples/Parameters/parameters.js
new file mode 100644
index 00000000..ea641885
--- /dev/null
+++ b/Samples/Parameters/parameters.js
@@ -0,0 +1 @@
+//TODO
\ No newline at end of file
diff --git a/Examples/HelloFrelard/AddIns/HelloFrelard.trex b/Samples/Settings/Settings.trex
similarity index 79%
rename from Examples/HelloFrelard/AddIns/HelloFrelard.trex
rename to Samples/Settings/Settings.trex
index 1303ee94..7aaab0a1 100644
--- a/Examples/HelloFrelard/AddIns/HelloFrelard.trex
+++ b/Samples/Settings/Settings.trex
@@ -1,22 +1,22 @@
-
+
en_US
- Simple Initialization Sample
+ Settings Sample
-
+
1.1
- http://localhost:8765
+ http://localhost:8765/samples/settings/settings.html
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAlhJREFUOI2Nkt9vy1EYh5/3bbsvRSySCZbIxI+ZCKsN2TKtSFyIrV2WuRCJuBiJWxfuxCVXbvwFgiEtposgLFJElnbU1SxIZIIRJDKTrdu+53Uhra4mce7Oe57Pcz7JOULFisViwZ+29LAzOSjQYDgz1ZcCvWuXV11MJpN+OS/lm6179teqH0yDqxPTCyKSA8DcDsyOmOprnCaeP7459pdgy969i0LTC3IO/RQMyoHcQN+3cnljW3dNIFC47qDaK3g7BwdTkwBaBELT4ZPOUVWgKl4ZBnjxJPUlMDnTDrp0pmr6RHFeEjjcUUXPDGeSEwDN0Xg8sivxMhJNjGzbHd8PkM3eHRfkrBM5NkcQaY2vUnTlrDIA0NoaX+KLXFFlowr14tvVpqb2MICzmQcKqxvbumv+NAhZGCCIPwEw6QWXKYRL/VUXO0+rAUJiPwAk5MIlgVfwPjjHLCL1APmHN94ZdqeYN+NW/mn6I4BvwQYchcLnwFhJMDiYmlRxAzjpKWZkYkUCcZ2I61wi37tLbYyjiN0fHk5Oz3nGSLSzBbNHCF35R7f6K1/hN9PRhek11FrymfQQQKB4+Gl05P2qNRtmETlXW7e+b2z01dfycGNbfFMAbqNyKp9Jp4rzOT8RYFs0njJkc2iqsCObvTsOsDWWqA5C1uFy+Uz/oXJeKwVT4h0RmPUXhi79vuC0Ku6yOffTK3g9lfxfDQAisY516sg5kfOCiJk7HoLt2cf9b/9LANAc7dznm98PagG1fUOZ9IP5uMB8Q4CPoyNvausapkTt3rNMuvdf3C/o6+czhtdwmwAAAABJRU5ErkJggg==
- Hello Frelard
+ Settings Sample
diff --git a/Samples/Settings/settings.html b/Samples/Settings/settings.html
new file mode 100644
index 00000000..654d270b
--- /dev/null
+++ b/Samples/Settings/settings.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+ Settings Sample
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Samples/Settings/settings.js b/Samples/Settings/settings.js
new file mode 100644
index 00000000..ea641885
--- /dev/null
+++ b/Samples/Settings/settings.js
@@ -0,0 +1 @@
+//TODO
\ No newline at end of file
diff --git a/Tutorial/React/README.md b/Tutorial/React/README.md
new file mode 100644
index 00000000..bb64e928
--- /dev/null
+++ b/Tutorial/React/README.md
@@ -0,0 +1 @@
+TODO, explain how to setup React sample.
\ No newline at end of file
diff --git a/Tutorial/React/TutorialReact.trex b/Tutorial/React/TutorialReact.trex
new file mode 100644
index 00000000..f62d75e9
--- /dev/null
+++ b/Tutorial/React/TutorialReact.trex
@@ -0,0 +1,22 @@
+
+
+
+ en_US
+
+ Extensions Tutorial (React)
+
+
+
+
+ 1.1
+
+ http://localhost:8765/tutorial/react/index.html
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAlhJREFUOI2Nkt9vy1EYh5/3bbsvRSySCZbIxI+ZCKsN2TKtSFyIrV2WuRCJuBiJWxfuxCVXbvwFgiEtposgLFJElnbU1SxIZIIRJDKTrdu+53Uhra4mce7Oe57Pcz7JOULFisViwZ+29LAzOSjQYDgz1ZcCvWuXV11MJpN+OS/lm6179teqH0yDqxPTCyKSA8DcDsyOmOprnCaeP7459pdgy969i0LTC3IO/RQMyoHcQN+3cnljW3dNIFC47qDaK3g7BwdTkwBaBELT4ZPOUVWgKl4ZBnjxJPUlMDnTDrp0pmr6RHFeEjjcUUXPDGeSEwDN0Xg8sivxMhJNjGzbHd8PkM3eHRfkrBM5NkcQaY2vUnTlrDIA0NoaX+KLXFFlowr14tvVpqb2MICzmQcKqxvbumv+NAhZGCCIPwEw6QWXKYRL/VUXO0+rAUJiPwAk5MIlgVfwPjjHLCL1APmHN94ZdqeYN+NW/mn6I4BvwQYchcLnwFhJMDiYmlRxAzjpKWZkYkUCcZ2I61wi37tLbYyjiN0fHk5Oz3nGSLSzBbNHCF35R7f6K1/hN9PRhek11FrymfQQQKB4+Gl05P2qNRtmETlXW7e+b2z01dfycGNbfFMAbqNyKp9Jp4rzOT8RYFs0njJkc2iqsCObvTsOsDWWqA5C1uFy+Uz/oXJeKwVT4h0RmPUXhi79vuC0Ku6yOffTK3g9lfxfDQAisY516sg5kfOCiJk7HoLt2cf9b/9LANAc7dznm98PagG1fUOZ9IP5uMB8Q4CPoyNvausapkTt3rNMuvdf3C/o6+czhtdwmwAAAABJRU5ErkJggg==
+
+
+
+ Extensions Tutorial (React)
+
+
+
diff --git a/Tutorial/Standard/README.md b/Tutorial/Standard/README.md
new file mode 100644
index 00000000..8504d567
--- /dev/null
+++ b/Tutorial/Standard/README.md
@@ -0,0 +1 @@
+link to actual tutorial
\ No newline at end of file
diff --git a/Examples/ReactJs/AddIns/GetDataDemo.trex b/Tutorial/Standard/Tutorial.trex
similarity index 79%
rename from Examples/ReactJs/AddIns/GetDataDemo.trex
rename to Tutorial/Standard/Tutorial.trex
index 7927cd27..2df623a8 100644
--- a/Examples/ReactJs/AddIns/GetDataDemo.trex
+++ b/Tutorial/Standard/Tutorial.trex
@@ -1,22 +1,22 @@
-
+
en_US
- Demonstrates Using the getData Api
+ Extensions Tutorial
-
+
1.1
- http://localhost:8000#getData
+ http://localhost:8765/tutorial/standard/index.html
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAlhJREFUOI2Nkt9vy1EYh5/3bbsvRSySCZbIxI+ZCKsN2TKtSFyIrV2WuRCJuBiJWxfuxCVXbvwFgiEtposgLFJElnbU1SxIZIIRJDKTrdu+53Uhra4mce7Oe57Pcz7JOULFisViwZ+29LAzOSjQYDgz1ZcCvWuXV11MJpN+OS/lm6179teqH0yDqxPTCyKSA8DcDsyOmOprnCaeP7459pdgy969i0LTC3IO/RQMyoHcQN+3cnljW3dNIFC47qDaK3g7BwdTkwBaBELT4ZPOUVWgKl4ZBnjxJPUlMDnTDrp0pmr6RHFeEjjcUUXPDGeSEwDN0Xg8sivxMhJNjGzbHd8PkM3eHRfkrBM5NkcQaY2vUnTlrDIA0NoaX+KLXFFlowr14tvVpqb2MICzmQcKqxvbumv+NAhZGCCIPwEw6QWXKYRL/VUXO0+rAUJiPwAk5MIlgVfwPjjHLCL1APmHN94ZdqeYN+NW/mn6I4BvwQYchcLnwFhJMDiYmlRxAzjpKWZkYkUCcZ2I61wi37tLbYyjiN0fHk5Oz3nGSLSzBbNHCF35R7f6K1/hN9PRhek11FrymfQQQKB4+Gl05P2qNRtmETlXW7e+b2z01dfycGNbfFMAbqNyKp9Jp4rzOT8RYFs0njJkc2iqsCObvTsOsDWWqA5C1uFy+Uz/oXJeKwVT4h0RmPUXhi79vuC0Ku6yOffTK3g9lfxfDQAisY516sg5kfOCiJk7HoLt2cf9b/9LANAc7dznm98PagG1fUOZ9IP5uMB8Q4CPoyNvausapkTt3rNMuvdf3C/o6+czhtdwmwAAAABJRU5ErkJggg==
- Get Data Demo
+ Extensions Tutorial
diff --git a/Examples/HelloFrelard/tableau-addin-0.4.0.js b/lib/tableau-extensions-0.6.0.js
similarity index 75%
rename from Examples/HelloFrelard/tableau-addin-0.4.0.js
rename to lib/tableau-extensions-0.6.0.js
index 8287da07..ead58eec 100644
--- a/Examples/HelloFrelard/tableau-addin-0.4.0.js
+++ b/lib/tableau-extensions-0.6.0.js
@@ -163,8 +163,8 @@ return /******/ (function(modules) { // webpackBootstrap
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);
+ this._apiExtensionLocator = this._presLayerToApiRegistry
+ .get(Params_1.ParameterId.AddInLocator, api_internal_contract_1.ParameterId.ExtensionLocator)(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
@@ -197,7 +197,7 @@ return /******/ (function(modules) { // webpackBootstrap
parameters = parameters || {};
// Augment the command with the locator if it's needed
if (command.needsAddInLocator) {
- parameters[api_internal_contract_1.ParameterId.AddInLocator] = this._apiAddInLocator;
+ parameters[api_internal_contract_1.ParameterId.ExtensionLocator] = this._apiExtensionLocator;
}
var commandsParams = command.createParams(parameters, this._apiToPresLayerRegistry);
return this._presLayer.invokeCommand(command.namespace, command.commandId, commandsParams)
@@ -265,18 +265,18 @@ return /******/ (function(modules) { // webpackBootstrap
"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 ExtensionContext;
+ (function (ExtensionContext) {
+ ExtensionContext["Desktop"] = "desktop";
+ ExtensionContext["Server"] = "server";
+ ExtensionContext["Unknown"] = "unknown";
+ })(ExtensionContext = exports.ExtensionContext || (exports.ExtensionContext = {}));
+ var ExtensionMode;
+ (function (ExtensionMode) {
+ ExtensionMode["Authoring"] = "authoring";
+ ExtensionMode["Viewing"] = "viewing";
+ ExtensionMode["Unknown"] = "unknown";
+ })(ExtensionMode = exports.ExtensionMode || (exports.ExtensionMode = {}));
var ColumnType;
(function (ColumnType) {
ColumnType["Discrete"] = "discrete";
@@ -294,7 +294,7 @@ return /******/ (function(modules) { // webpackBootstrap
DashboardObjectType["Text"] = "text";
DashboardObjectType["Image"] = "image";
DashboardObjectType["WebPage"] = "web-page";
- DashboardObjectType["AddIn"] = "addin";
+ DashboardObjectType["Extension"] = "extension";
})(DashboardObjectType = exports.DashboardObjectType || (exports.DashboardObjectType = {}));
var DataType;
(function (DataType) {
@@ -383,7 +383,6 @@ return /******/ (function(modules) { // webpackBootstrap
SheetType["Dashboard"] = "dashboard";
SheetType["Story"] = "story";
SheetType["Worksheet"] = "worksheet";
- SheetType["Addin"] = "addin";
})(SheetType = exports.SheetType || (exports.SheetType = {}));
var DomainRestrictionType;
(function (DomainRestrictionType) {
@@ -411,6 +410,14 @@ return /******/ (function(modules) { // webpackBootstrap
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.
*/
@@ -533,9 +540,9 @@ return /******/ (function(modules) { // webpackBootstrap
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["ExtensionLocator"] = "extension-locator";
+ ParameterId["ExtensionBootstrapInfo"] = "extension-bootstrap-info";
+ ParameterId["ExtensionSettingsInfo"] = "extension-settings-info";
ParameterId["VisualId"] = "visual-id";
ParameterId["SheetPath"] = "sheet-path";
ParameterId["IgnoreAliases"] = "ignore-aliases";
@@ -544,6 +551,7 @@ return /******/ (function(modules) { // webpackBootstrap
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";
@@ -556,6 +564,10 @@ return /******/ (function(modules) { // webpackBootstrap
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";
@@ -570,6 +582,8 @@ return /******/ (function(modules) { // webpackBootstrap
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 = {}));
@@ -585,10 +599,11 @@ return /******/ (function(modules) { // webpackBootstrap
VerbId["ApplyCategoricalFilter"] = "categorical-filter";
VerbId["ApplyRangeFilter"] = "range-filter";
VerbId["ClearFilter"] = "clear-filter";
- VerbId["InitializeAddIn"] = "initialize-add-in";
+ VerbId["InitializeExtension"] = "initialize-extension";
VerbId["GetDataSummaryData"] = "get-summary-data";
VerbId["GetUnderlyingData"] = "get-underlying-data";
- VerbId["SaveAddInSettings"] = "save-add-in-settings";
+ VerbId["GetDataSourceData"] = "get-datasource-data";
+ VerbId["SaveExtensionSettings"] = "save-extension-settings";
VerbId["GetSelectedMarks"] = "get-selected-marks";
VerbId["GetHighlightedMarks"] = "get-highlighted-marks";
VerbId["GetParametersForSheet"] = "get-parameters-for-sheet";
@@ -599,6 +614,8 @@ return /******/ (function(modules) { // webpackBootstrap
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 = {}));
@@ -1658,6 +1675,8 @@ return /******/ (function(modules) { // webpackBootstrap
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
@@ -2056,6 +2075,8 @@ return /******/ (function(modules) { // webpackBootstrap
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
@@ -2066,6 +2087,8 @@ return /******/ (function(modules) { // webpackBootstrap
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
@@ -2188,6 +2211,8 @@ return /******/ (function(modules) { // webpackBootstrap
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
@@ -2400,6 +2425,8 @@ return /******/ (function(modules) { // webpackBootstrap
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
@@ -2476,6 +2503,8 @@ return /******/ (function(modules) { // webpackBootstrap
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
@@ -2854,6 +2883,8 @@ return /******/ (function(modules) { // webpackBootstrap
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
@@ -3014,6 +3045,8 @@ return /******/ (function(modules) { // webpackBootstrap
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
@@ -3106,6 +3139,8 @@ return /******/ (function(modules) { // webpackBootstrap
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
@@ -3208,6 +3243,8 @@ return /******/ (function(modules) { // webpackBootstrap
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
@@ -3404,6 +3441,8 @@ return /******/ (function(modules) { // webpackBootstrap
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
@@ -3538,6 +3577,8 @@ return /******/ (function(modules) { // webpackBootstrap
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
@@ -3642,6 +3683,8 @@ return /******/ (function(modules) { // webpackBootstrap
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
@@ -3712,6 +3755,28 @@ return /******/ (function(modules) { // webpackBootstrap
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
@@ -3912,6 +3977,8 @@ return /******/ (function(modules) { // webpackBootstrap
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
@@ -4040,8 +4107,6 @@ return /******/ (function(modules) { // webpackBootstrap
ParameterId["DrillPathVector"] = "drillpathVector";
// DPI_ErrorDetails, having type string[]
ParameterId["ErrorDetails"] = "errorDetails";
- // DPI_ErrorExtraDetails, having type string[]
- ParameterId["ErrorExtraDetails"] = "errorExtraDetails";
// DPI_ExceptionMessageParams, having type string[]
ParameterId["ExceptionMessageParams"] = "exceptionMessageParams";
// DPI_ExcludedSheets, having type string[]
@@ -5632,6 +5697,8 @@ return /******/ (function(modules) { // webpackBootstrap
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
@@ -6046,6 +6113,8 @@ return /******/ (function(modules) { // webpackBootstrap
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
@@ -6290,10 +6359,6 @@ return /******/ (function(modules) { // webpackBootstrap
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
@@ -6548,6 +6613,8 @@ return /******/ (function(modules) { // webpackBootstrap
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
@@ -6642,6 +6709,8 @@ return /******/ (function(modules) { // webpackBootstrap
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[]
@@ -6822,6 +6891,10 @@ return /******/ (function(modules) { // webpackBootstrap
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
@@ -7730,6 +7803,12 @@ return /******/ (function(modules) { // webpackBootstrap
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
@@ -8209,7 +8288,7 @@ return /******/ (function(modules) { // webpackBootstrap
*/
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.InitializeExtension, CommandIds_1.DocCommands.InitializeAddInInstance, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ExtensionLocator, Params_1.ParameterId.AddInLocator)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ExtensionBootstrapInfo, 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),
@@ -8218,6 +8297,10 @@ return /******/ (function(modules) { // webpackBootstrap
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),
@@ -8235,8 +8318,8 @@ return /******/ (function(modules) { // webpackBootstrap
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.SaveExtensionSettings, CommandIds_1.DocCommands.SaveAddInSettings, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ExtensionLocator, 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.ExtensionSettingsInfo, 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)],
@@ -8254,6 +8337,12 @@ return /******/ (function(modules) { // webpackBootstrap
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;
@@ -8344,10 +8433,16 @@ return /******/ (function(modules) { // webpackBootstrap
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
@@ -8408,6 +8503,10 @@ return /******/ (function(modules) { // webpackBootstrap
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";
//
@@ -8527,10 +8626,6 @@ return /******/ (function(modules) { // webpackBootstrap
//
DocCommands["CategoricalQuickFilterPattern"] = "categorical-quick-filter-pattern";
//
- DocCommands["CellSize"] = "cell-size";
- //
- DocCommands["CellType"] = "cell-type";
- //
DocCommands["ChangeAggregation"] = "change-aggregation";
//
DocCommands["ChangeAlphaLevel"] = "change-alpha-level";
@@ -9249,8 +9344,6 @@ return /******/ (function(modules) { // webpackBootstrap
//
DocCommands["TableauException"] = "tableau-exception";
//
- DocCommands["Theme"] = "theme";
- //
DocCommands["ToggleDropLines"] = "toggle-drop-lines";
//
DocCommands["ToggleFieldBlending"] = "toggle-field-blending";
@@ -10549,7 +10642,7 @@ return /******/ (function(modules) { // webpackBootstrap
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) {
+ if (input.apiId === api_internal_contract_1.ParameterId.ExtensionLocator) {
return true;
}
}
@@ -10838,7 +10931,7 @@ return /******/ (function(modules) { // webpackBootstrap
};
return result;
};
- PresLayerToApiConverter.convertAddInLocator = function (plAddInLocator) {
+ PresLayerToApiConverter.convertExtensionLocator = function (plAddInLocator) {
var dashboardPath = undefined;
if (plAddInLocator.sheetPath) {
dashboardPath = PresLayerToApiConverter.convertSheetPath(plAddInLocator.sheetPath);
@@ -10871,43 +10964,43 @@ return /******/ (function(modules) { // webpackBootstrap
var result = {
zones: PresLayerToApiConverter.convertDashboardInZones(plDashboardInfo.dashboardPresModel),
name: plDashboardInfo.dashboardPresModel.sheetPath.sheetName,
- addInZoneId: plDashboardInfo.zoneId,
+ extensionZoneId: plDashboardInfo.zoneId,
size: plDashboardInfo.dashboardPresModel.viewportSize
};
return result;
};
- PresLayerToApiConverter.convertAddInInstance = function (plAddInInstance) {
+ PresLayerToApiConverter.convertExtensionInstance = function (plAddInInstance) {
var result = {
url: plAddInInstance.addInRegistrationPresModel.url,
- locator: PresLayerToApiConverter.convertAddInLocator(plAddInInstance.addInLocatorPresModel)
+ locator: PresLayerToApiConverter.convertExtensionLocator(plAddInInstance.addInLocatorPresModel)
};
return result;
};
- PresLayerToApiConverter.convertAddInEnivrionment = function (plAddInEnvironment) {
+ PresLayerToApiConverter.convertExtensionEnivrionment = 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,
+ extensionContext: EnumMappings_1.PresLayerToApiEnumMappings.extensionContext.convert(plAddInEnvironment.addInContext),
+ extensionMode: EnumMappings_1.PresLayerToApiEnumMappings.extensionMode.convert(plAddInEnvironment.addInMode),
+ extensionLocale: plAddInEnvironment.addInLocale,
+ extensionLanguage: plAddInEnvironment.addInLanguage,
tableauVersion: plAddInEnvironment.tableauVersion,
operatingSystem: plAddInEnvironment.operatingSystem,
apiVersion: plAddInEnvironment.apiVersion
};
return result;
};
- PresLayerToApiConverter.convertAddInSettingsInfo = function (plAddInSettings) {
+ PresLayerToApiConverter.convertExtensionSettingsInfo = function (plAddInSettings) {
var result = {
// addInSettings is undefined during bootstrap initialization
settingsValues: plAddInSettings.addInSettings || {}
};
return result;
};
- PresLayerToApiConverter.convertAddInBootstrapInfo = function (plBootstrapInfo) {
+ PresLayerToApiConverter.convertExtensionBootstrapInfo = function (plBootstrapInfo) {
var result = {
- addinDashboardInfo: PresLayerToApiConverter.convertDashboardInfo(plBootstrapInfo.addInDashboardInfoPresModel),
- addInEnvironment: PresLayerToApiConverter.convertAddInEnivrionment(plBootstrapInfo.addInEnvironmentPresModel),
- addInInstance: PresLayerToApiConverter.convertAddInInstance(plBootstrapInfo.addInInstancePresModel),
- addInSettingsInfo: PresLayerToApiConverter.convertAddInSettingsInfo(plBootstrapInfo.addInSettingsInfo)
+ extensionDashboardInfo: PresLayerToApiConverter.convertDashboardInfo(plBootstrapInfo.addInDashboardInfoPresModel),
+ extensionEnvironment: PresLayerToApiConverter.convertExtensionEnivrionment(plBootstrapInfo.addInEnvironmentPresModel),
+ extensionInstance: PresLayerToApiConverter.convertExtensionInstance(plBootstrapInfo.addInInstancePresModel),
+ extensionSettingsInfo: PresLayerToApiConverter.convertExtensionSettingsInfo(plBootstrapInfo.addInSettingsInfo)
};
return result;
};
@@ -10927,8 +11020,8 @@ return /******/ (function(modules) { // webpackBootstrap
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 !== 'Parameters') {
+ // 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]);
}
});
@@ -10945,7 +11038,19 @@ return /******/ (function(modules) { // webpackBootstrap
api_utils_1.Param.verifyValue(dataSource, 'dataSource');
api_utils_1.Param.verifyValue(dataSource.fieldList, 'dataSchema.fieldList');
dataSource.fieldList.forEach(function (plField) {
- dataSourceFields.push(PresLayerToApiConverter.convertField(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,
@@ -10959,9 +11064,14 @@ return /******/ (function(modules) { // webpackBootstrap
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: schemaMap[key].referencedDataSourceList
+ referencedDataSourceList: cleanReferencedDataSourceList
};
result[key] = worksheetDataSourceInfo;
});
@@ -10996,6 +11106,7 @@ return /******/ (function(modules) { // webpackBootstrap
};
return result;
};
+ PresLayerToApiConverter.PARAMETERS_DB_NAME = 'Parameters';
return PresLayerToApiConverter;
}());
exports.PresLayerToApiConverter = PresLayerToApiConverter;
@@ -11216,7 +11327,7 @@ return /******/ (function(modules) { // webpackBootstrap
_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_AddIn] = api_internal_contract_1.DashboardObjectType.Extension,
_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,
@@ -11226,15 +11337,15 @@ return /******/ (function(modules) { // webpackBootstrap
_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,
+ PresLayerToApiEnumMappings.extensionContext = new api_utils_1.EnumConverter((_b = {},
+ _b[Enums.AddInContext.Unknown] = api_internal_contract_1.ExtensionContext.Unknown,
+ _b[Enums.AddInContext.Desktop] = api_internal_contract_1.ExtensionContext.Desktop,
+ _b[Enums.AddInContext.Server] = api_internal_contract_1.ExtensionContext.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,
+ PresLayerToApiEnumMappings.extensionMode = new api_utils_1.EnumConverter((_c = {},
+ _c[Enums.AddInMode.Unknown] = api_internal_contract_1.ExtensionMode.Unknown,
+ _c[Enums.AddInMode.Authoring] = api_internal_contract_1.ExtensionMode.Authoring,
+ _c[Enums.AddInMode.Viewing] = api_internal_contract_1.ExtensionMode.Viewing,
_c));
PresLayerToApiEnumMappings.dataType = new api_utils_1.EnumConverter((_d = {},
_d[Enums.DataType.DT_BOOLEAN] = api_internal_contract_1.DataType.Bool,
@@ -11312,6 +11423,10 @@ return /******/ (function(modules) { // webpackBootstrap
_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;
@@ -11329,10 +11444,14 @@ return /******/ (function(modules) { // webpackBootstrap
_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, _a, _b;
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _a, _b, _c;
/* tslint:enable:typedef */
@@ -11355,418 +11474,418 @@ return /******/ (function(modules) { // webpackBootstrap
// 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";
@@ -11778,107 +11897,107 @@ return /******/ (function(modules) { // webpackBootstrap
(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";
@@ -11886,31 +12005,31 @@ return /******/ (function(modules) { // webpackBootstrap
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";
@@ -11922,236 +12041,236 @@ return /******/ (function(modules) { // webpackBootstrap
// 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
@@ -12159,7 +12278,7 @@ return /******/ (function(modules) { // webpackBootstrap
// descending
SortDirection["ST_DESC"] = "desc";
})(SortDirection = exports.SortDirection || (exports.SortDirection = {}));
- //
+ //
var SortType;
(function (SortType) {
// Use the defined ordering
@@ -12171,135 +12290,135 @@ return /******/ (function(modules) { // webpackBootstrap
// 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
@@ -12316,28 +12435,28 @@ return /******/ (function(modules) { // webpackBootstrap
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
@@ -12372,25 +12491,25 @@ return /******/ (function(modules) { // webpackBootstrap
// 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.
@@ -12415,16 +12534,16 @@ return /******/ (function(modules) { // webpackBootstrap
// 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";
@@ -12432,97 +12551,97 @@ return /******/ (function(modules) { // webpackBootstrap
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";
@@ -12534,13 +12653,13 @@ return /******/ (function(modules) { // webpackBootstrap
// 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.
@@ -12548,158 +12667,158 @@ return /******/ (function(modules) { // webpackBootstrap
(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
@@ -12725,106 +12844,106 @@ return /******/ (function(modules) { // webpackBootstrap
// 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
@@ -12834,9 +12953,9 @@ return /******/ (function(modules) { // webpackBootstrap
ReferenceLineLabelType["None"] = "none";
// an automatically generated label
ReferenceLineLabelType["Automatic"] = "automatic";
- //
+ //
ReferenceLineLabelType["Value"] = "value";
- //
+ //
ReferenceLineLabelType["Computation"] = "computation";
// a user defined label
ReferenceLineLabelType["Custom"] = "custom";
@@ -12846,7 +12965,7 @@ return /******/ (function(modules) { // webpackBootstrap
(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";
@@ -12866,7 +12985,7 @@ return /******/ (function(modules) { // webpackBootstrap
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
@@ -12899,12 +13018,12 @@ return /******/ (function(modules) { // webpackBootstrap
// 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
@@ -12986,37 +13105,37 @@ return /******/ (function(modules) { // webpackBootstrap
// 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
@@ -13033,7 +13152,7 @@ return /******/ (function(modules) { // webpackBootstrap
// relational data sources
ConnectServerWidgetType["CSWT_Relational"] = "relational";
})(ConnectServerWidgetType = exports.ConnectServerWidgetType || (exports.ConnectServerWidgetType = {}));
- //
+ //
var AuthenticationEnumsMode;
(function (AuthenticationEnumsMode) {
// no authentication widget
@@ -13065,7 +13184,7 @@ return /******/ (function(modules) { // webpackBootstrap
// 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
@@ -13083,54 +13202,54 @@ return /******/ (function(modules) { // webpackBootstrap
// 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";
@@ -13138,163 +13257,163 @@ return /******/ (function(modules) { // webpackBootstrap
// 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
@@ -13323,146 +13442,146 @@ return /******/ (function(modules) { // webpackBootstrap
// 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";
@@ -13470,72 +13589,72 @@ return /******/ (function(modules) { // webpackBootstrap
// 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...
@@ -13559,15 +13678,15 @@ return /******/ (function(modules) { // webpackBootstrap
// 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)
@@ -13591,214 +13710,218 @@ return /******/ (function(modules) { // webpackBootstrap
// 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
@@ -13812,405 +13935,405 @@ return /******/ (function(modules) { // webpackBootstrap
// 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.
@@ -14223,136 +14346,136 @@ return /******/ (function(modules) { // webpackBootstrap
// 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< (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
\ No newline at end of file
diff --git a/node_modules/http-server/node_modules/colors/ReadMe.md b/node_modules/http-server/node_modules/colors/ReadMe.md
new file mode 100644
index 00000000..beb5b145
--- /dev/null
+++ b/node_modules/http-server/node_modules/colors/ReadMe.md
@@ -0,0 +1,167 @@
+# colors.js
+
+## get color and style in your node.js console
+
+
+
+## Installation
+
+ npm install colors
+
+## colors and styles!
+
+### text colors
+
+ - black
+ - red
+ - green
+ - yellow
+ - blue
+ - magenta
+ - cyan
+ - white
+ - gray
+ - grey
+
+### background colors
+
+
+
+ - bgBlack
+ - bgRed
+ - bgGreen
+ - bgYellow
+ - bgBlue
+ - bgMagenta
+ - bgCyan
+ - bgWhite
+
+### styles
+
+ - reset
+ - bold
+ - dim
+ - italic
+ - underline
+ - inverse
+ - hidden
+ - strikethrough
+
+### extras
+
+ - rainbow
+ - zebra
+ - america
+ - trap
+ - random
+
+
+## Usage
+
+By popular demand, `colors` now ships with two types of usages!
+
+The super nifty way
+
+```js
+var colors = require('colors');
+
+console.log('hello'.green); // outputs green text
+console.log('i like cake and pies'.underline.red) // outputs red underlined text
+console.log('inverse the color'.inverse); // inverses the color
+console.log('OMG Rainbows!'.rainbow); // rainbow
+console.log('Run the trap'.trap); // Drops the bass
+
+```
+
+or a slightly less nifty way which doesn't extend `String.prototype`
+
+```js
+var colors = require('colors/safe');
+
+console.log(colors.green('hello')); // outputs green text
+console.log(colors.red.underline('i like cake and pies')) // outputs red underlined text
+console.log(colors.inverse('inverse the color')); // inverses the color
+console.log(colors.rainbow('OMG Rainbows!')); // rainbow
+console.log(colors.trap('Run the trap')); // Drops the bass
+
+```
+
+I prefer the first way. Some people seem to be afraid of extending `String.prototype` and prefer the second way.
+
+If you are writing good code you will never have an issue with the first approach. If you really don't want to touch `String.prototype`, the second usage will not touch `String` native object.
+
+## Disabling Colors
+
+To disable colors you can pass the following arguments in the command line to your application:
+
+```bash
+node myapp.js --no-color
+```
+
+## Console.log [string substitution](http://nodejs.org/docs/latest/api/console.html#console_console_log_data)
+
+```js
+var name = 'Marak';
+console.log(colors.green('Hello %s'), name);
+// outputs -> 'Hello Marak'
+```
+
+## Custom themes
+
+### Using standard API
+
+```js
+
+var colors = require('colors');
+
+colors.setTheme({
+ silly: 'rainbow',
+ input: 'grey',
+ verbose: 'cyan',
+ prompt: 'grey',
+ info: 'green',
+ data: 'grey',
+ help: 'cyan',
+ warn: 'yellow',
+ debug: 'blue',
+ error: 'red'
+});
+
+// outputs red text
+console.log("this is an error".error);
+
+// outputs yellow text
+console.log("this is a warning".warn);
+```
+
+### Using string safe API
+
+```js
+var colors = require('colors/safe');
+
+// set single property
+var error = colors.red;
+error('this is red');
+
+// set theme
+colors.setTheme({
+ silly: 'rainbow',
+ input: 'grey',
+ verbose: 'cyan',
+ prompt: 'grey',
+ info: 'green',
+ data: 'grey',
+ help: 'cyan',
+ warn: 'yellow',
+ debug: 'blue',
+ error: 'red'
+});
+
+// outputs red text
+console.log(colors.error("this is an error"));
+
+// outputs yellow text
+console.log(colors.warn("this is a warning"));
+```
+
+*Protip: There is a secret undocumented style in `colors`. If you find the style you can summon him.*
\ No newline at end of file
diff --git a/node_modules/http-server/node_modules/colors/examples/normal-usage.js b/node_modules/http-server/node_modules/colors/examples/normal-usage.js
new file mode 100644
index 00000000..2818741e
--- /dev/null
+++ b/node_modules/http-server/node_modules/colors/examples/normal-usage.js
@@ -0,0 +1,74 @@
+var colors = require('../lib/index');
+
+console.log("First some yellow text".yellow);
+
+console.log("Underline that text".yellow.underline);
+
+console.log("Make it bold and red".red.bold);
+
+console.log(("Double Raindows All Day Long").rainbow)
+
+console.log("Drop the bass".trap)
+
+console.log("DROP THE RAINBOW BASS".trap.rainbow)
+
+
+console.log('Chains are also cool.'.bold.italic.underline.red); // styles not widely supported
+
+console.log('So '.green + 'are'.underline + ' ' + 'inverse'.inverse + ' styles! '.yellow.bold); // styles not widely supported
+console.log("Zebras are so fun!".zebra);
+
+//
+// Remark: .strikethrough may not work with Mac OS Terminal App
+//
+console.log("This is " + "not".strikethrough + " fun.");
+
+console.log('Background color attack!'.black.bgWhite)
+console.log('Use random styles on everything!'.random)
+console.log('America, Heck Yeah!'.america)
+
+
+console.log('Setting themes is useful')
+
+//
+// Custom themes
+//
+console.log('Generic logging theme as JSON'.green.bold.underline);
+// Load theme with JSON literal
+colors.setTheme({
+ silly: 'rainbow',
+ input: 'grey',
+ verbose: 'cyan',
+ prompt: 'grey',
+ info: 'green',
+ data: 'grey',
+ help: 'cyan',
+ warn: 'yellow',
+ debug: 'blue',
+ error: 'red'
+});
+
+// outputs red text
+console.log("this is an error".error);
+
+// outputs yellow text
+console.log("this is a warning".warn);
+
+// outputs grey text
+console.log("this is an input".input);
+
+console.log('Generic logging theme as file'.green.bold.underline);
+
+// Load a theme from file
+colors.setTheme(__dirname + '/../themes/generic-logging.js');
+
+// outputs red text
+console.log("this is an error".error);
+
+// outputs yellow text
+console.log("this is a warning".warn);
+
+// outputs grey text
+console.log("this is an input".input);
+
+//console.log("Don't summon".zalgo)
\ No newline at end of file
diff --git a/node_modules/http-server/node_modules/colors/examples/safe-string.js b/node_modules/http-server/node_modules/colors/examples/safe-string.js
new file mode 100644
index 00000000..111b363a
--- /dev/null
+++ b/node_modules/http-server/node_modules/colors/examples/safe-string.js
@@ -0,0 +1,76 @@
+var colors = require('../safe');
+
+console.log(colors.yellow("First some yellow text"));
+
+console.log(colors.yellow.underline("Underline that text"));
+
+console.log(colors.red.bold("Make it bold and red"));
+
+console.log(colors.rainbow("Double Raindows All Day Long"))
+
+console.log(colors.trap("Drop the bass"))
+
+console.log(colors.rainbow(colors.trap("DROP THE RAINBOW BASS")));
+
+console.log(colors.bold.italic.underline.red('Chains are also cool.')); // styles not widely supported
+
+
+console.log(colors.green('So ') + colors.underline('are') + ' ' + colors.inverse('inverse') + colors.yellow.bold(' styles! ')); // styles not widely supported
+
+console.log(colors.zebra("Zebras are so fun!"));
+
+console.log("This is " + colors.strikethrough("not") + " fun.");
+
+
+console.log(colors.black.bgWhite('Background color attack!'));
+console.log(colors.random('Use random styles on everything!'))
+console.log(colors.america('America, Heck Yeah!'));
+
+console.log('Setting themes is useful')
+
+//
+// Custom themes
+//
+//console.log('Generic logging theme as JSON'.green.bold.underline);
+// Load theme with JSON literal
+colors.setTheme({
+ silly: 'rainbow',
+ input: 'grey',
+ verbose: 'cyan',
+ prompt: 'grey',
+ info: 'green',
+ data: 'grey',
+ help: 'cyan',
+ warn: 'yellow',
+ debug: 'blue',
+ error: 'red'
+});
+
+// outputs red text
+console.log(colors.error("this is an error"));
+
+// outputs yellow text
+console.log(colors.warn("this is a warning"));
+
+// outputs grey text
+console.log(colors.input("this is an input"));
+
+
+// console.log('Generic logging theme as file'.green.bold.underline);
+
+// Load a theme from file
+colors.setTheme(__dirname + '/../themes/generic-logging.js');
+
+// outputs red text
+console.log(colors.error("this is an error"));
+
+// outputs yellow text
+console.log(colors.warn("this is a warning"));
+
+// outputs grey text
+console.log(colors.input("this is an input"));
+
+// console.log(colors.zalgo("Don't summon him"))
+
+
+
diff --git a/node_modules/http-server/node_modules/colors/lib/colors.js b/node_modules/http-server/node_modules/colors/lib/colors.js
new file mode 100644
index 00000000..59898de8
--- /dev/null
+++ b/node_modules/http-server/node_modules/colors/lib/colors.js
@@ -0,0 +1,176 @@
+/*
+
+The MIT License (MIT)
+
+Original Library
+ - Copyright (c) Marak Squires
+
+Additional functionality
+ - Copyright (c) Sindre Sorhus (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+*/
+
+var colors = {};
+module['exports'] = colors;
+
+colors.themes = {};
+
+var ansiStyles = colors.styles = require('./styles');
+var defineProps = Object.defineProperties;
+
+colors.supportsColor = require('./system/supports-colors');
+
+if (typeof colors.enabled === "undefined") {
+ colors.enabled = colors.supportsColor;
+}
+
+colors.stripColors = colors.strip = function(str){
+ return ("" + str).replace(/\x1B\[\d+m/g, '');
+};
+
+
+var stylize = colors.stylize = function stylize (str, style) {
+ return ansiStyles[style].open + str + ansiStyles[style].close;
+}
+
+var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g;
+var escapeStringRegexp = function (str) {
+ if (typeof str !== 'string') {
+ throw new TypeError('Expected a string');
+ }
+ return str.replace(matchOperatorsRe, '\\$&');
+}
+
+function build(_styles) {
+ var builder = function builder() {
+ return applyStyle.apply(builder, arguments);
+ };
+ builder._styles = _styles;
+ // __proto__ is used because we must return a function, but there is
+ // no way to create a function with a different prototype.
+ builder.__proto__ = proto;
+ return builder;
+}
+
+var styles = (function () {
+ var ret = {};
+ ansiStyles.grey = ansiStyles.gray;
+ Object.keys(ansiStyles).forEach(function (key) {
+ ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g');
+ ret[key] = {
+ get: function () {
+ return build(this._styles.concat(key));
+ }
+ };
+ });
+ return ret;
+})();
+
+var proto = defineProps(function colors() {}, styles);
+
+function applyStyle() {
+ var args = arguments;
+ var argsLen = args.length;
+ var str = argsLen !== 0 && String(arguments[0]);
+ if (argsLen > 1) {
+ for (var a = 1; a < argsLen; a++) {
+ str += ' ' + args[a];
+ }
+ }
+
+ if (!colors.enabled || !str) {
+ return str;
+ }
+
+ var nestedStyles = this._styles;
+
+ var i = nestedStyles.length;
+ while (i--) {
+ var code = ansiStyles[nestedStyles[i]];
+ str = code.open + str.replace(code.closeRe, code.open) + code.close;
+ }
+
+ return str;
+}
+
+function applyTheme (theme) {
+ for (var style in theme) {
+ (function(style){
+ colors[style] = function(str){
+ return colors[theme[style]](str);
+ };
+ })(style)
+ }
+}
+
+colors.setTheme = function (theme) {
+ if (typeof theme === 'string') {
+ try {
+ colors.themes[theme] = require(theme);
+ applyTheme(colors.themes[theme]);
+ return colors.themes[theme];
+ } catch (err) {
+ console.log(err);
+ return err;
+ }
+ } else {
+ applyTheme(theme);
+ }
+};
+
+function init() {
+ var ret = {};
+ Object.keys(styles).forEach(function (name) {
+ ret[name] = {
+ get: function () {
+ return build([name]);
+ }
+ };
+ });
+ return ret;
+}
+
+var sequencer = function sequencer (map, str) {
+ var exploded = str.split(""), i = 0;
+ exploded = exploded.map(map);
+ return exploded.join("");
+};
+
+// custom formatter methods
+colors.trap = require('./custom/trap');
+colors.zalgo = require('./custom/zalgo');
+
+// maps
+colors.maps = {};
+colors.maps.america = require('./maps/america');
+colors.maps.zebra = require('./maps/zebra');
+colors.maps.rainbow = require('./maps/rainbow');
+colors.maps.random = require('./maps/random')
+
+for (var map in colors.maps) {
+ (function(map){
+ colors[map] = function (str) {
+ return sequencer(colors.maps[map], str);
+ }
+ })(map)
+}
+
+defineProps(colors, init());
\ No newline at end of file
diff --git a/node_modules/http-server/node_modules/colors/lib/custom/trap.js b/node_modules/http-server/node_modules/colors/lib/custom/trap.js
new file mode 100644
index 00000000..3f091437
--- /dev/null
+++ b/node_modules/http-server/node_modules/colors/lib/custom/trap.js
@@ -0,0 +1,45 @@
+module['exports'] = function runTheTrap (text, options) {
+ var result = "";
+ text = text || "Run the trap, drop the bass";
+ text = text.split('');
+ var trap = {
+ a: ["\u0040", "\u0104", "\u023a", "\u0245", "\u0394", "\u039b", "\u0414"],
+ b: ["\u00df", "\u0181", "\u0243", "\u026e", "\u03b2", "\u0e3f"],
+ c: ["\u00a9", "\u023b", "\u03fe"],
+ d: ["\u00d0", "\u018a", "\u0500" , "\u0501" ,"\u0502", "\u0503"],
+ e: ["\u00cb", "\u0115", "\u018e", "\u0258", "\u03a3", "\u03be", "\u04bc", "\u0a6c"],
+ f: ["\u04fa"],
+ g: ["\u0262"],
+ h: ["\u0126", "\u0195", "\u04a2", "\u04ba", "\u04c7", "\u050a"],
+ i: ["\u0f0f"],
+ j: ["\u0134"],
+ k: ["\u0138", "\u04a0", "\u04c3", "\u051e"],
+ l: ["\u0139"],
+ m: ["\u028d", "\u04cd", "\u04ce", "\u0520", "\u0521", "\u0d69"],
+ n: ["\u00d1", "\u014b", "\u019d", "\u0376", "\u03a0", "\u048a"],
+ o: ["\u00d8", "\u00f5", "\u00f8", "\u01fe", "\u0298", "\u047a", "\u05dd", "\u06dd", "\u0e4f"],
+ p: ["\u01f7", "\u048e"],
+ q: ["\u09cd"],
+ r: ["\u00ae", "\u01a6", "\u0210", "\u024c", "\u0280", "\u042f"],
+ s: ["\u00a7", "\u03de", "\u03df", "\u03e8"],
+ t: ["\u0141", "\u0166", "\u0373"],
+ u: ["\u01b1", "\u054d"],
+ v: ["\u05d8"],
+ w: ["\u0428", "\u0460", "\u047c", "\u0d70"],
+ x: ["\u04b2", "\u04fe", "\u04fc", "\u04fd"],
+ y: ["\u00a5", "\u04b0", "\u04cb"],
+ z: ["\u01b5", "\u0240"]
+ }
+ text.forEach(function(c){
+ c = c.toLowerCase();
+ var chars = trap[c] || [" "];
+ var rand = Math.floor(Math.random() * chars.length);
+ if (typeof trap[c] !== "undefined") {
+ result += trap[c][rand];
+ } else {
+ result += c;
+ }
+ });
+ return result;
+
+}
diff --git a/node_modules/http-server/node_modules/colors/lib/custom/zalgo.js b/node_modules/http-server/node_modules/colors/lib/custom/zalgo.js
new file mode 100644
index 00000000..4dc20c89
--- /dev/null
+++ b/node_modules/http-server/node_modules/colors/lib/custom/zalgo.js
@@ -0,0 +1,104 @@
+// please no
+module['exports'] = function zalgo(text, options) {
+ text = text || " he is here ";
+ var soul = {
+ "up" : [
+ 'Ì', 'Ì', 'Ì', 'Ì
',
+ 'Ìż', 'Ì', 'Ì', 'Ì',
+ 'Í', 'Í', 'Í', 'Ì',
+ 'Ì', 'Ì', 'Í', 'Ì',
+ 'Ì', 'Í', 'Í', 'Í',
+ 'Ì', 'Ì', 'Ì', 'Í',
+ 'Ì', 'Ì', 'Ì', 'Ì',
+ 'Ì', 'Ì', 'Ì', 'Ìœ',
+ 'Ì', 'ÍŁ', 'Í€', 'Í„',
+ '͊', 'ͧ', '͚', 'ͩ',
+ 'ÍȘ', 'Í«', 'ÍŹ', 'Í',
+ 'Íź', 'ÍŻ', 'ÌŸ', 'Í',
+ 'Í', 'Ì'
+ ],
+ "down" : [
+ 'Ì', 'Ì', 'Ì', 'Ì',
+ 'Ì', 'Ì', 'Ì', 'Ì',
+ 'Ì ', 'Ì€', 'Ì„', 'ÌŠ',
+ 'Ì©', 'ÌȘ', 'Ì«', 'ÌŹ',
+ 'Ì', 'Ìź', 'ÌŻ', '̰',
+ '̱', 'ÌČ', 'Ìł', 'Ìč',
+ 'Ìș', 'Ì»', 'ÌŒ', 'Í
',
+ 'Í', 'Í', 'Í', 'Í',
+ 'Í', 'Í', 'Í', 'Í',
+ 'Í', 'Í', 'Í', 'ÌŁ'
+ ],
+ "mid" : [
+ 'Ì', 'Ì', 'Ì', 'Ì',
+ 'Í', 'ÌĄ', 'Ìą', '̧',
+ '̚', '̎', '̔', '̶',
+ 'Í', 'Í', 'Í',
+ 'Í', 'Í ', 'Íą', 'Ìž',
+ 'Ì·', 'ÍĄ', ' Ò'
+ ]
+ },
+ all = [].concat(soul.up, soul.down, soul.mid),
+ zalgo = {};
+
+ function randomNumber(range) {
+ var r = Math.floor(Math.random() * range);
+ return r;
+ }
+
+ function is_char(character) {
+ var bool = false;
+ all.filter(function (i) {
+ bool = (i === character);
+ });
+ return bool;
+ }
+
+
+ function heComes(text, options) {
+ var result = '', counts, l;
+ options = options || {};
+ options["up"] = options["up"] || true;
+ options["mid"] = options["mid"] || true;
+ options["down"] = options["down"] || true;
+ options["size"] = options["size"] || "maxi";
+ text = text.split('');
+ for (l in text) {
+ if (is_char(l)) {
+ continue;
+ }
+ result = result + text[l];
+ counts = {"up" : 0, "down" : 0, "mid" : 0};
+ switch (options.size) {
+ case 'mini':
+ counts.up = randomNumber(8);
+ counts.min = randomNumber(2);
+ counts.down = randomNumber(8);
+ break;
+ case 'maxi':
+ counts.up = randomNumber(16) + 3;
+ counts.min = randomNumber(4) + 1;
+ counts.down = randomNumber(64) + 3;
+ break;
+ default:
+ counts.up = randomNumber(8) + 1;
+ counts.mid = randomNumber(6) / 2;
+ counts.down = randomNumber(8) + 1;
+ break;
+ }
+
+ var arr = ["up", "mid", "down"];
+ for (var d in arr) {
+ var index = arr[d];
+ for (var i = 0 ; i <= counts[index]; i++) {
+ if (options[index]) {
+ result = result + soul[index][randomNumber(soul[index].length)];
+ }
+ }
+ }
+ }
+ return result;
+ }
+ // don't summon him
+ return heComes(text);
+}
diff --git a/node_modules/http-server/node_modules/colors/lib/extendStringPrototype.js b/node_modules/http-server/node_modules/colors/lib/extendStringPrototype.js
new file mode 100644
index 00000000..b6b5b031
--- /dev/null
+++ b/node_modules/http-server/node_modules/colors/lib/extendStringPrototype.js
@@ -0,0 +1,118 @@
+var colors = require('./colors'),
+ styles = require('./styles');
+
+module['exports'] = function () {
+
+ //
+ // Extends prototype of native string object to allow for "foo".red syntax
+ //
+ var addProperty = function (color, func) {
+ String.prototype.__defineGetter__(color, func);
+ };
+
+ var sequencer = function sequencer (map, str) {
+ return function () {
+ var exploded = this.split(""), i = 0;
+ exploded = exploded.map(map);
+ return exploded.join("");
+ }
+ };
+
+ var stylize = function stylize (str, style) {
+ return styles[style].open + str + styles[style].close;
+ }
+
+ addProperty('strip', function () {
+ return colors.strip(this);
+ });
+
+ addProperty('stripColors', function () {
+ return colors.strip(this);
+ });
+
+ addProperty("trap", function(){
+ return colors.trap(this);
+ });
+
+ addProperty("zalgo", function(){
+ return colors.zalgo(this);
+ });
+
+ addProperty("zebra", function(){
+ return colors.zebra(this);
+ });
+
+ addProperty("rainbow", function(){
+ return colors.rainbow(this);
+ });
+
+ addProperty("random", function(){
+ return colors.random(this);
+ });
+
+ addProperty("america", function(){
+ return colors.america(this);
+ });
+
+ //
+ // Iterate through all default styles and colors
+ //
+ var x = Object.keys(colors.styles);
+ x.forEach(function (style) {
+ addProperty(style, function () {
+ return stylize(this, style);
+ });
+ });
+
+ function applyTheme(theme) {
+ //
+ // Remark: This is a list of methods that exist
+ // on String that you should not overwrite.
+ //
+ var stringPrototypeBlacklist = [
+ '__defineGetter__', '__defineSetter__', '__lookupGetter__', '__lookupSetter__', 'charAt', 'constructor',
+ 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'valueOf', 'charCodeAt',
+ 'indexOf', 'lastIndexof', 'length', 'localeCompare', 'match', 'replace', 'search', 'slice', 'split', 'substring',
+ 'toLocaleLowerCase', 'toLocaleUpperCase', 'toLowerCase', 'toUpperCase', 'trim', 'trimLeft', 'trimRight'
+ ];
+
+ Object.keys(theme).forEach(function (prop) {
+ if (stringPrototypeBlacklist.indexOf(prop) !== -1) {
+ console.log('warn: '.red + ('String.prototype' + prop).magenta + ' is probably something you don\'t want to override. Ignoring style name');
+ }
+ else {
+ if (typeof(theme[prop]) === 'string') {
+ colors[prop] = colors[theme[prop]];
+ addProperty(prop, function () {
+ return colors[theme[prop]](this);
+ });
+ }
+ else {
+ addProperty(prop, function () {
+ var ret = this;
+ for (var t = 0; t < theme[prop].length; t++) {
+ ret = exports[theme[prop][t]](ret);
+ }
+ return ret;
+ });
+ }
+ }
+ });
+ }
+
+ colors.setTheme = function (theme) {
+ if (typeof theme === 'string') {
+ try {
+ colors.themes[theme] = require(theme);
+ applyTheme(colors.themes[theme]);
+ return colors.themes[theme];
+ } catch (err) {
+ console.log(err);
+ return err;
+ }
+ } else {
+ applyTheme(theme);
+ }
+ };
+
+};
\ No newline at end of file
diff --git a/node_modules/http-server/node_modules/colors/lib/index.js b/node_modules/http-server/node_modules/colors/lib/index.js
new file mode 100644
index 00000000..96d2b84f
--- /dev/null
+++ b/node_modules/http-server/node_modules/colors/lib/index.js
@@ -0,0 +1,12 @@
+var colors = require('./colors');
+module['exports'] = colors;
+
+// Remark: By default, colors will add style properties to String.prototype
+//
+// If you don't wish to extend String.prototype you can do this instead and native String will not be touched
+//
+// var colors = require('colors/safe);
+// colors.red("foo")
+//
+//
+var extendStringPrototype = require('./extendStringPrototype')();
\ No newline at end of file
diff --git a/node_modules/http-server/node_modules/colors/lib/maps/america.js b/node_modules/http-server/node_modules/colors/lib/maps/america.js
new file mode 100644
index 00000000..a07d8327
--- /dev/null
+++ b/node_modules/http-server/node_modules/colors/lib/maps/america.js
@@ -0,0 +1,12 @@
+var colors = require('../colors');
+
+module['exports'] = (function() {
+ return function (letter, i, exploded) {
+ if(letter === " ") return letter;
+ switch(i%3) {
+ case 0: return colors.red(letter);
+ case 1: return colors.white(letter)
+ case 2: return colors.blue(letter)
+ }
+ }
+})();
\ No newline at end of file
diff --git a/node_modules/http-server/node_modules/colors/lib/maps/rainbow.js b/node_modules/http-server/node_modules/colors/lib/maps/rainbow.js
new file mode 100644
index 00000000..a7ce24e6
--- /dev/null
+++ b/node_modules/http-server/node_modules/colors/lib/maps/rainbow.js
@@ -0,0 +1,13 @@
+var colors = require('../colors');
+
+module['exports'] = (function () {
+ var rainbowColors = ['red', 'yellow', 'green', 'blue', 'magenta']; //RoY G BiV
+ return function (letter, i, exploded) {
+ if (letter === " ") {
+ return letter;
+ } else {
+ return colors[rainbowColors[i++ % rainbowColors.length]](letter);
+ }
+ };
+})();
+
diff --git a/node_modules/http-server/node_modules/colors/lib/maps/random.js b/node_modules/http-server/node_modules/colors/lib/maps/random.js
new file mode 100644
index 00000000..5cd101fa
--- /dev/null
+++ b/node_modules/http-server/node_modules/colors/lib/maps/random.js
@@ -0,0 +1,8 @@
+var colors = require('../colors');
+
+module['exports'] = (function () {
+ var available = ['underline', 'inverse', 'grey', 'yellow', 'red', 'green', 'blue', 'white', 'cyan', 'magenta'];
+ return function(letter, i, exploded) {
+ return letter === " " ? letter : colors[available[Math.round(Math.random() * (available.length - 1))]](letter);
+ };
+})();
\ No newline at end of file
diff --git a/node_modules/http-server/node_modules/colors/lib/maps/zebra.js b/node_modules/http-server/node_modules/colors/lib/maps/zebra.js
new file mode 100644
index 00000000..bf7dcdea
--- /dev/null
+++ b/node_modules/http-server/node_modules/colors/lib/maps/zebra.js
@@ -0,0 +1,5 @@
+var colors = require('../colors');
+
+module['exports'] = function (letter, i, exploded) {
+ return i % 2 === 0 ? letter : colors.inverse(letter);
+};
\ No newline at end of file
diff --git a/node_modules/http-server/node_modules/colors/lib/styles.js b/node_modules/http-server/node_modules/colors/lib/styles.js
new file mode 100644
index 00000000..067d5907
--- /dev/null
+++ b/node_modules/http-server/node_modules/colors/lib/styles.js
@@ -0,0 +1,77 @@
+/*
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+*/
+
+var styles = {};
+module['exports'] = styles;
+
+var codes = {
+ reset: [0, 0],
+
+ bold: [1, 22],
+ dim: [2, 22],
+ italic: [3, 23],
+ underline: [4, 24],
+ inverse: [7, 27],
+ hidden: [8, 28],
+ strikethrough: [9, 29],
+
+ black: [30, 39],
+ red: [31, 39],
+ green: [32, 39],
+ yellow: [33, 39],
+ blue: [34, 39],
+ magenta: [35, 39],
+ cyan: [36, 39],
+ white: [37, 39],
+ gray: [90, 39],
+ grey: [90, 39],
+
+ bgBlack: [40, 49],
+ bgRed: [41, 49],
+ bgGreen: [42, 49],
+ bgYellow: [43, 49],
+ bgBlue: [44, 49],
+ bgMagenta: [45, 49],
+ bgCyan: [46, 49],
+ bgWhite: [47, 49],
+
+ // legacy styles for colors pre v1.0.0
+ blackBG: [40, 49],
+ redBG: [41, 49],
+ greenBG: [42, 49],
+ yellowBG: [43, 49],
+ blueBG: [44, 49],
+ magentaBG: [45, 49],
+ cyanBG: [46, 49],
+ whiteBG: [47, 49]
+
+};
+
+Object.keys(codes).forEach(function (key) {
+ var val = codes[key];
+ var style = styles[key] = [];
+ style.open = '\u001b[' + val[0] + 'm';
+ style.close = '\u001b[' + val[1] + 'm';
+});
\ No newline at end of file
diff --git a/node_modules/http-server/node_modules/colors/lib/system/supports-colors.js b/node_modules/http-server/node_modules/colors/lib/system/supports-colors.js
new file mode 100644
index 00000000..3e008aa9
--- /dev/null
+++ b/node_modules/http-server/node_modules/colors/lib/system/supports-colors.js
@@ -0,0 +1,61 @@
+/*
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+*/
+
+var argv = process.argv;
+
+module.exports = (function () {
+ if (argv.indexOf('--no-color') !== -1 ||
+ argv.indexOf('--color=false') !== -1) {
+ return false;
+ }
+
+ if (argv.indexOf('--color') !== -1 ||
+ argv.indexOf('--color=true') !== -1 ||
+ argv.indexOf('--color=always') !== -1) {
+ return true;
+ }
+
+ if (process.stdout && !process.stdout.isTTY) {
+ return false;
+ }
+
+ if (process.platform === 'win32') {
+ return true;
+ }
+
+ if ('COLORTERM' in process.env) {
+ return true;
+ }
+
+ if (process.env.TERM === 'dumb') {
+ return false;
+ }
+
+ if (/^screen|^xterm|^vt100|color|ansi|cygwin|linux/i.test(process.env.TERM)) {
+ return true;
+ }
+
+ return false;
+})();
\ No newline at end of file
diff --git a/node_modules/http-server/node_modules/colors/package.json b/node_modules/http-server/node_modules/colors/package.json
new file mode 100644
index 00000000..6e1f032c
--- /dev/null
+++ b/node_modules/http-server/node_modules/colors/package.json
@@ -0,0 +1,52 @@
+{
+ "name": "colors",
+ "description": "get colors in your node.js console",
+ "version": "1.0.3",
+ "author": {
+ "name": "Marak Squires"
+ },
+ "homepage": "https://github.com/Marak/colors.js",
+ "bugs": {
+ "url": "https://github.com/Marak/colors.js/issues"
+ },
+ "keywords": [
+ "ansi",
+ "terminal",
+ "colors"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "git+ssh://git@github.com/Marak/colors.js.git"
+ },
+ "license": "MIT",
+ "scripts": {
+ "test": "node tests/basic-test.js && node tests/safe-test.js"
+ },
+ "engines": {
+ "node": ">=0.1.90"
+ },
+ "main": "./lib/index",
+ "gitHead": "e9e6557cc0fa26dba1a20b0d45e92de982f4047c",
+ "_id": "colors@1.0.3",
+ "_shasum": "0433f44d809680fdeb60ed260f1b0c262e82a40b",
+ "_from": "colors@1.0.3",
+ "_npmVersion": "2.0.2",
+ "_nodeVersion": "0.11.13",
+ "_npmUser": {
+ "name": "marak",
+ "email": "marak.squires@gmail.com"
+ },
+ "maintainers": [
+ {
+ "name": "marak",
+ "email": "marak.squires@gmail.com"
+ }
+ ],
+ "dist": {
+ "shasum": "0433f44d809680fdeb60ed260f1b0c262e82a40b",
+ "tarball": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/node_modules/http-server/node_modules/colors/safe.js b/node_modules/http-server/node_modules/colors/safe.js
new file mode 100644
index 00000000..a6a1f3ab
--- /dev/null
+++ b/node_modules/http-server/node_modules/colors/safe.js
@@ -0,0 +1,9 @@
+//
+// Remark: Requiring this file will use the "safe" colors API which will not touch String.prototype
+//
+// var colors = require('colors/safe);
+// colors.red("foo")
+//
+//
+var colors = require('./lib/colors');
+module['exports'] = colors;
\ No newline at end of file
diff --git a/node_modules/http-server/node_modules/colors/screenshots/colors.png b/node_modules/http-server/node_modules/colors/screenshots/colors.png
new file mode 100644
index 00000000..7200a623
Binary files /dev/null and b/node_modules/http-server/node_modules/colors/screenshots/colors.png differ
diff --git a/node_modules/http-server/node_modules/colors/tests/basic-test.js b/node_modules/http-server/node_modules/colors/tests/basic-test.js
new file mode 100644
index 00000000..fda8af4e
--- /dev/null
+++ b/node_modules/http-server/node_modules/colors/tests/basic-test.js
@@ -0,0 +1,50 @@
+var assert = require('assert'),
+ colors = require('../lib/index');
+
+var s = 'string';
+
+function a(s, code) {
+ return '\x1B[' + code.toString() + 'm' + s + '\x1B[39m';
+}
+
+function aE(s, color, code) {
+ assert.equal(s[color], a(s, code));
+ assert.equal(colors[color](s), a(s, code));
+ assert.equal(s[color], colors[color](s));
+ assert.equal(s[color].strip, s);
+ assert.equal(s[color].strip, colors.strip(s));
+}
+
+function h(s, color) {
+ return '' + s + ' ';
+}
+
+var stylesColors = ['white', 'black', 'blue', 'cyan', 'green', 'magenta', 'red', 'yellow'];
+var stylesAll = stylesColors.concat(['bold', 'italic', 'underline', 'inverse', 'rainbow']);
+
+colors.mode = 'console';
+assert.equal(s.bold, '\x1B[1m' + s + '\x1B[22m');
+assert.equal(s.italic, '\x1B[3m' + s + '\x1B[23m');
+assert.equal(s.underline, '\x1B[4m' + s + '\x1B[24m');
+assert.equal(s.strikethrough, '\x1B[9m' + s + '\x1B[29m');
+assert.equal(s.inverse, '\x1B[7m' + s + '\x1B[27m');
+
+assert.ok(s.rainbow);
+
+aE(s, 'white', 37);
+aE(s, 'grey', 90);
+aE(s, 'black', 30);
+aE(s, 'blue', 34);
+aE(s, 'cyan', 36);
+aE(s, 'green', 32);
+aE(s, 'magenta', 35);
+aE(s, 'red', 31);
+aE(s, 'yellow', 33);
+
+assert.equal(s, 'string');
+
+colors.setTheme({error:'red'});
+
+assert.equal(typeof("astring".red),'string');
+assert.equal(typeof("astring".error),'string');
+
diff --git a/node_modules/http-server/node_modules/colors/tests/safe-test.js b/node_modules/http-server/node_modules/colors/tests/safe-test.js
new file mode 100644
index 00000000..daad4f96
--- /dev/null
+++ b/node_modules/http-server/node_modules/colors/tests/safe-test.js
@@ -0,0 +1,45 @@
+var assert = require('assert'),
+ colors = require('../safe');
+
+var s = 'string';
+
+function a(s, code) {
+ return '\x1B[' + code.toString() + 'm' + s + '\x1B[39m';
+}
+
+function aE(s, color, code) {
+ assert.equal(colors[color](s), a(s, code));
+ assert.equal(colors.strip(s), s);
+}
+
+function h(s, color) {
+ return '' + s + ' ';
+}
+
+var stylesColors = ['white', 'black', 'blue', 'cyan', 'green', 'magenta', 'red', 'yellow'];
+var stylesAll = stylesColors.concat(['bold', 'italic', 'underline', 'inverse', 'rainbow']);
+
+colors.mode = 'console';
+assert.equal(colors.bold(s), '\x1B[1m' + s + '\x1B[22m');
+assert.equal(colors.italic(s), '\x1B[3m' + s + '\x1B[23m');
+assert.equal(colors.underline(s), '\x1B[4m' + s + '\x1B[24m');
+assert.equal(colors.strikethrough(s), '\x1B[9m' + s + '\x1B[29m');
+assert.equal(colors.inverse(s), '\x1B[7m' + s + '\x1B[27m');
+
+assert.ok(colors.rainbow);
+
+aE(s, 'white', 37);
+aE(s, 'grey', 90);
+aE(s, 'black', 30);
+aE(s, 'blue', 34);
+aE(s, 'cyan', 36);
+aE(s, 'green', 32);
+aE(s, 'magenta', 35);
+aE(s, 'red', 31);
+aE(s, 'yellow', 33);
+
+assert.equal(s, 'string');
+colors.setTheme({error:'red'});
+
+assert.equal(typeof(colors.red("astring")), 'string');
+assert.equal(typeof(colors.error("astring")), 'string');
\ No newline at end of file
diff --git a/node_modules/http-server/node_modules/colors/themes/generic-logging.js b/node_modules/http-server/node_modules/colors/themes/generic-logging.js
new file mode 100644
index 00000000..571972c1
--- /dev/null
+++ b/node_modules/http-server/node_modules/colors/themes/generic-logging.js
@@ -0,0 +1,12 @@
+module['exports'] = {
+ silly: 'rainbow',
+ input: 'grey',
+ verbose: 'cyan',
+ prompt: 'grey',
+ info: 'green',
+ data: 'grey',
+ help: 'cyan',
+ warn: 'yellow',
+ debug: 'blue',
+ error: 'red'
+};
\ No newline at end of file
diff --git a/node_modules/http-server/node_modules/corser/.npmignore b/node_modules/http-server/node_modules/corser/.npmignore
new file mode 100644
index 00000000..ffa2e1f7
--- /dev/null
+++ b/node_modules/http-server/node_modules/corser/.npmignore
@@ -0,0 +1,2 @@
+example/
+test/
diff --git a/node_modules/http-server/node_modules/corser/.travis.yml b/node_modules/http-server/node_modules/corser/.travis.yml
new file mode 100644
index 00000000..57071b9f
--- /dev/null
+++ b/node_modules/http-server/node_modules/corser/.travis.yml
@@ -0,0 +1,4 @@
+language: node_js
+node_js:
+ - "node"
+sudo: false
diff --git a/node_modules/http-server/node_modules/corser/LICENSE b/node_modules/http-server/node_modules/corser/LICENSE
new file mode 100644
index 00000000..5c4ea09c
--- /dev/null
+++ b/node_modules/http-server/node_modules/corser/LICENSE
@@ -0,0 +1,19 @@
+Copyright (C) 2012 Alexander GrĂŒneberg
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/http-server/node_modules/corser/README.md b/node_modules/http-server/node_modules/corser/README.md
new file mode 100644
index 00000000..5fcf6666
--- /dev/null
+++ b/node_modules/http-server/node_modules/corser/README.md
@@ -0,0 +1,202 @@
+Corser
+=======
+
+[](http://www.repostatus.org/#active)
+[](http://travis-ci.org/agrueneberg/Corser)
+
+A highly configurable, middleware compatible implementation of [CORS](http://www.w3.org/TR/cors/) for [Node.js](http://nodejs.org/).
+
+
+Changelog
+---------
+
+### 2.0.1 (August 16, 2016)
+
+* Add workaround for [Chrome 52 sending empty `Access-Control-Request-Headers` header](https://bugs.chromium.org/p/chromium/issues/detail?id=633729).
+
+### 2.0.0 (March 22, 2014)
+
+* Preflight requests are automatically closed. If there is a need for handling `OPTIONS` requests, check the `endPreflightRequests` option.
+* The parameters of the callback function in dynamic origin checking are now `(err, matches)` instead of just `(matches)`.
+
+
+Examples
+--------
+
+### How to use Corser as a middleware in Express
+
+See `example/express/` for a working example.
+
+ var express, corser, app;
+
+ express = require("express");
+ corser = require("corser");
+
+ app = express();
+
+ app.use(corser.create());
+
+ app.get("/", function (req, res) {
+ res.writeHead(200);
+ res.end("Nice weather today, huh?");
+ });
+
+ app.listen(1337);
+
+### How to use Corser as a middleware in Connect
+
+See `example/connect/` for a working example.
+
+ var connect, corser, app;
+
+ connect = require("connect");
+ corser = require("corser");
+
+ app = connect();
+
+ app.use(corser.create());
+
+ app.use(function (req, res) {
+ res.writeHead(200);
+ res.end("Nice weather today, huh?");
+ });
+
+ app.listen(1337);
+
+### How to use Corser with plain `http`
+
+ var http, corser, corserRequestListener;
+
+ http = require("http");
+ corser = require("corser");
+
+ // Create Corser request listener.
+ corserRequestListener = corser.create();
+
+ http.createServer(function (req, res) {
+ // Route req and res through the request listener.
+ corserRequestListener(req, res, function () {
+ res.writeHead(200);
+ res.end("Nice weather today, huh?");
+ });
+ }).listen(1337);
+
+
+API
+---
+
+### Creating a Corser request listener
+
+Creating a Corser request listener that generates the appropriate response headers to enable CORS is as simple as:
+
+ corser.create()
+
+This is the equivalent of setting a response header of `Access-Control-Allow-Origin: *`. If you want to restrict the origins, or allow more sophisticated request or response headers, you have to pass a configuration object to `corser.create`.
+
+Corser will automatically end preflight requests for you. A preflight request is a special `OPTIONS` request that the browser sends under certain conditions to negotiate with the server what methods, request headers and response headers are allowed for a CORS request. If you need to use the `OPTIONS` method for other stuff, just set `endPreflightRequests` to `false` and terminate those requests yourself:
+
+ var corserRequestListener;
+
+ corserRequestListener = corser.create({
+ endPreflightRequests: false
+ });
+
+ corserRequestListener(req, res, function () {
+ if (req.method === "OPTIONS") {
+ // End CORS preflight request.
+ res.writeHead(204);
+ res.end();
+ } else {
+ // Implement other HTTP methods.
+ }
+ });
+
+
+#### Configuration Object
+
+A configuration object with the following properties can be passed to `corser.create`.
+
+##### `origins`
+
+A case-sensitive whitelist of origins. Unless unbound, if the request comes from an origin that is not in this list, it will not be handled by CORS.
+
+To allow for dynamic origin checking, a function `(origin, callback)` can be passed instead of an array. `origin` is the Origin header, `callback` is a function `(err, matches)`, where `matches` is a boolean flag that indicates whether the given Origin header matches or not.
+
+Default: unbound, i.e. every origin is accepted.
+
+##### `methods`
+
+An uppercase whitelist of methods. If the request uses a method that is not in this list, it will not be handled by CORS.
+
+Setting a value here will overwrite the list of default simple methods. To not lose them, concat the methods you want to add with `corser.simpleMethods`: `corser.simpleMethods.concat(["PUT", "DELETE"])`.
+
+Default: simple methods (`GET`, `HEAD`, `POST`).
+
+##### `requestHeaders`
+
+A case-insensitive whitelist of request headers. If the request uses a request header that is not in this list, it will not be handled by CORS.
+
+Setting a value here will overwrite the list of default simple request headers. To not lose them, concat the request headers you want to add with `corser.simpleRequestHeaders`: `corser.simpleRequestHeaders.concat(["Authorization"])`.
+
+Default: simple request headers (`Accept`, `Accept-Language`, `Content-Language`, `Content-Type`, `Last-Event-ID`).
+
+##### `responseHeaders`
+
+A case-insensitive whitelist of response headers. Any response header that is not in this list will be filtered out by the user-agent (the browser).
+
+Setting a value here will overwrite the list of default simple response headers. To not lose them, concat the response headers you want to add with `corser.simpleResponseHeaders`: `corser.simpleResponseHeaders.concat(["ETag"])`.
+
+Default: simple response headers (`Cache-Control`, `Content-Language`, `Content-Type`, `Expires`, `Last-Modified`, `Pragma`).
+
+##### `supportsCredentials`
+
+A boolean that indicates if cookie credentials can be transferred as part of a CORS request. Currently, only a few HTML5 elements can benefit from this setting.
+
+Default: `false`.
+
+##### `maxAge`
+
+An integer that indicates the maximum amount of time in seconds that a preflight request is kept in the client-side preflight result cache.
+
+Default: not set.
+
+##### `endPreflightRequests`
+
+A boolean that indicates if CORS preflight requests should be automatically closed.
+
+Default: `true`.
+
+
+FAQ
+---
+
+### Ajax call returns `Origin X is not allowed by Access-Control-Allow-Origin`
+
+Check if the `Origin` header of your request matches one of the origins provided in the `origins` property of the configuration object. If you didn't set any `origins` property, jump to the next question.
+
+
+### Ajax call still returns `Origin X is not allowed by Access-Control-Allow-Origin`
+
+Your request might use a non-simple method or one or more non-simple headers. According to the specification, the set of simple methods is `GET`, `HEAD`, and `POST`, and the set of simple request headers is `Accept`, `Accept-Language`, `Content-Language`, `Content-Type`, and `Last-Event-ID`. If your request uses **any** other method or header, you have to explicitly list them in the `methods` or `requestHeaders` property of the configuration object.
+
+
+#### Example
+
+You want to allow requests that use an `X-Requested-With` header. Pass the following configuration object to `corser.create`:
+
+ corser.create({
+ requestHeaders: corser.simpleRequestHeaders.concat(["X-Requested-With"])
+ });
+
+
+### Getting a response header returns `Refused to get unsafe header "X"`
+
+Your browser blocks every non-simple response headers that was not explicitly allowed in the preflight request. The set of simple response headers is `Cache-Control`, `Content-Language`, `Content-Type`, `Expires`, `Last-Modified`, `Pragma`. If you want to access **any** other response header, you have to explicitly list them in the `responseHeaders` property of the configuration object.
+
+#### Example
+
+You want to allow clients to read the `ETag` header of a response. Pass the following configuration object to `corser.create`:
+
+ corser.create({
+ responseHeaders: corser.simpleResponseHeaders.concat(["ETag"])
+ });
diff --git a/node_modules/http-server/node_modules/corser/lib/corser.js b/node_modules/http-server/node_modules/corser/lib/corser.js
new file mode 100644
index 00000000..b1b34ff0
--- /dev/null
+++ b/node_modules/http-server/node_modules/corser/lib/corser.js
@@ -0,0 +1,228 @@
+/**
+ * Specification: http://www.w3.org/TR/2012/WD-cors-20120403/
+ * W3C Working Draft 3 April 2012
+ */
+"use strict";
+
+/*jshint node:true */
+
+var simpleMethods, simpleRequestHeaders, simpleResponseHeaders, toLowerCase, checkOriginMatch;
+
+// A method is said to be a simple method if it is a case-sensitive match for one of the following:
+Object.defineProperty(exports, "simpleMethods", {
+ get: function () {
+ return [
+ "GET",
+ "HEAD",
+ "POST"
+ ];
+ }
+});
+simpleMethods = exports.simpleMethods;
+
+// A header is said to be a simple header if the header field name is an ASCII case-insensitive match for one of
+// the following:
+Object.defineProperty(exports, "simpleRequestHeaders", {
+ get: function () {
+ return [
+ "accept",
+ "accept-language",
+ "content-language",
+ "content-type"
+ ];
+ }
+});
+simpleRequestHeaders = exports.simpleRequestHeaders;
+
+// A header is said to be a simple response header if the header field name is an ASCII case-insensitive
+// match for one of the following:
+Object.defineProperty(exports, "simpleResponseHeaders", {
+ get: function () {
+ return [
+ "cache-control",
+ "content-language",
+ "content-type",
+ "expires",
+ "last-modified",
+ "pragma"
+ ];
+ }
+});
+simpleResponseHeaders = exports.simpleResponseHeaders;
+
+toLowerCase = function (array) {
+ return array.map(function (el) {
+ return el.toLowerCase();
+ });
+};
+
+checkOriginMatch = function (originHeader, origins, callback) {
+ if (typeof origins === "function") {
+ origins(originHeader, function (err, allow) {
+ callback(err, allow);
+ });
+ } else if (origins.length > 0) {
+ callback(null, origins.some(function (origin) {
+ return origin === originHeader;
+ }));
+ } else {
+ // Always matching is acceptable since the list of origins can be unbounded.
+ callback(null, true);
+ }
+};
+
+exports.create = function (options) {
+ options = options || {};
+ options.origins = options.origins || [];
+ options.methods = options.methods || simpleMethods;
+ if (options.hasOwnProperty("requestHeaders") === true) {
+ options.requestHeaders = toLowerCase(options.requestHeaders);
+ } else {
+ options.requestHeaders = simpleRequestHeaders;
+ }
+ if (options.hasOwnProperty("responseHeaders") === true) {
+ options.responseHeaders = toLowerCase(options.responseHeaders);
+ } else {
+ options.responseHeaders = simpleResponseHeaders;
+ }
+ options.maxAge = options.maxAge || null;
+ options.supportsCredentials = options.supportsCredentials || false;
+ if (options.hasOwnProperty("endPreflightRequests") === false) {
+ options.endPreflightRequests = true;
+ }
+ return function (req, res, next) {
+ var methodMatches, headersMatch, requestMethod, requestHeaders, exposedHeaders, endPreflight;
+ // If the Origin header is not present terminate this set of steps.
+ if (!req.headers.hasOwnProperty("origin")) {
+ // The request is outside the scope of the CORS specification. If there is no Origin header,
+ // it could be a same-origin request. Let's let the user-agent handle this situation.
+ next();
+ } else {
+ // If the value of the Origin header is not a case-sensitive match for any of the values in
+ // list of origins, do not set any additional headers and terminate this set of steps.
+ checkOriginMatch(req.headers.origin, options.origins, function (err, originMatches) {
+ if (err !== null) {
+ next(err);
+ } else {
+ if (typeof originMatches !== "boolean" || originMatches === false) {
+ next();
+ } else {
+ // Respond to preflight request.
+ if (req.method === "OPTIONS") {
+ endPreflight = function () {
+ if (options.endPreflightRequests === true) {
+ res.writeHead(204);
+ res.end();
+ } else {
+ next();
+ }
+ };
+ // If there is no Access-Control-Request-Method header or if parsing failed, do not set
+ // any additional headers and terminate this set of steps.
+ if (!req.headers.hasOwnProperty("access-control-request-method")) {
+ endPreflight();
+ } else {
+ requestMethod = req.headers["access-control-request-method"];
+ // If there are no Access-Control-Request-Headers headers let header field-names be the
+ // empty list. If parsing failed do not set any additional headers and terminate this set
+ // of steps.
+ // Checking for an empty header is a workaround for a bug Chrome 52:
+ // https://bugs.chromium.org/p/chromium/issues/detail?id=633729
+ if (req.headers.hasOwnProperty("access-control-request-headers") && req.headers["access-control-request-headers"] !== "") {
+ requestHeaders = toLowerCase(req.headers["access-control-request-headers"].split(/,\s*/));
+ } else {
+ requestHeaders = [];
+ }
+ // If method is not a case-sensitive match for any of the values in list of methods do not
+ // set any additional headers and terminate this set of steps.
+ methodMatches = options.methods.indexOf(requestMethod) !== -1;
+ if (methodMatches === false) {
+ endPreflight();
+ } else {
+ // If any of the header field-names is not a ASCII case-insensitive match for any of
+ // the values in list of headers do not set any additional headers and terminate this
+ // set of steps.
+ headersMatch = requestHeaders.every(function (requestHeader) {
+ // Browsers automatically add Origin to Access-Control-Request-Headers. However,
+ // Origin is not one of the simple request headers. Therefore, the header is
+ // accepted even if it is not in the list of request headers because CORS would
+ // not work without it.
+ if (requestHeader === "origin") {
+ return true;
+ } else {
+ if (options.requestHeaders.indexOf(requestHeader) !== -1) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+ });
+ if (headersMatch === false) {
+ endPreflight();
+ } else {
+ if (options.supportsCredentials === true) {
+ // If the resource supports credentials add a single Access-Control-Allow-Origin
+ // header, with the value of the Origin header as value, and add a single
+ // Access-Control-Allow-Credentials header with the literal string "true"
+ // as value.
+ res.setHeader("Access-Control-Allow-Origin", req.headers.origin);
+ res.setHeader("Access-Control-Allow-Credentials", "true");
+ } else {
+ // Otherwise, add a single Access-Control-Allow-Origin header, with either the
+ // value of the Origin header or the string "*" as value.
+ if (options.origins.length > 0 || typeof options.origins === "function") {
+ res.setHeader("Access-Control-Allow-Origin", req.headers.origin);
+ } else {
+ res.setHeader("Access-Control-Allow-Origin", "*");
+ }
+ }
+ // Optionally add a single Access-Control-Max-Age header with as value the amount
+ // of seconds the user agent is allowed to cache the result of the request.
+ if (options.maxAge !== null) {
+ res.setHeader("Access-Control-Max-Age", options.maxAge);
+ }
+ // Add one or more Access-Control-Allow-Methods headers consisting of (a subset
+ // of) the list of methods.
+ res.setHeader("Access-Control-Allow-Methods", options.methods.join(","));
+ // Add one or more Access-Control-Allow-Headers headers consisting of (a subset
+ // of) the list of headers.
+ res.setHeader("Access-Control-Allow-Headers", options.requestHeaders.join(","));
+ // And out.
+ endPreflight();
+ }
+ }
+ }
+ } else {
+ if (options.supportsCredentials === true) {
+ // If the resource supports credentials add a single Access-Control-Allow-Origin header,
+ // with the value of the Origin header as value, and add a single
+ // Access-Control-Allow-Credentials header with the literal string "true" as value.
+ res.setHeader("Access-Control-Allow-Origin", req.headers.origin);
+ res.setHeader("Access-Control-Allow-Credentials", "true");
+ } else {
+ // Otherwise, add a single Access-Control-Allow-Origin header, with either the value of
+ // the Origin header or the literal string "*" as value.
+ // If the list of origins is empty, use "*" as value.
+ if (options.origins.length > 0 || typeof options.origins === "function") {
+ res.setHeader("Access-Control-Allow-Origin", req.headers.origin);
+ } else {
+ res.setHeader("Access-Control-Allow-Origin", "*");
+ }
+ }
+ // If the list of exposed headers is not empty add one or more Access-Control-Expose-Headers
+ // headers, with as values the header field names given in the list of exposed headers.
+ exposedHeaders = options.responseHeaders.filter(function (optionsResponseHeader) {
+ return simpleResponseHeaders.indexOf(optionsResponseHeader) === -1;
+ });
+ if (exposedHeaders.length > 0) {
+ res.setHeader("Access-Control-Expose-Headers", exposedHeaders.join(","));
+ }
+ // And out.
+ next();
+ }
+ }
+ }
+ });
+ }
+ };
+};
diff --git a/node_modules/http-server/node_modules/corser/package.json b/node_modules/http-server/node_modules/corser/package.json
new file mode 100644
index 00000000..319aeae0
--- /dev/null
+++ b/node_modules/http-server/node_modules/corser/package.json
@@ -0,0 +1,63 @@
+{
+ "name": "corser",
+ "version": "2.0.1",
+ "description": "A highly configurable, middleware compatible implementation of CORS.",
+ "keywords": [
+ "cors",
+ "cross-origin resource sharing",
+ "connect",
+ "express",
+ "middleware"
+ ],
+ "bugs": {
+ "url": "https://github.com/agrueneberg/Corser/issues"
+ },
+ "license": "MIT",
+ "author": {
+ "name": "Alexander GrĂŒneberg",
+ "email": "alexander.grueneberg@googlemail.com"
+ },
+ "main": "./lib/corser.js",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/agrueneberg/Corser.git"
+ },
+ "scripts": {
+ "test": "mocha"
+ },
+ "devDependencies": {
+ "mocha": "1.3.x",
+ "expect.js": "0.1.x"
+ },
+ "engines": {
+ "node": ">= 0.4.0"
+ },
+ "gitHead": "ba612c30145eb0245957a135cdb26bf2f2734164",
+ "homepage": "https://github.com/agrueneberg/Corser#readme",
+ "_id": "corser@2.0.1",
+ "_shasum": "8eda252ecaab5840dcd975ceb90d9370c819ff87",
+ "_from": "corser@>=2.0.0 <2.1.0",
+ "_npmVersion": "3.10.6",
+ "_nodeVersion": "6.3.1",
+ "_npmUser": {
+ "name": "agrueneberg",
+ "email": "alexander.grueneberg@googlemail.com"
+ },
+ "maintainers": [
+ {
+ "name": "agrueneberg",
+ "email": "alexander.grueneberg@googlemail.com"
+ }
+ ],
+ "dist": {
+ "shasum": "8eda252ecaab5840dcd975ceb90d9370c819ff87",
+ "tarball": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz"
+ },
+ "_npmOperationalInternal": {
+ "host": "packages-16-east.internal.npmjs.com",
+ "tmp": "tmp/corser-2.0.1.tgz_1471373999376_0.5666255787946284"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/node_modules/http-server/node_modules/ecstatic/.npmignore b/node_modules/http-server/node_modules/ecstatic/.npmignore
new file mode 100644
index 00000000..7cf3427e
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/.npmignore
@@ -0,0 +1,19 @@
+lib-cov
+*.seed
+*.log
+*.csv
+*.dat
+*.out
+*.pid
+*.gz
+
+pids
+logs
+results
+
+node_modules
+npm-debug.log
+
+# Unicode filenames cause jenkins to barf when cleaning up workspaces
+# See: https://github.com/jfhbrook/node-ecstatic/issues/128
+test
diff --git a/node_modules/http-server/node_modules/ecstatic/.travis.yml b/node_modules/http-server/node_modules/ecstatic/.travis.yml
new file mode 100644
index 00000000..89c8a99f
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/.travis.yml
@@ -0,0 +1,8 @@
+language: node_js
+sudo: false
+node_js:
+ - 0.12
+ - 0.10
+ - 4.0
+ - 4.1
+ - 4.2
diff --git a/node_modules/http-server/node_modules/ecstatic/CHANGELOG.md b/node_modules/http-server/node_modules/ecstatic/CHANGELOG.md
new file mode 100644
index 00000000..d4d2fa6d
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/CHANGELOG.md
@@ -0,0 +1,84 @@
+2015/05/10 Version 1.4.1
+- Compare if-modified-since header against server-generated last-modified header rather than raw mtime
+
+2015/12/22 Version 1.4.0
+- Add ability to specify custom mimetypes via a JSON blob (on the CLI)
+- Started test suite around CLI options parsing
+- Workaround for egregious v8 bug around date parsing throwing during modified-since checks
+
+2015/11/15 Version 1.3.1
+- Add recent contributors to CONTRIBUTORS.md
+- Document showDotFiles in main options example
+
+2015/11/14 Version 1.3.0
+- opts.showDotFiles allows hiding dot files
+
+2015/11/03 Version 1.2.0
+- opts.cache supports function argument
+
+2015/10/03 Version 1.1.3
+- Add CORS=false to defaults
+
+2015/10/02 Version 1.1.2
+- Properly handle defaults in CLI args
+
+2015/10/02 Version 1.1.1
+- Properly handle boolean CLI args
+
+2015/10/01 Version 1.1.0
+- Adds support for responding to OPTIONS headers
+- Adds support for setting custom headers
+- Adds cors convenience setting
+
+2015/09/22 Version 1.0.1
+- Use encodeURIComponent when creating links in showdir
+
+2015/09/14 Version 1.0.0
+- Optional support for weak Etags and weak Etag *comparison*, useful for cases
+ where one is running ecstatic with gzip behind an nginx proxy (these will
+ likely be turned ON by default in a following major version)
+- As a bin, respects process.env.PORT when binding to a port
+- Directory listings encode pathnames, etc
+- Default status pages return html instead of text/plain
+- Contributors are listed in CONTRIBUTORS.md, referenced by LICENSE.txt
+
+2015/05/22 Version 0.8.0
+- Add ability to define custom mime-types, inline or with Apache .types file
+- Test against express ^4.12.3 and union ^0.4.4
+- Run tests with tap ^1.0.3
+- Fix newline asserts to work with windows
+- Add license attribute to package.json
+- Elaborate contribution guidelines
+
+2015/05/09 Version 0.7.6
+- Fix double encoding in directory listings
+
+2015/05/07 Version 0.7.5
+- Fix HTML reflection vulnerability in certain error handlers
+
+2015/04/17 Version 0.7.4
+- Fix sort ordering in directory listings
+
+2015/04/13 Version 0.7.3
+- Close fstream if/when res closes, fixes potential fd leak
+
+2015/04/05 Version 0.7.2
+- Correctly handle req.statusCode in recursive calls; do not inherit upstream res.statusCode
+
+2015/03/27 Version 0.7.1
+- Treat ENOTDIR as 404 (same as ENOENT)
+
+2015/03/18 Version 0.7.0
+- Add support for specifying default content-type (as an alternative to application/octet-stream)
+- Use url-join for autoIndex route, fixes windows problems
+
+2015/03/01 Version 0.6.1
+- Fix handleError fall-through with directory listings
+
+2015/02/16 Version 0.6.0
+- Fix for pathname decoding in windows
+- Fix for hrefs in directory listings
+- Add ability to turn off setting of Server header
+- Remove extraneous call to res.end (handled by stream pipe)
+- Remove tests from npm package due to jenkins bug
+- Start a ChangeLog.md
diff --git a/node_modules/http-server/node_modules/ecstatic/CONTRIBUTING.md b/node_modules/http-server/node_modules/ecstatic/CONTRIBUTING.md
new file mode 100644
index 00000000..8a388e7c
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/CONTRIBUTING.md
@@ -0,0 +1,86 @@
+# Contributing Guidelines
+
+## Code of Conduct
+
+This is probably way overkill, but this is by far my most active project in
+terms of contributions, and somewhere along the way I was convinced that it
+was a good idea to have this in place sooner rather than later:
+
+I want to provide a safe, healthy environment for all contributors/participants
+regardless of gender, sexual orientation, disability, race, religion, etc.
+As such, I don't tolerate harassment of participants in any form. In particular
+this applies to my issues tracker, but also to any other means of communication
+associated with this project that might come up. Anyone who violates these
+basic rules may be sanctioned/banned/have-their-comments-deleted/etc by my
+discretion.
+
+Glad we cleared that up.
+
+## Branching
+
+Before working on your fix/feature/whatever, you should create a new branch to
+work on. Do something like:
+
+```sh
+$ git checkout -b 'my-sweet-new-pull-request'
+```
+
+## Please Please Please Start With A Test
+
+ecstatic has some pretty gnarly branching/logic underneath. Tests are extremely
+important because they (a) prove that your feature/fix works, and (b) avoid
+regressions in the future. Even if your patch is problematic enough to not be
+merged, a test will still be very helpful for confirming any future fix.
+
+I won't reject your patch outright if it's missing new tests, but it sure
+helps!
+
+## Code Style
+
+Ecstatic's code base follows a relatively consistent style. The closer your
+patch blends in with the status quo, the better.
+
+A few PROTIPS off the top of my head:
+
+1. Variables don't need to all be declared at the top, BUT variable *blocks*
+should do the whole one-var, tons-of-commas thing.
+2. Look at how spacing is done around conditionals and functions. Do it like
+that.
+3. `else`'s and similar should be on the line *after* the preceding bracket.
+
+We can refine this as the need arises.
+
+## A Few Other Minor Guidelines
+
+1. Keep your pull requests on-topic. A pull request purporting to tackle A
+shouldn't also have commits changing B and C. Feel free to make separate pull
+requests. For instance: A pull request should generally only update
+dependencies when doing so is required to add the feature or fix the bug. This
+feature can, of course, consist of updating dependencies.
+2. I prefer maintaining the changelog and package.json version myself. This is
+because I try to make a single commit for a tagged release contain all
+changelog additions and the version bump, and this breaks down when there are
+interstitial commits making updates to either.
+3. In case you were wondering about dependencies, you may find this helpful:
+[](https://david-dm.org/jfhbrook/node-ecstatic)
+4. Please add yourself to CONTRIBUTORS.md if you haven't done so! Fill in as
+much as makes you comfortable.
+
+## Pull Request
+
+Make a pull request against master with your new branch. Explain briefly what
+the patch does to the code, along with any concerns.
+
+(If you don't have a description, it's hard for me to put the changes in
+context. That makes it more difficult for me to merge!)
+
+## Keep It Moving
+
+I don't always notice new PRs, and sometimes I will forget to follow up on
+them. If this happens to you, you can bump the PR thread or find me on
+IRC or twitter.
+
+## LAST RULE
+
+HAVE FUN :v :v
+
diff --git a/node_modules/http-server/node_modules/ecstatic/CONTRIBUTORS.md b/node_modules/http-server/node_modules/ecstatic/CONTRIBUTORS.md
new file mode 100644
index 00000000..9deab1d9
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/CONTRIBUTORS.md
@@ -0,0 +1,57 @@
+General format is: contributor, github handle, email. In some cases, the
+contributor field is an organization instead of an actual person---this is for
+cases where the work was done on behalf of the organization, ie as part of
+their job. In others, no contributor field and/or email is shown---this is
+because this list was partially (mostly) reconstructed from github commit
+information and the person's real life name and email are unknown.
+
+Listed in no particular order:
+
+* Joshua Holbrook @jfhbrook
+* Jon Ege Ronnenberg @dotnetCarpenter
+* James Halliday @substack
+* Jonah Ruiz @jonahoffline
+* Jacob Burden @jekrb
+* @leesei
+* @SirAnthony
+* Frank Mecklenburg @yfr
+* @curimit
+* Dominic Tarr @dominictarr
+* Chew Choon Keat @choonkeat
+* Lars Kappert @webpro
+* Alan Reyes @KuttKatrea
+* Colin Fallon @colinf
+* Charlie Robbins @indexzero
+* Ville Salonen @VilleSalonen
+* Tom Steele @tomsteele
+* Maciej MaĆecki @mmalecki
+* Chris Bannister @Zariel
+* Shinnosuke Watanabe @shinnn
+* Adam Brady @SomeoneWeird
+* Christian Howe @coderarity
+* Arnaud @amelon
+* Gilad Peleg @pgilad
+* Brad Dunbar @braddunbar
+* Google Inc. via Jeremy Banks @jre-g
+* @sundippatel
+* Arjan van Wijk @ThaNarie
+* Mathias Buus @mafintosh
+* Farrin Reid @blakmatrix
+* TÔnis Tiigi @tonistiigi
+* Maksim Lin @maks
+* Jan Nicklas @jantimon
+* David Cox @losttime
+* Bill Ticehurst @billti
+* Vincent Voyer @vvo
+* @helloyou2012
+* Domenic Denicola @domenic
+* Maxim Ivanov @redbaron
+* Oliver Joseph Ash @OliverJAsh
+* Benjamin Tan @d10
+* D Scott Boyce @scobo
+* Zach Bruggerman @remixz
+* Mathias Bynens @mathiasbynens
+* Chris Lee @clee
+* Josh Duff @TehShrike
+* Cam Wiegert @camwiegert
+* Josh Gillies @joshgillies
diff --git a/node_modules/http-server/node_modules/ecstatic/LICENSE.txt b/node_modules/http-server/node_modules/ecstatic/LICENSE.txt
new file mode 100644
index 00000000..443ea12c
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/LICENSE.txt
@@ -0,0 +1,22 @@
+The MIT License (MIT)
+
+Copyright (c) 2013-2015 Joshua Holbrook and contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
diff --git a/node_modules/http-server/node_modules/ecstatic/README.md b/node_modules/http-server/node_modules/ecstatic/README.md
new file mode 100644
index 00000000..a48c07b9
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/README.md
@@ -0,0 +1,220 @@
+# Ecstatic [](http://travis-ci.org/jfhbrook/node-ecstatic)
+
+
+
+A simple static file server middleware. Use it with a raw http server or
+express/connect!
+
+# Examples:
+
+## express 3.0.x
+
+``` js
+var http = require('http');
+var express = require('express');
+var ecstatic = require('ecstatic');
+
+var app = express();
+app.use(ecstatic({ root: __dirname + '/public' }));
+http.createServer(app).listen(8080);
+
+console.log('Listening on :8080');
+```
+
+## stock http server
+
+``` js
+var http = require('http');
+var ecstatic = require('ecstatic');
+
+http.createServer(
+ ecstatic({ root: __dirname + '/public' })
+).listen(8080);
+
+console.log('Listening on :8080');
+```
+### fall through
+To allow fall through to your custom routes:
+
+```js
+ecstatic({ root: __dirname + '/public', handleError: false })
+```
+
+# API:
+
+## ecstatic(opts);
+
+Pass ecstatic an options hash, and it will return your middleware!
+
+```js
+var opts = {
+ root : __dirname + '/public',
+ port : 8000,
+ baseDir : '/',
+ cache : 3600,
+ showDir : true,
+ showDotfiles : true,
+ autoIndex : false,
+ humanReadable : true,
+ headers : {},
+ si : false,
+ defaultExt : 'html',
+ gzip : false,
+ serverHeader : true,
+ contentType : 'application/octet-stream',
+ mimeTypes : undefined,
+ handleOptionsMethod: false
+ }
+```
+
+If `opts` is a string, the string is assigned to the root folder and all other
+options are set to their defaults.
+
+### `opts.root`
+
+`opts.root` is the directory you want to serve up.
+
+### `opts.port`
+
+`opts.port` is the port you want ecstatic to listen to. Defaults to 8000.
+
+### `opts.baseDir`
+
+`opts.baseDir` is `/` by default, but can be changed to allow your static files
+to be served off a specific route. For example, if `opts.baseDir === "blog"`
+and `opts.root = "./public"`, requests for `localhost:8080/blog/index.html` will
+resolve to `./public/index.html`.
+
+### `opts.cache`
+
+Customize cache control with `opts.cache` , if it is a number then it will set max-age in seconds.
+Other wise it will pass through directly to cache-control. Time defaults to 3600 s (ie, 1 hour).
+
+If it is a function, it will be executed on every request, and passed the pathname. Whatever it returns, string or number, will be used as the cache control header like above.
+
+### `opts.showDir`
+
+Turn **off** directory listings with `opts.showDir === false`. Defaults to **true**.
+
+### `opts.showDotfiles`
+
+Exclude dotfiles from directory listings with `opts.showDotfiles === false`. Defaults to **true**.
+
+### `opts.humanReadable`
+
+If showDir is enabled, add human-readable file sizes. Defaults to **true**.
+Aliases are `humanreadable` and `human-readable`.
+
+### `opts.headers`
+
+Set headers on every response. `opts.headers` can be an object mapping string
+header names to string header values, a colon (:) separated string, or an array
+of colon separated strings.
+
+`opts.H` and `opts.header` are aliased to `opts.headers` so that you can use
+`-H` and `--header` options to set headers on the command-line like curl:
+
+``` sh
+$ ecstatic ./public -p 5000 -H 'Access-Control-Allow-Origin: *'
+```
+
+### `opts.si`
+
+If showDir and humanReadable are enabled, print file sizes with base 1000 instead
+of base 1024. Name is inferred from cli options for `ls`. Aliased to `index`, the
+equivalent option in Apache.
+
+### `opts.autoIndex`
+
+Serve `/path/index.html` when `/path/` is requested.
+Turn **off** autoIndexing with `opts.autoIndex === false`. Defaults to **true**.
+
+### `opts.defaultExt`
+
+Turn on default file extensions with `opts.defaultExt`. If `opts.defaultExt` is
+true, it will default to `html`. For example if you want a request to `/a-file`
+to resolve to `./public/a-file.html`, set this to `true`. If you want
+`/a-file` to resolve to `./public/a-file.json` instead, set `opts.defaultExt` to
+`json`.
+
+### `opts.gzip`
+
+Set `opts.gzip === true` in order to turn on "gzip mode," wherein ecstatic will
+serve `./public/some-file.js.gz` in place of `./public/some-file.js` when the
+gzipped version exists and ecstatic determines that the behavior is appropriate.
+
+### `opts.serverHeader`
+
+Set `opts.serverHeader` to false in order to turn off setting the `Server` header
+on all responses served by ecstatic.
+
+### `opts.contentType`
+
+Set `opts.contentType` in order to change default Content-Type header value.
+Defaults to **application/octet-stream**.
+
+### `opts.mimeTypes`
+
+Add new or override one or more mime-types. This affects the HTTP Content-Type header.
+Can either be a path to a [`.types`](http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types) file or an object hash of type(s).
+
+ ecstatic({ mimeType: { 'mime-type': ['file_extension', 'file_extension'] } })
+
+### `opts.handleError`
+
+Turn **off** handleErrors to allow fall-through with `opts.handleError === false`, Defaults to **true**.
+
+### `opts.weakEtags`
+
+Set `opts.weakEtags` to true in order to generate weak etags instead of strong etags. Defaults to **false**. See `opts.weakCompare` as well.
+
+### `opts.weakCompare`
+
+Turn **on** weakCompare to allow the weak comparison function for etag validation. Defaults to **false**.
+See https://www.ietf.org/rfc/rfc2616.txt Section 13.3.3 for more details.
+
+### `opts.handleOptionsMethod`
+
+Set handleOptionsMethod to true in order to respond to 'OPTIONS' calls with any standard/set headers. Defaults to **false**. Useful for hacking up CORS support.
+
+### `opts.cors`
+
+This is a **convenience** setting which turns on `handleOptionsMethod` and sets the headers **Access-Control-Allow-Origin: \*** and **Access-Control-Allow-Headers: Authorization, Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since**. This *should* be enough to quickly make cross-origin resource sharing work between development APIs. More advanced usage can come either from overriding these headers with the headers argument, or by using the `handleOptionsMethod` flag and then setting headers "manually." Alternately, just do it in your app using separate middlewares/abstractions.
+
+Defaults to **false**.
+
+## middleware(req, res, next);
+
+This works more or less as you'd expect.
+
+### ecstatic.showDir(folder);
+
+This returns another middleware which will attempt to show a directory view. Turning on auto-indexing is roughly equivalent to adding this middleware after an ecstatic middleware with autoindexing disabled.
+
+### `ecstatic` command
+
+to start a standalone static http server,
+run `npm install -g ecstatic` and then run `ecstatic [dir?] [options] --port PORT`
+all options work as above, passed in [optimist](https://github.com/substack/node-optimist) style.
+`port` defaults to `8000`. If a `dir` or `--root dir` argument is not passed, ecsatic will
+serve the current dir. Ecstatic also respects the PORT environment variable.
+
+# Tests:
+
+Ecstatic has a fairly extensive test suite. You can run it with:
+
+```sh
+$ npm test
+```
+
+# Contribute:
+
+Without outside contributions, ecstatic would wither and die! Before
+contributing, take a quick look at the contributing guidelines in
+[./CONTRIBUTING.md](./CONTRIBUTING.md) . They're relatively painless, I promise.
+For Windows users, it is especially important to read the [./CONTRIBUTING.md](./CONTRIBUTING.md)
+section as you can **not** clone ecstatic without changing some settings in git.
+
+# License:
+
+MIT. See LICENSE.txt. For contributors, see CONTRIBUTORS.md
diff --git a/node_modules/http-server/node_modules/ecstatic/example/core.js b/node_modules/http-server/node_modules/ecstatic/example/core.js
new file mode 100644
index 00000000..a50c667a
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/example/core.js
@@ -0,0 +1,10 @@
+var http = require('http');
+var ecstatic = require('../lib/ecstatic')({
+ root: __dirname + '/public',
+ showDir: true,
+ autoIndex: true
+});
+
+http.createServer(ecstatic).listen(8080);
+
+console.log('Listening on :8080');
diff --git a/node_modules/http-server/node_modules/ecstatic/example/express.js b/node_modules/http-server/node_modules/ecstatic/example/express.js
new file mode 100644
index 00000000..1d29c0df
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/example/express.js
@@ -0,0 +1,12 @@
+var express = require('express');
+var ecstatic = require('../lib/ecstatic');
+var http = require('http');
+
+var app = express();
+app.use(ecstatic({
+ root: __dirname + '/public',
+ showdir : true
+}));
+http.createServer(app).listen(8080);
+
+console.log('Listening on :8080');
diff --git a/node_modules/http-server/node_modules/ecstatic/example/public/beep/index.html b/node_modules/http-server/node_modules/ecstatic/example/public/beep/index.html
new file mode 100644
index 00000000..3311713f
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/example/public/beep/index.html
@@ -0,0 +1 @@
+boop!
diff --git a/node_modules/http-server/node_modules/ecstatic/example/public/hello.txt b/node_modules/http-server/node_modules/ecstatic/example/public/hello.txt
new file mode 100644
index 00000000..cd087558
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/example/public/hello.txt
@@ -0,0 +1 @@
+Hello world!
diff --git a/node_modules/http-server/node_modules/ecstatic/example/public/subdir/world.txt b/node_modules/http-server/node_modules/ecstatic/example/public/subdir/world.txt
new file mode 100644
index 00000000..abe0dc4b
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/example/public/subdir/world.txt
@@ -0,0 +1 @@
+hello cruel world!
diff --git a/node_modules/http-server/node_modules/ecstatic/example/public/turtle.png b/node_modules/http-server/node_modules/ecstatic/example/public/turtle.png
new file mode 100644
index 00000000..721a796b
Binary files /dev/null and b/node_modules/http-server/node_modules/ecstatic/example/public/turtle.png differ
diff --git a/node_modules/http-server/node_modules/ecstatic/example/union.js b/node_modules/http-server/node_modules/ecstatic/example/union.js
new file mode 100644
index 00000000..e162ec53
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/example/union.js
@@ -0,0 +1,10 @@
+var union = require('union');
+var ecstatic = require('../');
+
+union.createServer({
+ before: [
+ ecstatic(__dirname + '/public')
+ ]
+}).listen(8080);
+
+console.log('Listening on :8080');
diff --git a/node_modules/http-server/node_modules/ecstatic/lib/ecstatic.js b/node_modules/http-server/node_modules/ecstatic/lib/ecstatic.js
new file mode 100644
index 00000000..115de99e
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/lib/ecstatic.js
@@ -0,0 +1,371 @@
+#! /usr/bin/env node
+
+var path = require('path'),
+ fs = require('fs'),
+ url = require('url'),
+ mime = require('mime'),
+ urlJoin = require('url-join'),
+ showDir = require('./ecstatic/showdir'),
+ version = JSON.parse(
+ fs.readFileSync(__dirname + '/../package.json').toString()
+ ).version,
+ status = require('./ecstatic/status-handlers'),
+ generateEtag = require('./ecstatic/etag'),
+ optsParser = require('./ecstatic/opts');
+
+var ecstatic = module.exports = function (dir, options) {
+ if (typeof dir !== 'string') {
+ options = dir;
+ dir = options.root;
+ }
+
+ var root = path.join(path.resolve(dir), '/'),
+ opts = optsParser(options),
+ cache = opts.cache,
+ autoIndex = opts.autoIndex,
+ baseDir = opts.baseDir,
+ defaultExt = opts.defaultExt,
+ handleError = opts.handleError,
+ headers = opts.headers,
+ serverHeader = opts.serverHeader,
+ weakEtags = opts.weakEtags,
+ handleOptionsMethod = opts.handleOptionsMethod;
+
+ opts.root = dir;
+ if (defaultExt && /^\./.test(defaultExt)) defaultExt = defaultExt.replace(/^\./, '');
+
+ // Support hashes and .types files in mimeTypes @since 0.8
+ if (opts.mimeTypes) {
+ try {
+ // You can pass a JSON blob here---useful for CLI use
+ opts.mimeTypes = JSON.parse(opts.mimeTypes);
+ } catch (e) {}
+ if (typeof opts.mimeTypes === 'string') {
+ mime.load(opts.mimeTypes);
+ }
+ else if (typeof opts.mimeTypes === 'object') {
+ mime.define(opts.mimeTypes);
+ }
+ }
+
+
+ return function middleware (req, res, next) {
+
+ // Strip any null bytes from the url
+ while(req.url.indexOf('%00') !== -1) {
+ req.url = req.url.replace(/\%00/g, '');
+ }
+ // Figure out the path for the file from the given url
+ var parsed = url.parse(req.url);
+ try {
+ decodeURIComponent(req.url); // check validity of url
+ var pathname = decodePathname(parsed.pathname);
+ }
+ catch (err) {
+ return status[400](res, next, { error: err });
+ }
+
+ var file = path.normalize(
+ path.join(root,
+ path.relative(
+ path.join('/', baseDir),
+ pathname
+ )
+ )
+ ),
+ gzipped = file + '.gz';
+
+ if(serverHeader !== false) {
+ // Set common headers.
+ res.setHeader('server', 'ecstatic-'+version);
+ }
+ Object.keys(headers).forEach(function (key) {
+ res.setHeader(key, headers[key])
+ })
+
+ if (req.method === 'OPTIONS' && handleOptionsMethod) {
+ return res.end();
+ }
+
+ // TODO: This check is broken, which causes the 403 on the
+ // expected 404.
+ if (file.slice(0, root.length) !== root) {
+ return status[403](res, next);
+ }
+
+ if (req.method && (req.method !== 'GET' && req.method !== 'HEAD' )) {
+ return status[405](res, next);
+ }
+
+ function statFile() {
+ fs.stat(file, function (err, stat) {
+ if (err && (err.code === 'ENOENT' || err.code === 'ENOTDIR')) {
+ if (req.statusCode == 404) {
+ // This means we're already trying ./404.html and can not find it.
+ // So send plain text response with 404 status code
+ status[404](res, next);
+ }
+ else if (!path.extname(parsed.pathname).length && defaultExt) {
+ // If there is no file extension in the path and we have a default
+ // extension try filename and default extension combination before rendering 404.html.
+ middleware({
+ url: parsed.pathname + '.' + defaultExt + ((parsed.search)? parsed.search:'')
+ }, res, next);
+ }
+ else {
+ // Try to serve default ./404.html
+ middleware({
+ url: (handleError ? ('/' + path.join(baseDir, '404.' + defaultExt)) : req.url),
+ statusCode: 404
+ }, res, next);
+ }
+ }
+ else if (err) {
+ status[500](res, next, { error: err });
+ }
+ else if (stat.isDirectory()) {
+ // 302 to / if necessary
+ if (!parsed.pathname.match(/\/$/)) {
+ res.statusCode = 302;
+ res.setHeader('location', parsed.pathname + '/' +
+ (parsed.query? ('?' + parsed.query):'')
+ );
+ return res.end();
+ }
+
+ if (autoIndex) {
+ return middleware({
+ url: urlJoin(encodeURIComponent(pathname), '/index.' + defaultExt)
+ }, res, function (err) {
+ if (err) {
+ return status[500](res, next, { error: err });
+ }
+ if (opts.showDir) {
+ return showDir(opts, stat)(req, res);
+ }
+
+ return status[403](res, next);
+ });
+ }
+
+ if (opts.showDir) {
+ return showDir(opts, stat)(req, res);
+ }
+
+ status[404](res, next);
+
+ }
+ else {
+ serve(stat);
+ }
+ });
+ }
+
+ // Look for a gzipped file if this is turned on
+ if (opts.gzip && shouldCompress(req)) {
+ fs.stat(gzipped, function (err, stat) {
+ if (!err && stat.isFile()) {
+ file = gzipped;
+ return serve(stat);
+ } else {
+ statFile();
+ }
+ });
+ } else {
+ statFile();
+ }
+
+ function serve(stat) {
+ // Do a MIME lookup, fall back to octet-stream and handle gzip
+ // special case.
+ var defaultType = opts.contentType || 'application/octet-stream',
+ contentType = mime.lookup(file, defaultType),
+ charSet;
+
+ if (contentType) {
+ charSet = mime.charsets.lookup(contentType, 'utf-8');
+ if (charSet) {
+ contentType += '; charset=' + charSet;
+ }
+ }
+
+ if (path.extname(file) === '.gz') {
+ res.setHeader('Content-Encoding', 'gzip');
+
+ // strip gz ending and lookup mime type
+ contentType = mime.lookup(path.basename(file, ".gz"), defaultType);
+ }
+
+ var range = (req.headers && req.headers['range']);
+ if (range) {
+ var total = stat.size;
+ var parts = range.replace(/bytes=/, "").split("-");
+ var partialstart = parts[0];
+ var partialend = parts[1];
+ var start = parseInt(partialstart, 10);
+ var end = Math.min(total-1, partialend ? parseInt(partialend, 10) : total-1);
+ var chunksize = (end-start)+1;
+ if (start > end || isNaN(start) || isNaN(end)) {
+ return status['416'](res, next);
+ }
+ var fstream = fs.createReadStream(file, {start: start, end: end});
+ fstream.on('error', function (err) {
+ status['500'](res, next, { error: err });
+ });
+ res.on('close', function () {
+ fstream.destroy();
+ });
+ res.writeHead(206, {
+ 'Content-Range': 'bytes ' + start + '-' + end + '/' + total,
+ 'Accept-Ranges': 'bytes',
+ 'Content-Length': chunksize,
+ 'Content-Type': contentType
+ });
+ fstream.pipe(res);
+ return;
+ }
+
+ // TODO: Helper for this, with default headers.
+ var lastModified = (new Date(stat.mtime)).toUTCString(),
+ etag = generateEtag(stat, weakEtags);
+ res.setHeader('last-modified', lastModified);
+ res.setHeader('etag', etag);
+
+ if (typeof cache === 'function') {
+ var requestSpecificCache = cache(pathname);
+ if (typeof requestSpecificCache === 'number') {
+ requestSpecificCache = 'max-age=' + requestSpecificCache;
+ }
+ res.setHeader('cache-control', requestSpecificCache);
+ } else {
+ res.setHeader('cache-control', cache);
+ }
+
+ // Return a 304 if necessary
+ if (shouldReturn304(req, lastModified, etag)) {
+ return status[304](res, next);
+ }
+
+ res.setHeader('content-length', stat.size);
+ res.setHeader('content-type', contentType);
+
+ // set the response statusCode if we have a request statusCode.
+ // This only can happen if we have a 404 with some kind of 404.html
+ // In all other cases where we have a file we serve the 200
+ res.statusCode = req.statusCode || 200;
+
+ if (req.method === "HEAD") {
+ return res.end();
+ }
+
+ var stream = fs.createReadStream(file);
+
+ stream.pipe(res);
+ stream.on('error', function (err) {
+ status['500'](res, next, { error: err });
+ });
+ }
+
+ function shouldReturn304(req, serverLastModified, serverEtag) {
+ if (!req || !req.headers) {
+ return false;
+ }
+
+ var clientModifiedSince = req.headers['if-modified-since'],
+ clientEtag = req.headers['if-none-match'];
+
+ if (!clientModifiedSince && !clientEtag) {
+ // Client did not provide any conditional caching headers
+ return false;
+ }
+
+ if (clientModifiedSince) {
+ // Catch "illegal access" dates that will crash v8
+ // https://github.com/jfhbrook/node-ecstatic/pull/179
+ try {
+ var clientModifiedDate = new Date(Date.parse(clientModifiedSince));
+ }
+ catch (err) { return false }
+
+ if (clientModifiedDate.toString() === 'Invalid Date') {
+ return false;
+ }
+ // If the client's copy is older than the server's, don't return 304
+ if (clientModifiedDate < new Date(serverLastModified)) {
+ return false;
+ }
+ }
+
+ if (clientEtag) {
+ // Do a strong or weak etag comparison based on setting
+ // https://www.ietf.org/rfc/rfc2616.txt Section 13.3.3
+ if (opts.weakCompare && clientEtag !== serverEtag
+ && clientEtag !== ('W/' + serverEtag) && ('W/' + clientEtag) !== serverEtag) {
+ return false;
+ } else if (!opts.weakCompare && (clientEtag !== serverEtag || clientEtag.indexOf('W/') === 0)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+ };
+};
+
+ecstatic.version = version;
+ecstatic.showDir = showDir;
+
+// Check to see if we should try to compress a file with gzip.
+function shouldCompress(req) {
+ var headers = req.headers;
+
+ return headers && headers['accept-encoding'] &&
+ headers['accept-encoding']
+ .split(",")
+ .some(function (el) {
+ return ['*','compress', 'gzip', 'deflate'].indexOf(el) != -1;
+ })
+ ;
+}
+
+// See: https://github.com/jesusabdullah/node-ecstatic/issues/109
+function decodePathname(pathname) {
+ var pieces = pathname.replace(/\\/g,"/").split('/');
+
+ return pieces.map(function (piece) {
+ piece = decodeURIComponent(piece);
+
+ if (process.platform === 'win32' && /\\/.test(piece)) {
+ throw new Error('Invalid forward slash character');
+ }
+
+ return piece;
+ }).join('/');
+}
+
+if (!module.parent) {
+ var defaults = require('./ecstatic/defaults.json')
+ var http = require('http'),
+ opts = require('minimist')(process.argv.slice(2), {
+ alias: require('./ecstatic/aliases.json'),
+ default: defaults,
+ boolean: Object.keys(defaults).filter(function (key) {
+ return typeof defaults[key] === 'boolean'
+ })
+ }),
+ envPORT = parseInt(process.env.PORT, 10),
+ port = envPORT > 1024 && envPORT <= 65536 ? envPORT : opts.port || opts.p || 8000,
+ dir = opts.root || opts._[0] || process.cwd();
+
+ if (opts.help || opts.h) {
+ var u = console.error;
+ u('usage: ecstatic [dir] {options} --port PORT');
+ u('see https://npm.im/ecstatic for more docs');
+ return;
+ }
+
+ http.createServer(ecstatic(dir, opts))
+ .listen(port, function () {
+ console.log('ecstatic serving ' + dir + ' at http://0.0.0.0:' + port);
+ });
+}
diff --git a/node_modules/http-server/node_modules/ecstatic/lib/ecstatic/aliases.json b/node_modules/http-server/node_modules/ecstatic/lib/ecstatic/aliases.json
new file mode 100644
index 00000000..0ef56a11
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/lib/ecstatic/aliases.json
@@ -0,0 +1,34 @@
+{
+ "autoIndex": [ "autoIndex", "autoindex" ],
+ "showDir": [ "showDir", "showdir" ],
+ "showDotfiles": ["showDotfiles", "showdotfiles"],
+ "humanReadable": [ "humanReadable", "humanreadable", "human-readable" ],
+ "si": [ "si", "index" ],
+ "handleError": [ "handleError", "handleerror" ],
+ "cors": [ "cors", "CORS" ],
+ "headers": [ "H", "header", "headers" ],
+ "serverHeader": [ "serverHeader", "serverheader", "server-header" ],
+ "contentType": [ "contentType", "contenttype", "content-type" ],
+ "mimeType": [
+ "mimetype",
+ "mimetypes",
+ "mimeType",
+ "mimeTypes",
+ "mime-type",
+ "mime-types",
+ "mime-Type",
+ "mime-Types"
+ ],
+ "weakEtags": [ "weakEtags", "weaketags", "weak-etags" ],
+ "weakCompare": [
+ "weakcompare",
+ "weakCompare",
+ "weak-compare",
+ "weak-Compare"
+ ],
+ "handleOptionsMethod": [
+ "handleOptionsMethod",
+ "handleoptionsmethod",
+ "handle-options-method"
+ ]
+}
diff --git a/node_modules/http-server/node_modules/ecstatic/lib/ecstatic/defaults.json b/node_modules/http-server/node_modules/ecstatic/lib/ecstatic/defaults.json
new file mode 100644
index 00000000..501f31a7
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/lib/ecstatic/defaults.json
@@ -0,0 +1,17 @@
+{
+ "autoIndex": true,
+ "showDir": true,
+ "showDotfiles": true,
+ "humanReadable": true,
+ "si": false,
+ "cache": "max-age=3600",
+ "cors": false,
+ "gzip": false,
+ "defaultExt": ".html",
+ "handleError": true,
+ "serverHeader": true,
+ "contentType": "application/octet-stream",
+ "weakEtags": false,
+ "weakCompare": false,
+ "handleOptionsMethod": false
+}
diff --git a/node_modules/http-server/node_modules/ecstatic/lib/ecstatic/etag.js b/node_modules/http-server/node_modules/ecstatic/lib/ecstatic/etag.js
new file mode 100644
index 00000000..a64ccb04
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/lib/ecstatic/etag.js
@@ -0,0 +1,7 @@
+module.exports = function (stat, weakEtag) {
+ var etag = '"' + [stat.ino, stat.size, JSON.stringify(stat.mtime)].join('-') + '"';
+ if (weakEtag) {
+ etag = 'W/' + etag;
+ }
+ return etag;
+}
diff --git a/node_modules/http-server/node_modules/ecstatic/lib/ecstatic/opts.js b/node_modules/http-server/node_modules/ecstatic/lib/ecstatic/opts.js
new file mode 100644
index 00000000..ea080a6b
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/lib/ecstatic/opts.js
@@ -0,0 +1,180 @@
+// This is so you can have options aliasing and defaults in one place.
+
+var defaults = require('./defaults.json');
+var aliases = require('./aliases.json')
+
+module.exports = function (opts) {
+ var autoIndex = defaults.autoIndex,
+ showDir = defaults.showDir,
+ showDotfiles = defaults.showDotfiles,
+ humanReadable = defaults.humanReadable,
+ si = defaults.si,
+ cache = defaults.cache,
+ gzip = defaults.gzip,
+ defaultExt = defaults.defaultExt,
+ handleError = defaults.handleError,
+ headers = {},
+ serverHeader = defaults.serverHeader,
+ contentType = defaults.contentType,
+ mimeTypes,
+ weakEtags = defaults.weakEtags,
+ weakCompare = defaults.weakCompare,
+ handleOptionsMethod = defaults.handleOptionsMethod;
+
+ function isDeclared(k) {
+ return typeof opts[k] !== 'undefined' && opts[k] !== null;
+ }
+
+ if (opts) {
+ aliases.autoIndex.some(function (k) {
+ if (isDeclared(k)) {
+ autoIndex = opts[k];
+ return true;
+ }
+ });
+
+ aliases.showDir.some(function (k) {
+ if (isDeclared(k)) {
+ showDir = opts[k];
+ return true;
+ }
+ });
+
+ aliases.showDotfiles.some(function (k) {
+ if (isDeclared(k)) {
+ showDotfiles = opts[k];
+ return true;
+ }
+ });
+
+ aliases.humanReadable.some(function (k) {
+ if (isDeclared(k)) {
+ humanReadable = opts[k];
+ return true;
+ }
+ });
+
+ aliases.si.some(function (k) {
+ if (isDeclared(k)) {
+ si = opts[k];
+ return true;
+ }
+ });
+
+ if (opts.defaultExt && typeof opts.defaultExt === 'string') {
+ defaultExt = opts.defaultExt;
+ }
+
+ if (typeof opts.cache !== 'undefined' && opts.cache !== null) {
+ if (typeof opts.cache === 'string') {
+ cache = opts.cache;
+ }
+ else if (typeof opts.cache === 'number') {
+ cache = 'max-age=' + opts.cache;
+ }
+ else if (typeof opts.cache === 'function') {
+ cache = opts.cache
+ }
+ }
+
+ if (typeof opts.gzip !== 'undefined' && opts.gzip !== null) {
+ gzip = opts.gzip;
+ }
+
+ aliases.handleError.some(function (k) {
+ if (isDeclared(k)) {
+ handleError = opts[k];
+ return true;
+ }
+ });
+
+ aliases.cors.forEach(function(k) {
+ if (isDeclared(k) && k) {
+ handleOptionsMethod = true;
+ headers['Access-Control-Allow-Origin'] = '*';
+ headers['Access-Control-Allow-Headers'] = 'Authorization, Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since';
+ }
+ });
+
+ aliases.headers.forEach(function (k) {
+ if (!isDeclared(k)) return;
+ if (Array.isArray(opts[k])) {
+ opts[k].forEach(setHeader);
+ }
+ else if (opts[k] && typeof opts[k] === 'object') {
+ Object.keys(opts[k]).forEach(function (key) {
+ headers[key] = opts[k][key];
+ });
+ }
+ else setHeader(opts[k]);
+
+ function setHeader (str) {
+ var m = /^(.+?)\s*:\s*(.*)$/.exec(str)
+ if (!m) headers[str] = true
+ else headers[m[1]] = m[2]
+ }
+ });
+
+ aliases.serverHeader.some(function (k) {
+ if (isDeclared(k)) {
+ serverHeader = opts[k];
+ return true;
+ }
+ });
+
+ aliases.contentType.some(function (k) {
+ if (isDeclared(k)) {
+ contentType = opts[k];
+ return true;
+ }
+ });
+
+ aliases.mimeType.some(function (k) {
+ if (isDeclared(k)) {
+ mimeTypes = opts[k];
+ return true;
+ }
+ });
+
+ aliases.weakEtags.some(function (k) {
+ if (isDeclared(k)) {
+ weakEtags = opts[k];
+ return true;
+ }
+ });
+
+ aliases.weakCompare.some(function (k) {
+ if (isDeclared(k)) {
+ weakCompare = opts[k];
+ return true;
+ }
+ });
+
+ aliases.handleOptionsMethod.some(function (k) {
+ if (isDeclared(k)) {
+ handleOptionsMethod = handleOptionsMethod || opts[k];
+ return true;
+ }
+ });
+ }
+
+ return {
+ cache: cache,
+ autoIndex: autoIndex,
+ showDir: showDir,
+ showDotfiles: showDotfiles,
+ humanReadable: humanReadable,
+ si: si,
+ defaultExt: defaultExt,
+ baseDir: (opts && opts.baseDir) || '/',
+ gzip: gzip,
+ handleError: handleError,
+ headers: headers,
+ serverHeader: serverHeader,
+ contentType: contentType,
+ mimeTypes: mimeTypes,
+ weakEtags: weakEtags,
+ weakCompare: weakCompare,
+ handleOptionsMethod: handleOptionsMethod
+ };
+};
diff --git a/node_modules/http-server/node_modules/ecstatic/lib/ecstatic/showdir.js b/node_modules/http-server/node_modules/ecstatic/lib/ecstatic/showdir.js
new file mode 100644
index 00000000..b72f25e2
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/lib/ecstatic/showdir.js
@@ -0,0 +1,224 @@
+var ecstatic = require('../ecstatic'),
+ fs = require('fs'),
+ path = require('path'),
+ he = require('he'),
+ etag = require('./etag'),
+ url = require('url'),
+ status = require('./status-handlers');
+
+module.exports = function (opts, stat) {
+ // opts are parsed by opts.js, defaults already applied
+ var cache = opts.cache,
+ root = path.resolve(opts.root),
+ baseDir = opts.baseDir,
+ humanReadable = opts.humanReadable,
+ handleError = opts.handleError,
+ showDotfiles = opts.showDotfiles,
+ si = opts.si,
+ weakEtags = opts.weakEtags;
+
+ return function middleware (req, res, next) {
+
+ // Figure out the path for the file from the given url
+ var parsed = url.parse(req.url),
+ pathname = decodeURIComponent(parsed.pathname),
+ dir = path.normalize(
+ path.join(root,
+ path.relative(
+ path.join('/', baseDir),
+ pathname
+ )
+ )
+ );
+
+ fs.stat(dir, function (err, stat) {
+ if (err) {
+ return handleError ? status[500](res, next, { error: err }) : next();
+ }
+
+ // files are the listing of dir
+ fs.readdir(dir, function (err, files) {
+ if (err) {
+ return handleError ? status[500](res, next, { error: err }) : next();
+ }
+
+ // Optionally exclude dotfiles from directory listing.
+ if (!showDotfiles) {
+ files = files.filter(function(filename){
+ return filename.slice(0,1) !== '.';
+ });
+ }
+
+ res.setHeader('content-type', 'text/html');
+ res.setHeader('etag', etag(stat, weakEtags));
+ res.setHeader('last-modified', (new Date(stat.mtime)).toUTCString());
+ res.setHeader('cache-control', cache);
+
+ sortByIsDirectory(files, function (lolwuts, dirs, files) {
+ // It's possible to get stat errors for all sorts of reasons here.
+ // Unfortunately, our two choices are to either bail completely,
+ // or just truck along as though everything's cool. In this case,
+ // I decided to just tack them on as "??!?" items along with dirs
+ // and files.
+ //
+ // Whatever.
+
+ // if it makes sense to, add a .. link
+ if (path.resolve(dir, '..').slice(0, root.length) == root) {
+ return fs.stat(path.join(dir, '..'), function (err, s) {
+ if (err) {
+ return handleError ? status[500](res, next, { error: err }) : next();
+ }
+ dirs.unshift([ '..', s ]);
+ render(dirs, files, lolwuts);
+ });
+ }
+ render(dirs, files, lolwuts);
+ });
+
+ function sortByIsDirectory(paths, cb) {
+ // take the listing file names in `dir`
+ // returns directory and file array, each entry is
+ // of the array a [name, stat] tuple
+ var pending = paths.length,
+ errs = [],
+ dirs = [],
+ files = [];
+
+ if (!pending) {
+ return cb(errs, dirs, files);
+ }
+
+ paths.forEach(function (file) {
+ fs.stat(path.join(dir, file), function (err, s) {
+ if (err) {
+ errs.push([file, err]);
+ }
+ else if (s.isDirectory()) {
+ dirs.push([file, s]);
+ }
+ else {
+ files.push([file, s]);
+ }
+
+ if (--pending === 0) {
+ cb(errs, dirs, files);
+ }
+ });
+ });
+ }
+
+ function render(dirs, files, lolwuts) {
+ // each entry in the array is a [name, stat] tuple
+
+ // TODO: use stylessheets?
+ var html = [
+ '',
+ '',
+ ' ',
+ ' ',
+ ' ',
+ ' Index of ' + he.encode(pathname) +' ',
+ ' ',
+ ' ',
+ 'Index of ' + he.encode(pathname) + ' '
+ ].join('\n') + '\n';
+
+ html += '';
+
+ var failed = false;
+ var writeRow = function (file, i) {
+ // render a row given a [name, stat] tuple
+ var isDir = file[1].isDirectory && file[1].isDirectory();
+ var href = parsed.pathname.replace(/\/$/, '') + '/' + encodeURIComponent(file[0]);
+
+ // append trailing slash and query for dir entry
+ if (isDir) {
+ href += '/' + he.encode((parsed.search)? parsed.search:'');
+ }
+
+ var displayName = he.encode(file[0]) + ((isDir)? '/':'');
+
+ // TODO: use stylessheets?
+ html += '' +
+ '(' + permsToString(file[1]) + ') ' +
+ '' + sizeToString(file[1], humanReadable, si) + ' ' +
+ '' + displayName + ' ' +
+ ' \n';
+ };
+
+ dirs.sort(function (a, b) { return a[0].toString().localeCompare(b[0].toString()); }).forEach(writeRow);
+ files.sort(function (a, b) { return a.toString().localeCompare(b.toString()); }).forEach(writeRow);
+ lolwuts.sort(function (a, b) { return a[0].toString().localeCompare(b[0].toString()); }).forEach(writeRow);
+
+ html += '
\n';
+ html += 'Node.js ' +
+ process.version +
+ '/ ecstatic ' +
+ 'server running @ ' +
+ he.encode(req.headers.host || '') + ' \n' +
+ ''
+ ;
+
+ if (!failed) {
+ res.writeHead(200, { "Content-Type": "text/html" });
+ res.end(html);
+ }
+ }
+ });
+ });
+ };
+};
+
+function permsToString(stat) {
+
+ if (!stat.isDirectory || !stat.mode) {
+ return '???!!!???';
+ }
+
+ var dir = stat.isDirectory() ? 'd' : '-',
+ mode = stat.mode.toString(8);
+
+ return dir + mode.slice(-3).split('').map(function (n) {
+ return [
+ '---',
+ '--x',
+ '-w-',
+ '-wx',
+ 'r--',
+ 'r-x',
+ 'rw-',
+ 'rwx'
+ ][parseInt(n, 10)];
+ }).join('');
+}
+
+// given a file's stat, return the size of it in string
+// humanReadable: (boolean) whether to result is human readable
+// si: (boolean) whether to use si (1k = 1000), otherwise 1k = 1024
+// adopted from http://stackoverflow.com/a/14919494/665507
+function sizeToString(stat, humanReadable, si) {
+ if (stat.isDirectory && stat.isDirectory()) {
+ return '';
+ }
+
+ var sizeString = '';
+ var bytes = stat.size;
+ var threshold = si ? 1000 : 1024;
+
+ if (!humanReadable || bytes < threshold) {
+ return bytes + 'B';
+ }
+
+ var units = [ 'k','M','G','T','P','E','Z','Y' ];
+ var u = -1;
+ do {
+ bytes /= threshold;
+ ++u;
+ } while (bytes >= threshold);
+
+ var b = bytes.toFixed(1);
+ if (isNaN(b)) b = '??';
+
+ return b + units[u];
+}
diff --git a/node_modules/http-server/node_modules/ecstatic/lib/ecstatic/status-handlers.js b/node_modules/http-server/node_modules/ecstatic/lib/ecstatic/status-handlers.js
new file mode 100644
index 00000000..348c99dc
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/lib/ecstatic/status-handlers.js
@@ -0,0 +1,104 @@
+var he = require('he');
+
+// not modified
+exports['304'] = function (res, next) {
+ res.statusCode = 304;
+ res.end();
+};
+
+// access denied
+exports['403'] = function (res, next) {
+ res.statusCode = 403;
+ if (typeof next === "function") {
+ next();
+ }
+ else {
+ if (res.writable) {
+ res.setHeader('content-type', 'text/plain');
+ res.end('ACCESS DENIED');
+ }
+ }
+};
+
+// disallowed method
+exports['405'] = function (res, next, opts) {
+ res.statusCode = 405;
+ if (typeof next === "function") {
+ next();
+ }
+ else {
+ res.setHeader('allow', (opts && opts.allow) || 'GET, HEAD');
+ res.end();
+ }
+};
+
+// not found
+exports['404'] = function (res, next) {
+ res.statusCode = 404;
+ if (typeof next === "function") {
+ next();
+ }
+ else {
+ if (res.writable) {
+ res.setHeader('content-type', 'text/plain');
+ res.end('File not found. :(');
+ }
+ }
+};
+
+exports['416'] = function (res, next) {
+ res.statusCode = 416;
+ if (typeof next === "function") {
+ next();
+ }
+ else {
+ if (res.writable) {
+ res.setHeader('content-type', 'text/plain');
+ res.end('Requested range not satisfiable');
+ }
+ }
+};
+
+// flagrant error
+exports['500'] = function (res, next, opts) {
+ res.statusCode = 500;
+ res.setHeader('content-type', 'text/html');
+ var error = String(opts.error.stack || opts.error || "No specified error"),
+ html = [
+ '',
+ '',
+ ' ',
+ ' ',
+ ' 500 Internal Server Error ',
+ ' ',
+ ' ',
+ ' ',
+ ' ' + he.encode(error),
+ '
',
+ ' ',
+ ''
+ ].join('\n') + '\n';
+ res.end(html);
+};
+
+// bad request
+exports['400'] = function (res, next, opts) {
+ res.statusCode = 400;
+ res.setHeader('content-type', 'text/html');
+ var error = opts && opts.error ? String(opts.error) : 'Malformed request.',
+ html = [
+ '',
+ '',
+ ' ',
+ ' ',
+ ' 400 Bad Request ',
+ ' ',
+ ' ',
+ ' ',
+ ' ' + he.encode(error),
+ '
',
+ ' ',
+ ''
+ ].join('\n') + '\n';
+ res.end(html);
+};
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/.bin/he b/node_modules/http-server/node_modules/ecstatic/node_modules/.bin/he
new file mode 100644
index 00000000..ffec3fe6
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/.bin/he
@@ -0,0 +1,15 @@
+#!/bin/sh
+basedir=`dirname "$0"`
+
+case `uname` in
+ *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ "$basedir/node" "$basedir/../he/bin/he" "$@"
+ ret=$?
+else
+ node "$basedir/../he/bin/he" "$@"
+ ret=$?
+fi
+exit $ret
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/.bin/he.cmd b/node_modules/http-server/node_modules/ecstatic/node_modules/.bin/he.cmd
new file mode 100644
index 00000000..1630c8ee
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/.bin/he.cmd
@@ -0,0 +1,7 @@
+@IF EXIST "%~dp0\node.exe" (
+ "%~dp0\node.exe" "%~dp0\..\he\bin\he" %*
+) ELSE (
+ @SETLOCAL
+ @SET PATHEXT=%PATHEXT:;.JS;=;%
+ node "%~dp0\..\he\bin\he" %*
+)
\ No newline at end of file
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/.bin/mime b/node_modules/http-server/node_modules/ecstatic/node_modules/.bin/mime
new file mode 100644
index 00000000..f3095783
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/.bin/mime
@@ -0,0 +1,15 @@
+#!/bin/sh
+basedir=`dirname "$0"`
+
+case `uname` in
+ *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ "$basedir/node" "$basedir/../mime/cli.js" "$@"
+ ret=$?
+else
+ node "$basedir/../mime/cli.js" "$@"
+ ret=$?
+fi
+exit $ret
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/.bin/mime.cmd b/node_modules/http-server/node_modules/ecstatic/node_modules/.bin/mime.cmd
new file mode 100644
index 00000000..81695620
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/.bin/mime.cmd
@@ -0,0 +1,7 @@
+@IF EXIST "%~dp0\node.exe" (
+ "%~dp0\node.exe" "%~dp0\..\mime\cli.js" %*
+) ELSE (
+ @SETLOCAL
+ @SET PATHEXT=%PATHEXT:;.JS;=;%
+ node "%~dp0\..\mime\cli.js" %*
+)
\ No newline at end of file
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/he/LICENSE-MIT.txt b/node_modules/http-server/node_modules/ecstatic/node_modules/he/LICENSE-MIT.txt
new file mode 100644
index 00000000..a41e0a7e
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/he/LICENSE-MIT.txt
@@ -0,0 +1,20 @@
+Copyright Mathias Bynens
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/he/README.md b/node_modules/http-server/node_modules/ecstatic/node_modules/he/README.md
new file mode 100644
index 00000000..61765d13
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/he/README.md
@@ -0,0 +1,336 @@
+# he [](https://travis-ci.org/mathiasbynens/he) [](https://coveralls.io/r/mathiasbynens/he) [](https://gemnasium.com/mathiasbynens/he)
+
+_he_ (for âHTML entitiesâ) is a robust HTML entity encoder/decoder written in JavaScript. It supports [all standardized named character references as per HTML](http://www.whatwg.org/specs/web-apps/current-work/multipage/named-character-references.html), handles [ambiguous ampersands](https://mathiasbynens.be/notes/ambiguous-ampersands) and other edge cases [just like a browser would](http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html#tokenizing-character-references), has an extensive test suite, and â contrary to many other JavaScript solutions â _he_ handles astral Unicode symbols just fine. [An online demo is available.](http://mothereff.in/html-entities)
+
+## Installation
+
+Via [npm](http://npmjs.org/):
+
+```bash
+npm install he
+```
+
+Via [Bower](http://bower.io/):
+
+```bash
+bower install he
+```
+
+Via [Component](https://github.com/component/component):
+
+```bash
+component install mathiasbynens/he
+```
+
+In a browser:
+
+```html
+
+```
+
+In [Narwhal](http://narwhaljs.org/), [Node.js](http://nodejs.org/), and [RingoJS](http://ringojs.org/):
+
+```js
+var he = require('he');
+```
+
+In [Rhino](http://www.mozilla.org/rhino/):
+
+```js
+load('he.js');
+```
+
+Using an AMD loader like [RequireJS](http://requirejs.org/):
+
+```js
+require(
+ {
+ 'paths': {
+ 'he': 'path/to/he'
+ }
+ },
+ ['he'],
+ function(he) {
+ console.log(he);
+ }
+);
+```
+
+## API
+
+### `he.version`
+
+A string representing the semantic version number.
+
+### `he.encode(text, options)`
+
+This function takes a string of text and encodes (by default) any symbols that arenât printable ASCII symbols and `&`, `<`, `>`, `"`, `'`, and `` ` ``, replacing them with character references.
+
+```js
+he.encode('foo © bar â baz đ qux');
+// â 'foo © bar ≠ baz 𝌆 qux'
+```
+
+As long as the input string contains [allowed code points](http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#preprocessing-the-input-stream) only, the return value of this function is always valid HTML. Any [(invalid) code points that cannot be represented using a character reference](http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html#table-charref-overrides) in the input are not encoded.
+
+```js
+he.encode('foo \0 bar');
+// â 'foo \0 bar'
+```
+
+The `options` object is optional. It recognizes the following properties:
+
+#### `useNamedReferences`
+
+The default value for the `useNamedReferences` option is `false`. This means that `encode()` will not use any named character references (e.g. `©`) in the output â hexadecimal escapes (e.g. `©`) will be used instead. Set it to `true` to enable the use of named references.
+
+**Note that if compatibility with older browsers is a concern, this option should remain disabled.**
+
+```js
+// Using the global default setting (defaults to `false`):
+he.encode('foo © bar â baz đ qux');
+// â 'foo © bar ≠ baz 𝌆 qux'
+
+// Passing an `options` object to `encode`, to explicitly disallow named references:
+he.encode('foo © bar â baz đ qux', {
+ 'useNamedReferences': false
+});
+// â 'foo © bar ≠ baz 𝌆 qux'
+
+// Passing an `options` object to `encode`, to explicitly allow named references:
+he.encode('foo © bar â baz đ qux', {
+ 'useNamedReferences': true
+});
+// â 'foo © bar ≠ baz 𝌆 qux'
+```
+
+#### `encodeEverything`
+
+The default value for the `encodeEverything` option is `false`. This means that `encode()` will not use any character references for printable ASCII symbols that donât need escaping. Set it to `true` to encode every symbol in the input string. When set to `true`, this option takes precedence over `allowUnsafeSymbols` (i.e. setting the latter to `true` in such a case has no effect).
+
+```js
+// Using the global default setting (defaults to `false`):
+he.encode('foo © bar â baz đ qux');
+// â 'foo © bar ≠ baz 𝌆 qux'
+
+// Passing an `options` object to `encode`, to explicitly encode all symbols:
+he.encode('foo © bar â baz đ qux', {
+ 'encodeEverything': true
+});
+// â 'foo © bar ≠ baz 𝌆 qux'
+
+// This setting can be combined with the `useNamedReferences` option:
+he.encode('foo © bar â baz đ qux', {
+ 'encodeEverything': true,
+ 'useNamedReferences': true
+});
+// â 'foo © bar ≠ baz 𝌆 qux'
+```
+
+#### `strict`
+
+The default value for the `strict` option is `false`. This means that `encode()` will encode any HTML text content you feed it, even if it contains any symbols that cause [parse errors](http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#preprocessing-the-input-stream). To throw an error when such invalid HTML is encountered, set the `strict` option to `true`. This option makes it possible to use _he_ as part of HTML parsers and HTML validators.
+
+```js
+// Using the global default setting (defaults to `false`, i.e. error-tolerant mode):
+he.encode('\x01');
+// â ''
+
+// Passing an `options` object to `encode`, to explicitly enable error-tolerant mode:
+he.encode('\x01', {
+ 'strict': false
+});
+// â ''
+
+// Passing an `options` object to `encode`, to explicitly enable strict mode:
+he.encode('\x01', {
+ 'strict': true
+});
+// â Parse error
+```
+
+#### `allowUnsafeSymbols`
+
+The default value for the `allowUnsafeSymbols` option is `false`. This means that characters that are unsafe for use in HTML content (`&`, `<`, `>`, `"`, `'`, and `` ` ``) will be encoded. When set to `true`, only non-ASCII characters will be encoded. If the `encodeEverything` option is set to `true`, this option will be ignored.
+
+```js
+he.encode('foo © and & ampersand', {
+ 'allowUnsafeSymbols': true
+});
+// â 'foo © and & ampersand'
+```
+
+#### Overriding default `encode` options globally
+
+The global default setting can be overridden by modifying the `he.encode.options` object. This saves you from passing in an `options` object for every call to `encode` if you want to use the non-default setting.
+
+```js
+// Read the global default setting:
+he.encode.options.useNamedReferences;
+// â `false` by default
+
+// Override the global default setting:
+he.encode.options.useNamedReferences = true;
+
+// Using the global default setting, which is now `true`:
+he.encode('foo © bar â baz đ qux');
+// â 'foo © bar ≠ baz 𝌆 qux'
+```
+
+### `he.decode(html, options)`
+
+This function takes a string of HTML and decodes any named and numerical character references in it using [the algorithm described in section 12.2.4.69 of the HTML spec](http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html#tokenizing-character-references).
+
+```js
+he.decode('foo © bar ≠ baz 𝌆 qux');
+// â 'foo © bar â baz đ qux'
+```
+
+The `options` object is optional. It recognizes the following properties:
+
+#### `isAttributeValue`
+
+The default value for the `isAttributeValue` option is `false`. This means that `decode()` will decode the string as if it were used in [a text context in an HTML document](http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html#data-state). HTML has different rules for [parsing character references in attribute values](http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html#character-reference-in-attribute-value-state) â set this option to `true` to treat the input string as if it were used as an attribute value.
+
+```js
+// Using the global default setting (defaults to `false`, i.e. HTML text context):
+he.decode('foo&bar');
+// â 'foo&bar'
+
+// Passing an `options` object to `decode`, to explicitly assume an HTML text context:
+he.decode('foo&bar', {
+ 'isAttributeValue': false
+});
+// â 'foo&bar'
+
+// Passing an `options` object to `decode`, to explicitly assume an HTML attribute value context:
+he.decode('foo&bar', {
+ 'isAttributeValue': true
+});
+// â 'foo&bar'
+```
+
+#### `strict`
+
+The default value for the `strict` option is `false`. This means that `decode()` will decode any HTML text content you feed it, even if it contains any entities that cause [parse errors](http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html#tokenizing-character-references). To throw an error when such invalid HTML is encountered, set the `strict` option to `true`. This option makes it possible to use _he_ as part of HTML parsers and HTML validators.
+
+```js
+// Using the global default setting (defaults to `false`, i.e. error-tolerant mode):
+he.decode('foo&bar');
+// â 'foo&bar'
+
+// Passing an `options` object to `decode`, to explicitly enable error-tolerant mode:
+he.decode('foo&bar', {
+ 'strict': false
+});
+// â 'foo&bar'
+
+// Passing an `options` object to `decode`, to explicitly enable strict mode:
+he.decode('foo&bar', {
+ 'strict': true
+});
+// â Parse error
+```
+
+#### Overriding default `decode` options globally
+
+The global default settings for the `decode` function can be overridden by modifying the `he.decode.options` object. This saves you from passing in an `options` object for every call to `decode` if you want to use a non-default setting.
+
+```js
+// Read the global default setting:
+he.decode.options.isAttributeValue;
+// â `false` by default
+
+// Override the global default setting:
+he.decode.options.isAttributeValue = true;
+
+// Using the global default setting, which is now `true`:
+he.decode('foo&bar');
+// â 'foo&bar'
+```
+
+### `he.escape(text)`
+
+This function takes a string of text and escapes it for use in text contexts in XML or HTML documents. Only the following characters are escaped: `&`, `<`, `>`, `"`, `'`, and `` ` ``.
+
+```js
+he.escape(' ');
+// â '<img src='x' onerror="prompt(1)">'
+```
+
+### `he.unescape(html, options)`
+
+`he.unescape` is an alias for `he.decode`. It takes a string of HTML and decodes any named and numerical character references in it.
+
+### Using the `he` binary
+
+To use the `he` binary in your shell, simply install _he_ globally using npm:
+
+```bash
+npm install -g he
+```
+
+After that you will be able to encode/decode HTML entities from the command line:
+
+```bash
+$ he --encode 'föo â„ bĂ„r đ baz'
+föo ♥ bår 𝌆 baz
+
+$ he --encode --use-named-refs 'föo â„ bĂ„r đ baz'
+föo ♥ bår 𝌆 baz
+
+$ he --decode 'föo ♥ bår 𝌆 baz'
+föo â„ bĂ„r đ baz
+```
+
+Read a local text file, encode it for use in an HTML text context, and save the result to a new file:
+
+```bash
+$ he --encode < foo.txt > foo-escaped.html
+```
+
+Or do the same with an online text file:
+
+```bash
+$ curl -sL "http://git.io/HnfEaw" | he --encode > escaped.html
+```
+
+Or, the opposite â read a local file containing a snippet of HTML in a text context, decode it back to plain text, and save the result to a new file:
+
+```bash
+$ he --decode < foo-escaped.html > foo.txt
+```
+
+Or do the same with an online HTML snippet:
+
+```bash
+$ curl -sL "http://git.io/HnfEaw" | he --decode > decoded.txt
+```
+
+See `he --help` for the full list of options.
+
+## Support
+
+he has been tested in at least Chrome 27-29, Firefox 3-22, Safari 4-6, Opera 10-12, IE 6-10, Node.js v0.10.0, Narwhal 0.3.2, RingoJS 0.8-0.9, PhantomJS 1.9.0, and Rhino 1.7RC4.
+
+## Unit tests & code coverage
+
+After cloning this repository, run `npm install` to install the dependencies needed for he development and testing. You may want to install Istanbul _globally_ using `npm install istanbul -g`.
+
+Once thatâs done, you can run the unit tests in Node using `npm test` or `node tests/tests.js`. To run the tests in Rhino, Ringo, Narwhal, and web browsers as well, use `grunt test`.
+
+To generate the code coverage report, use `grunt cover`.
+
+## Acknowledgements
+
+Thanks to [Simon Pieters](http://simon.html5.org/) ([@zcorpan](https://twitter.com/zcorpan)) for the many suggestions.
+
+## Author
+
+| [](https://twitter.com/mathias "Follow @mathias on Twitter") |
+|---|
+| [Mathias Bynens](https://mathiasbynens.be/) |
+
+## License
+
+_he_ is available under the [MIT](http://mths.be/mit) license.
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/he/bin/he b/node_modules/http-server/node_modules/ecstatic/node_modules/he/bin/he
new file mode 100644
index 00000000..234710cf
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/he/bin/he
@@ -0,0 +1,143 @@
+#!/usr/bin/env node
+(function() {
+
+ var fs = require('fs');
+ var he = require('../he.js');
+ var strings = process.argv.splice(2);
+ var stdin = process.stdin;
+ var data;
+ var timeout;
+ var action;
+ var options = {};
+ var log = console.log;
+
+ var main = function() {
+ var option = strings[0];
+ var count = 0;
+
+ if (/^(?:-h|--help|undefined)$/.test(option)) {
+ log(
+ 'he v%s - http://mths.be/he',
+ he.version
+ );
+ log([
+ '\nUsage:\n',
+ '\the [--escape] string',
+ '\the [--encode] [--use-named-refs] [--everything] [--allow-unsafe] string',
+ '\the [--decode] [--attribute] [--strict] string',
+ '\the [-v | --version]',
+ '\the [-h | --help]',
+ '\nExamples:\n',
+ '\the --escape \\ ',
+ '\techo \'© 𝌆\' | he --decode'
+ ].join('\n'));
+ return process.exit(1);
+ }
+
+ if (/^(?:-v|--version)$/.test(option)) {
+ log('v%s', he.version);
+ return process.exit(1);
+ }
+
+ strings.forEach(function(string) {
+ // Process options
+ if (string == '--escape') {
+ action = 'escape';
+ return;
+ }
+ if (string == '--encode') {
+ action = 'encode';
+ return;
+ }
+ if (string == '--use-named-refs') {
+ action = 'encode';
+ options.useNamedReferences = true;
+ return;
+ }
+ if (string == '--everything') {
+ action = 'encode';
+ options.encodeEverything = true;
+ return;
+ }
+ if (string == '--allow-unsafe') {
+ action = 'encode';
+ options.allowUnsafeSymbols = true;
+ return;
+ }
+ if (string == '--decode') {
+ action = 'decode';
+ return;
+ }
+ if (string == '--attribute') {
+ action = 'decode';
+ options.isAttributeValue = true;
+ return;
+ }
+ if (string == '--strict') {
+ action = 'decode';
+ options.strict = true;
+ return;
+ }
+ // Process string(s)
+ var result;
+ if (!action) {
+ log('Error: he requires at least one option and a string argument.');
+ log('Try `he --help` for more information.');
+ return process.exit(1);
+ }
+ try {
+ result = he[action](string, options);
+ log(result);
+ count++;
+ } catch(error) {
+ log(error.message + '\n');
+ log('Error: failed to %s.', action);
+ log('If you think this is a bug in he, please report it:');
+ log('https://github.com/mathiasbynens/he/issues/new');
+ log(
+ '\nStack trace using he@%s:\n',
+ he.version
+ );
+ log(error.stack);
+ return process.exit(1);
+ }
+ });
+ if (!count) {
+ log('Error: he requires a string argument.');
+ log('Try `he --help` for more information.');
+ return process.exit(1);
+ }
+ // Return with exit status 0 outside of the `forEach` loop, in case
+ // multiple strings were passed in.
+ return process.exit(0);
+ };
+
+ if (stdin.isTTY) {
+ // handle shell arguments
+ main();
+ } else {
+ // Either the script is called from within a non-TTY context, or `stdin`
+ // content is being piped in.
+ if (!process.stdout.isTTY) {
+ // The script was called from a non-TTY context. This is a rather uncommon
+ // use case we donât actively support. However, we donât want the script
+ // to wait forever in such cases, soâŠ
+ timeout = setTimeout(function() {
+ // âŠif no piped data arrived after a whole minute, handle shell
+ // arguments instead.
+ main();
+ }, 60000);
+ }
+ data = '';
+ stdin.on('data', function(chunk) {
+ clearTimeout(timeout);
+ data += chunk;
+ });
+ stdin.on('end', function() {
+ strings.push(data.trim());
+ main();
+ });
+ stdin.resume();
+ }
+
+}());
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/he/he.js b/node_modules/http-server/node_modules/ecstatic/node_modules/he/he.js
new file mode 100644
index 00000000..74b9fe18
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/he/he.js
@@ -0,0 +1,329 @@
+/*! http://mths.be/he v0.5.0 by @mathias | MIT license */
+;(function(root) {
+
+ // Detect free variables `exports`.
+ var freeExports = typeof exports == 'object' && exports;
+
+ // Detect free variable `module`.
+ var freeModule = typeof module == 'object' && module &&
+ module.exports == freeExports && module;
+
+ // Detect free variable `global`, from Node.js or Browserified code,
+ // and use it as `root`.
+ var freeGlobal = typeof global == 'object' && global;
+ if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {
+ root = freeGlobal;
+ }
+
+ /*--------------------------------------------------------------------------*/
+
+ // All astral symbols.
+ var regexAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
+ // All ASCII symbols (not just printable ASCII) except those listed in the
+ // first column of the overrides table.
+ // http://whatwg.org/html/tokenization.html#table-charref-overrides
+ var regexAsciiWhitelist = /[\x01-\x7F]/g;
+ // All BMP symbols that are not ASCII newlines, printable ASCII symbols, or
+ // code points listed in the first column of the overrides table on
+ // http://whatwg.org/html/tokenization.html#table-charref-overrides.
+ var regexBmpWhitelist = /[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g;
+
+ var regexEncodeNonAscii = /<\u20D2|=\u20E5|>\u20D2|\u205F\u200A|\u219D\u0338|\u2202\u0338|\u2220\u20D2|\u2229\uFE00|\u222A\uFE00|\u223C\u20D2|\u223D\u0331|\u223E\u0333|\u2242\u0338|\u224B\u0338|\u224D\u20D2|\u224E\u0338|\u224F\u0338|\u2250\u0338|\u2261\u20E5|\u2264\u20D2|\u2265\u20D2|\u2266\u0338|\u2267\u0338|\u2268\uFE00|\u2269\uFE00|\u226A\u0338|\u226A\u20D2|\u226B\u0338|\u226B\u20D2|\u227F\u0338|\u2282\u20D2|\u2283\u20D2|\u228A\uFE00|\u228B\uFE00|\u228F\u0338|\u2290\u0338|\u2293\uFE00|\u2294\uFE00|\u22B4\u20D2|\u22B5\u20D2|\u22D8\u0338|\u22D9\u0338|\u22DA\uFE00|\u22DB\uFE00|\u22F5\u0338|\u22F9\u0338|\u2933\u0338|\u29CF\u0338|\u29D0\u0338|\u2A6D\u0338|\u2A70\u0338|\u2A7D\u0338|\u2A7E\u0338|\u2AA1\u0338|\u2AA2\u0338|\u2AAC\uFE00|\u2AAD\uFE00|\u2AAF\u0338|\u2AB0\u0338|\u2AC5\u0338|\u2AC6\u0338|\u2ACB\uFE00|\u2ACC\uFE00|\u2AFD\u20E5|[\xA0-\u0113\u0116-\u0122\u0124-\u012B\u012E-\u014D\u0150-\u017E\u0192\u01B5\u01F5\u0237\u02C6\u02C7\u02D8-\u02DD\u0311\u0391-\u03A1\u03A3-\u03A9\u03B1-\u03C9\u03D1\u03D2\u03D5\u03D6\u03DC\u03DD\u03F0\u03F1\u03F5\u03F6\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E\u045F\u2002-\u2005\u2007-\u2010\u2013-\u2016\u2018-\u201A\u201C-\u201E\u2020-\u2022\u2025\u2026\u2030-\u2035\u2039\u203A\u203E\u2041\u2043\u2044\u204F\u2057\u205F-\u2063\u20AC\u20DB\u20DC\u2102\u2105\u210A-\u2113\u2115-\u211E\u2122\u2124\u2127-\u2129\u212C\u212D\u212F-\u2131\u2133-\u2138\u2145-\u2148\u2153-\u215E\u2190-\u219B\u219D-\u21A7\u21A9-\u21AE\u21B0-\u21B3\u21B5-\u21B7\u21BA-\u21DB\u21DD\u21E4\u21E5\u21F5\u21FD-\u2205\u2207-\u2209\u220B\u220C\u220F-\u2214\u2216-\u2218\u221A\u221D-\u2238\u223A-\u2257\u2259\u225A\u225C\u225F-\u2262\u2264-\u228B\u228D-\u229B\u229D-\u22A5\u22A7-\u22B0\u22B2-\u22BB\u22BD-\u22DB\u22DE-\u22E3\u22E6-\u22F7\u22F9-\u22FE\u2305\u2306\u2308-\u2310\u2312\u2313\u2315\u2316\u231C-\u231F\u2322\u2323\u232D\u232E\u2336\u233D\u233F\u237C\u23B0\u23B1\u23B4-\u23B6\u23DC-\u23DF\u23E2\u23E7\u2423\u24C8\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2550-\u256C\u2580\u2584\u2588\u2591-\u2593\u25A1\u25AA\u25AB\u25AD\u25AE\u25B1\u25B3-\u25B5\u25B8\u25B9\u25BD-\u25BF\u25C2\u25C3\u25CA\u25CB\u25EC\u25EF\u25F8-\u25FC\u2605\u2606\u260E\u2640\u2642\u2660\u2663\u2665\u2666\u266A\u266D-\u266F\u2713\u2717\u2720\u2736\u2758\u2772\u2773\u27C8\u27C9\u27E6-\u27ED\u27F5-\u27FA\u27FC\u27FF\u2902-\u2905\u290C-\u2913\u2916\u2919-\u2920\u2923-\u292A\u2933\u2935-\u2939\u293C\u293D\u2945\u2948-\u294B\u294E-\u2976\u2978\u2979\u297B-\u297F\u2985\u2986\u298B-\u2996\u299A\u299C\u299D\u29A4-\u29B7\u29B9\u29BB\u29BC\u29BE-\u29C5\u29C9\u29CD-\u29D0\u29DC-\u29DE\u29E3-\u29E5\u29EB\u29F4\u29F6\u2A00-\u2A02\u2A04\u2A06\u2A0C\u2A0D\u2A10-\u2A17\u2A22-\u2A27\u2A29\u2A2A\u2A2D-\u2A31\u2A33-\u2A3C\u2A3F\u2A40\u2A42-\u2A4D\u2A50\u2A53-\u2A58\u2A5A-\u2A5D\u2A5F\u2A66\u2A6A\u2A6D-\u2A75\u2A77-\u2A9A\u2A9D-\u2AA2\u2AA4-\u2AB0\u2AB3-\u2AC8\u2ACB\u2ACC\u2ACF-\u2ADB\u2AE4\u2AE6-\u2AE9\u2AEB-\u2AF3\u2AFD\uFB00-\uFB04]|\uD835[\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDD6B]/g;
+ var encodeMap = {'\xC1':'Aacute','\xE1':'aacute','\u0102':'Abreve','\u0103':'abreve','\u223E':'ac','\u223F':'acd','\u223E\u0333':'acE','\xC2':'Acirc','\xE2':'acirc','\xB4':'acute','\u0410':'Acy','\u0430':'acy','\xC6':'AElig','\xE6':'aelig','\u2061':'af','\uD835\uDD04':'Afr','\uD835\uDD1E':'afr','\xC0':'Agrave','\xE0':'agrave','\u2135':'aleph','\u0391':'Alpha','\u03B1':'alpha','\u0100':'Amacr','\u0101':'amacr','\u2A3F':'amalg','&':'amp','\u2A55':'andand','\u2A53':'And','\u2227':'and','\u2A5C':'andd','\u2A58':'andslope','\u2A5A':'andv','\u2220':'ang','\u29A4':'ange','\u29A8':'angmsdaa','\u29A9':'angmsdab','\u29AA':'angmsdac','\u29AB':'angmsdad','\u29AC':'angmsdae','\u29AD':'angmsdaf','\u29AE':'angmsdag','\u29AF':'angmsdah','\u2221':'angmsd','\u221F':'angrt','\u22BE':'angrtvb','\u299D':'angrtvbd','\u2222':'angsph','\xC5':'angst','\u237C':'angzarr','\u0104':'Aogon','\u0105':'aogon','\uD835\uDD38':'Aopf','\uD835\uDD52':'aopf','\u2A6F':'apacir','\u2248':'ap','\u2A70':'apE','\u224A':'ape','\u224B':'apid','\'':'apos','\xE5':'aring','\uD835\uDC9C':'Ascr','\uD835\uDCB6':'ascr','\u2254':'colone','*':'ast','\u224D':'CupCap','\xC3':'Atilde','\xE3':'atilde','\xC4':'Auml','\xE4':'auml','\u2233':'awconint','\u2A11':'awint','\u224C':'bcong','\u03F6':'bepsi','\u2035':'bprime','\u223D':'bsim','\u22CD':'bsime','\u2216':'setmn','\u2AE7':'Barv','\u22BD':'barvee','\u2305':'barwed','\u2306':'Barwed','\u23B5':'bbrk','\u23B6':'bbrktbrk','\u0411':'Bcy','\u0431':'bcy','\u201E':'bdquo','\u2235':'becaus','\u29B0':'bemptyv','\u212C':'Bscr','\u0392':'Beta','\u03B2':'beta','\u2136':'beth','\u226C':'twixt','\uD835\uDD05':'Bfr','\uD835\uDD1F':'bfr','\u22C2':'xcap','\u25EF':'xcirc','\u22C3':'xcup','\u2A00':'xodot','\u2A01':'xoplus','\u2A02':'xotime','\u2A06':'xsqcup','\u2605':'starf','\u25BD':'xdtri','\u25B3':'xutri','\u2A04':'xuplus','\u22C1':'Vee','\u22C0':'Wedge','\u290D':'rbarr','\u29EB':'lozf','\u25AA':'squf','\u25B4':'utrif','\u25BE':'dtrif','\u25C2':'ltrif','\u25B8':'rtrif','\u2423':'blank','\u2592':'blk12','\u2591':'blk14','\u2593':'blk34','\u2588':'block','=\u20E5':'bne','\u2261\u20E5':'bnequiv','\u2AED':'bNot','\u2310':'bnot','\uD835\uDD39':'Bopf','\uD835\uDD53':'bopf','\u22A5':'bot','\u22C8':'bowtie','\u29C9':'boxbox','\u2510':'boxdl','\u2555':'boxdL','\u2556':'boxDl','\u2557':'boxDL','\u250C':'boxdr','\u2552':'boxdR','\u2553':'boxDr','\u2554':'boxDR','\u2500':'boxh','\u2550':'boxH','\u252C':'boxhd','\u2564':'boxHd','\u2565':'boxhD','\u2566':'boxHD','\u2534':'boxhu','\u2567':'boxHu','\u2568':'boxhU','\u2569':'boxHU','\u229F':'minusb','\u229E':'plusb','\u22A0':'timesb','\u2518':'boxul','\u255B':'boxuL','\u255C':'boxUl','\u255D':'boxUL','\u2514':'boxur','\u2558':'boxuR','\u2559':'boxUr','\u255A':'boxUR','\u2502':'boxv','\u2551':'boxV','\u253C':'boxvh','\u256A':'boxvH','\u256B':'boxVh','\u256C':'boxVH','\u2524':'boxvl','\u2561':'boxvL','\u2562':'boxVl','\u2563':'boxVL','\u251C':'boxvr','\u255E':'boxvR','\u255F':'boxVr','\u2560':'boxVR','\u02D8':'breve','\xA6':'brvbar','\uD835\uDCB7':'bscr','\u204F':'bsemi','\u29C5':'bsolb','\\':'bsol','\u27C8':'bsolhsub','\u2022':'bull','\u224E':'bump','\u2AAE':'bumpE','\u224F':'bumpe','\u0106':'Cacute','\u0107':'cacute','\u2A44':'capand','\u2A49':'capbrcup','\u2A4B':'capcap','\u2229':'cap','\u22D2':'Cap','\u2A47':'capcup','\u2A40':'capdot','\u2145':'DD','\u2229\uFE00':'caps','\u2041':'caret','\u02C7':'caron','\u212D':'Cfr','\u2A4D':'ccaps','\u010C':'Ccaron','\u010D':'ccaron','\xC7':'Ccedil','\xE7':'ccedil','\u0108':'Ccirc','\u0109':'ccirc','\u2230':'Cconint','\u2A4C':'ccups','\u2A50':'ccupssm','\u010A':'Cdot','\u010B':'cdot','\xB8':'cedil','\u29B2':'cemptyv','\xA2':'cent','\xB7':'middot','\uD835\uDD20':'cfr','\u0427':'CHcy','\u0447':'chcy','\u2713':'check','\u03A7':'Chi','\u03C7':'chi','\u02C6':'circ','\u2257':'cire','\u21BA':'olarr','\u21BB':'orarr','\u229B':'oast','\u229A':'ocir','\u229D':'odash','\u2299':'odot','\xAE':'reg','\u24C8':'oS','\u2296':'ominus','\u2295':'oplus','\u2297':'otimes','\u25CB':'cir','\u29C3':'cirE','\u2A10':'cirfnint','\u2AEF':'cirmid','\u29C2':'cirscir','\u2232':'cwconint','\u201D':'rdquo','\u2019':'rsquo','\u2663':'clubs',':':'colon','\u2237':'Colon','\u2A74':'Colone',',':'comma','@':'commat','\u2201':'comp','\u2218':'compfn','\u2102':'Copf','\u2245':'cong','\u2A6D':'congdot','\u2261':'equiv','\u222E':'oint','\u222F':'Conint','\uD835\uDD54':'copf','\u2210':'coprod','\xA9':'copy','\u2117':'copysr','\u21B5':'crarr','\u2717':'cross','\u2A2F':'Cross','\uD835\uDC9E':'Cscr','\uD835\uDCB8':'cscr','\u2ACF':'csub','\u2AD1':'csube','\u2AD0':'csup','\u2AD2':'csupe','\u22EF':'ctdot','\u2938':'cudarrl','\u2935':'cudarrr','\u22DE':'cuepr','\u22DF':'cuesc','\u21B6':'cularr','\u293D':'cularrp','\u2A48':'cupbrcap','\u2A46':'cupcap','\u222A':'cup','\u22D3':'Cup','\u2A4A':'cupcup','\u228D':'cupdot','\u2A45':'cupor','\u222A\uFE00':'cups','\u21B7':'curarr','\u293C':'curarrm','\u22CE':'cuvee','\u22CF':'cuwed','\xA4':'curren','\u2231':'cwint','\u232D':'cylcty','\u2020':'dagger','\u2021':'Dagger','\u2138':'daleth','\u2193':'darr','\u21A1':'Darr','\u21D3':'dArr','\u2010':'dash','\u2AE4':'Dashv','\u22A3':'dashv','\u290F':'rBarr','\u02DD':'dblac','\u010E':'Dcaron','\u010F':'dcaron','\u0414':'Dcy','\u0434':'dcy','\u21CA':'ddarr','\u2146':'dd','\u2911':'DDotrahd','\u2A77':'eDDot','\xB0':'deg','\u2207':'Del','\u0394':'Delta','\u03B4':'delta','\u29B1':'demptyv','\u297F':'dfisht','\uD835\uDD07':'Dfr','\uD835\uDD21':'dfr','\u2965':'dHar','\u21C3':'dharl','\u21C2':'dharr','\u02D9':'dot','`':'grave','\u02DC':'tilde','\u22C4':'diam','\u2666':'diams','\xA8':'die','\u03DD':'gammad','\u22F2':'disin','\xF7':'div','\u22C7':'divonx','\u0402':'DJcy','\u0452':'djcy','\u231E':'dlcorn','\u230D':'dlcrop','$':'dollar','\uD835\uDD3B':'Dopf','\uD835\uDD55':'dopf','\u20DC':'DotDot','\u2250':'doteq','\u2251':'eDot','\u2238':'minusd','\u2214':'plusdo','\u22A1':'sdotb','\u21D0':'lArr','\u21D4':'iff','\u27F8':'xlArr','\u27FA':'xhArr','\u27F9':'xrArr','\u21D2':'rArr','\u22A8':'vDash','\u21D1':'uArr','\u21D5':'vArr','\u2225':'par','\u2913':'DownArrowBar','\u21F5':'duarr','\u0311':'DownBreve','\u2950':'DownLeftRightVector','\u295E':'DownLeftTeeVector','\u2956':'DownLeftVectorBar','\u21BD':'lhard','\u295F':'DownRightTeeVector','\u2957':'DownRightVectorBar','\u21C1':'rhard','\u21A7':'mapstodown','\u22A4':'top','\u2910':'RBarr','\u231F':'drcorn','\u230C':'drcrop','\uD835\uDC9F':'Dscr','\uD835\uDCB9':'dscr','\u0405':'DScy','\u0455':'dscy','\u29F6':'dsol','\u0110':'Dstrok','\u0111':'dstrok','\u22F1':'dtdot','\u25BF':'dtri','\u296F':'duhar','\u29A6':'dwangle','\u040F':'DZcy','\u045F':'dzcy','\u27FF':'dzigrarr','\xC9':'Eacute','\xE9':'eacute','\u2A6E':'easter','\u011A':'Ecaron','\u011B':'ecaron','\xCA':'Ecirc','\xEA':'ecirc','\u2256':'ecir','\u2255':'ecolon','\u042D':'Ecy','\u044D':'ecy','\u0116':'Edot','\u0117':'edot','\u2147':'ee','\u2252':'efDot','\uD835\uDD08':'Efr','\uD835\uDD22':'efr','\u2A9A':'eg','\xC8':'Egrave','\xE8':'egrave','\u2A96':'egs','\u2A98':'egsdot','\u2A99':'el','\u2208':'in','\u23E7':'elinters','\u2113':'ell','\u2A95':'els','\u2A97':'elsdot','\u0112':'Emacr','\u0113':'emacr','\u2205':'empty','\u25FB':'EmptySmallSquare','\u25AB':'EmptyVerySmallSquare','\u2004':'emsp13','\u2005':'emsp14','\u2003':'emsp','\u014A':'ENG','\u014B':'eng','\u2002':'ensp','\u0118':'Eogon','\u0119':'eogon','\uD835\uDD3C':'Eopf','\uD835\uDD56':'eopf','\u22D5':'epar','\u29E3':'eparsl','\u2A71':'eplus','\u03B5':'epsi','\u0395':'Epsilon','\u03F5':'epsiv','\u2242':'esim','\u2A75':'Equal','=':'equals','\u225F':'equest','\u21CC':'rlhar','\u2A78':'equivDD','\u29E5':'eqvparsl','\u2971':'erarr','\u2253':'erDot','\u212F':'escr','\u2130':'Escr','\u2A73':'Esim','\u0397':'Eta','\u03B7':'eta','\xD0':'ETH','\xF0':'eth','\xCB':'Euml','\xEB':'euml','\u20AC':'euro','!':'excl','\u2203':'exist','\u0424':'Fcy','\u0444':'fcy','\u2640':'female','\uFB03':'ffilig','\uFB00':'fflig','\uFB04':'ffllig','\uD835\uDD09':'Ffr','\uD835\uDD23':'ffr','\uFB01':'filig','\u25FC':'FilledSmallSquare','fj':'fjlig','\u266D':'flat','\uFB02':'fllig','\u25B1':'fltns','\u0192':'fnof','\uD835\uDD3D':'Fopf','\uD835\uDD57':'fopf','\u2200':'forall','\u22D4':'fork','\u2AD9':'forkv','\u2131':'Fscr','\u2A0D':'fpartint','\xBD':'half','\u2153':'frac13','\xBC':'frac14','\u2155':'frac15','\u2159':'frac16','\u215B':'frac18','\u2154':'frac23','\u2156':'frac25','\xBE':'frac34','\u2157':'frac35','\u215C':'frac38','\u2158':'frac45','\u215A':'frac56','\u215D':'frac58','\u215E':'frac78','\u2044':'frasl','\u2322':'frown','\uD835\uDCBB':'fscr','\u01F5':'gacute','\u0393':'Gamma','\u03B3':'gamma','\u03DC':'Gammad','\u2A86':'gap','\u011E':'Gbreve','\u011F':'gbreve','\u0122':'Gcedil','\u011C':'Gcirc','\u011D':'gcirc','\u0413':'Gcy','\u0433':'gcy','\u0120':'Gdot','\u0121':'gdot','\u2265':'ge','\u2267':'gE','\u2A8C':'gEl','\u22DB':'gel','\u2A7E':'ges','\u2AA9':'gescc','\u2A80':'gesdot','\u2A82':'gesdoto','\u2A84':'gesdotol','\u22DB\uFE00':'gesl','\u2A94':'gesles','\uD835\uDD0A':'Gfr','\uD835\uDD24':'gfr','\u226B':'gg','\u22D9':'Gg','\u2137':'gimel','\u0403':'GJcy','\u0453':'gjcy','\u2AA5':'gla','\u2277':'gl','\u2A92':'glE','\u2AA4':'glj','\u2A8A':'gnap','\u2A88':'gne','\u2269':'gnE','\u22E7':'gnsim','\uD835\uDD3E':'Gopf','\uD835\uDD58':'gopf','\u2AA2':'GreaterGreater','\u2273':'gsim','\uD835\uDCA2':'Gscr','\u210A':'gscr','\u2A8E':'gsime','\u2A90':'gsiml','\u2AA7':'gtcc','\u2A7A':'gtcir','>':'gt','\u22D7':'gtdot','\u2995':'gtlPar','\u2A7C':'gtquest','\u2978':'gtrarr','\u2269\uFE00':'gvnE','\u200A':'hairsp','\u210B':'Hscr','\u042A':'HARDcy','\u044A':'hardcy','\u2948':'harrcir','\u2194':'harr','\u21AD':'harrw','^':'Hat','\u210F':'hbar','\u0124':'Hcirc','\u0125':'hcirc','\u2665':'hearts','\u2026':'mldr','\u22B9':'hercon','\uD835\uDD25':'hfr','\u210C':'Hfr','\u2925':'searhk','\u2926':'swarhk','\u21FF':'hoarr','\u223B':'homtht','\u21A9':'larrhk','\u21AA':'rarrhk','\uD835\uDD59':'hopf','\u210D':'Hopf','\u2015':'horbar','\uD835\uDCBD':'hscr','\u0126':'Hstrok','\u0127':'hstrok','\u2043':'hybull','\xCD':'Iacute','\xED':'iacute','\u2063':'ic','\xCE':'Icirc','\xEE':'icirc','\u0418':'Icy','\u0438':'icy','\u0130':'Idot','\u0415':'IEcy','\u0435':'iecy','\xA1':'iexcl','\uD835\uDD26':'ifr','\u2111':'Im','\xCC':'Igrave','\xEC':'igrave','\u2148':'ii','\u2A0C':'qint','\u222D':'tint','\u29DC':'iinfin','\u2129':'iiota','\u0132':'IJlig','\u0133':'ijlig','\u012A':'Imacr','\u012B':'imacr','\u2110':'Iscr','\u0131':'imath','\u22B7':'imof','\u01B5':'imped','\u2105':'incare','\u221E':'infin','\u29DD':'infintie','\u22BA':'intcal','\u222B':'int','\u222C':'Int','\u2124':'Zopf','\u2A17':'intlarhk','\u2A3C':'iprod','\u2062':'it','\u0401':'IOcy','\u0451':'iocy','\u012E':'Iogon','\u012F':'iogon','\uD835\uDD40':'Iopf','\uD835\uDD5A':'iopf','\u0399':'Iota','\u03B9':'iota','\xBF':'iquest','\uD835\uDCBE':'iscr','\u22F5':'isindot','\u22F9':'isinE','\u22F4':'isins','\u22F3':'isinsv','\u0128':'Itilde','\u0129':'itilde','\u0406':'Iukcy','\u0456':'iukcy','\xCF':'Iuml','\xEF':'iuml','\u0134':'Jcirc','\u0135':'jcirc','\u0419':'Jcy','\u0439':'jcy','\uD835\uDD0D':'Jfr','\uD835\uDD27':'jfr','\u0237':'jmath','\uD835\uDD41':'Jopf','\uD835\uDD5B':'jopf','\uD835\uDCA5':'Jscr','\uD835\uDCBF':'jscr','\u0408':'Jsercy','\u0458':'jsercy','\u0404':'Jukcy','\u0454':'jukcy','\u039A':'Kappa','\u03BA':'kappa','\u03F0':'kappav','\u0136':'Kcedil','\u0137':'kcedil','\u041A':'Kcy','\u043A':'kcy','\uD835\uDD0E':'Kfr','\uD835\uDD28':'kfr','\u0138':'kgreen','\u0425':'KHcy','\u0445':'khcy','\u040C':'KJcy','\u045C':'kjcy','\uD835\uDD42':'Kopf','\uD835\uDD5C':'kopf','\uD835\uDCA6':'Kscr','\uD835\uDCC0':'kscr','\u21DA':'lAarr','\u0139':'Lacute','\u013A':'lacute','\u29B4':'laemptyv','\u2112':'Lscr','\u039B':'Lambda','\u03BB':'lambda','\u27E8':'lang','\u27EA':'Lang','\u2991':'langd','\u2A85':'lap','\xAB':'laquo','\u21E4':'larrb','\u291F':'larrbfs','\u2190':'larr','\u219E':'Larr','\u291D':'larrfs','\u21AB':'larrlp','\u2939':'larrpl','\u2973':'larrsim','\u21A2':'larrtl','\u2919':'latail','\u291B':'lAtail','\u2AAB':'lat','\u2AAD':'late','\u2AAD\uFE00':'lates','\u290C':'lbarr','\u290E':'lBarr','\u2772':'lbbrk','{':'lcub','[':'lsqb','\u298B':'lbrke','\u298F':'lbrksld','\u298D':'lbrkslu','\u013D':'Lcaron','\u013E':'lcaron','\u013B':'Lcedil','\u013C':'lcedil','\u2308':'lceil','\u041B':'Lcy','\u043B':'lcy','\u2936':'ldca','\u201C':'ldquo','\u2967':'ldrdhar','\u294B':'ldrushar','\u21B2':'ldsh','\u2264':'le','\u2266':'lE','\u21C6':'lrarr','\u27E6':'lobrk','\u2961':'LeftDownTeeVector','\u2959':'LeftDownVectorBar','\u230A':'lfloor','\u21BC':'lharu','\u21C7':'llarr','\u21CB':'lrhar','\u294E':'LeftRightVector','\u21A4':'mapstoleft','\u295A':'LeftTeeVector','\u22CB':'lthree','\u29CF':'LeftTriangleBar','\u22B2':'vltri','\u22B4':'ltrie','\u2951':'LeftUpDownVector','\u2960':'LeftUpTeeVector','\u2958':'LeftUpVectorBar','\u21BF':'uharl','\u2952':'LeftVectorBar','\u2A8B':'lEg','\u22DA':'leg','\u2A7D':'les','\u2AA8':'lescc','\u2A7F':'lesdot','\u2A81':'lesdoto','\u2A83':'lesdotor','\u22DA\uFE00':'lesg','\u2A93':'lesges','\u22D6':'ltdot','\u2276':'lg','\u2AA1':'LessLess','\u2272':'lsim','\u297C':'lfisht','\uD835\uDD0F':'Lfr','\uD835\uDD29':'lfr','\u2A91':'lgE','\u2962':'lHar','\u296A':'lharul','\u2584':'lhblk','\u0409':'LJcy','\u0459':'ljcy','\u226A':'ll','\u22D8':'Ll','\u296B':'llhard','\u25FA':'lltri','\u013F':'Lmidot','\u0140':'lmidot','\u23B0':'lmoust','\u2A89':'lnap','\u2A87':'lne','\u2268':'lnE','\u22E6':'lnsim','\u27EC':'loang','\u21FD':'loarr','\u27F5':'xlarr','\u27F7':'xharr','\u27FC':'xmap','\u27F6':'xrarr','\u21AC':'rarrlp','\u2985':'lopar','\uD835\uDD43':'Lopf','\uD835\uDD5D':'lopf','\u2A2D':'loplus','\u2A34':'lotimes','\u2217':'lowast','_':'lowbar','\u2199':'swarr','\u2198':'searr','\u25CA':'loz','(':'lpar','\u2993':'lparlt','\u296D':'lrhard','\u200E':'lrm','\u22BF':'lrtri','\u2039':'lsaquo','\uD835\uDCC1':'lscr','\u21B0':'lsh','\u2A8D':'lsime','\u2A8F':'lsimg','\u2018':'lsquo','\u201A':'sbquo','\u0141':'Lstrok','\u0142':'lstrok','\u2AA6':'ltcc','\u2A79':'ltcir','<':'lt','\u22C9':'ltimes','\u2976':'ltlarr','\u2A7B':'ltquest','\u25C3':'ltri','\u2996':'ltrPar','\u294A':'lurdshar','\u2966':'luruhar','\u2268\uFE00':'lvnE','\xAF':'macr','\u2642':'male','\u2720':'malt','\u2905':'Map','\u21A6':'map','\u21A5':'mapstoup','\u25AE':'marker','\u2A29':'mcomma','\u041C':'Mcy','\u043C':'mcy','\u2014':'mdash','\u223A':'mDDot','\u205F':'MediumSpace','\u2133':'Mscr','\uD835\uDD10':'Mfr','\uD835\uDD2A':'mfr','\u2127':'mho','\xB5':'micro','\u2AF0':'midcir','\u2223':'mid','\u2212':'minus','\u2A2A':'minusdu','\u2213':'mp','\u2ADB':'mlcp','\u22A7':'models','\uD835\uDD44':'Mopf','\uD835\uDD5E':'mopf','\uD835\uDCC2':'mscr','\u039C':'Mu','\u03BC':'mu','\u22B8':'mumap','\u0143':'Nacute','\u0144':'nacute','\u2220\u20D2':'nang','\u2249':'nap','\u2A70\u0338':'napE','\u224B\u0338':'napid','\u0149':'napos','\u266E':'natur','\u2115':'Nopf','\xA0':'nbsp','\u224E\u0338':'nbump','\u224F\u0338':'nbumpe','\u2A43':'ncap','\u0147':'Ncaron','\u0148':'ncaron','\u0145':'Ncedil','\u0146':'ncedil','\u2247':'ncong','\u2A6D\u0338':'ncongdot','\u2A42':'ncup','\u041D':'Ncy','\u043D':'ncy','\u2013':'ndash','\u2924':'nearhk','\u2197':'nearr','\u21D7':'neArr','\u2260':'ne','\u2250\u0338':'nedot','\u200B':'ZeroWidthSpace','\u2262':'nequiv','\u2928':'toea','\u2242\u0338':'nesim','\n':'NewLine','\u2204':'nexist','\uD835\uDD11':'Nfr','\uD835\uDD2B':'nfr','\u2267\u0338':'ngE','\u2271':'nge','\u2A7E\u0338':'nges','\u22D9\u0338':'nGg','\u2275':'ngsim','\u226B\u20D2':'nGt','\u226F':'ngt','\u226B\u0338':'nGtv','\u21AE':'nharr','\u21CE':'nhArr','\u2AF2':'nhpar','\u220B':'ni','\u22FC':'nis','\u22FA':'nisd','\u040A':'NJcy','\u045A':'njcy','\u219A':'nlarr','\u21CD':'nlArr','\u2025':'nldr','\u2266\u0338':'nlE','\u2270':'nle','\u2A7D\u0338':'nles','\u226E':'nlt','\u22D8\u0338':'nLl','\u2274':'nlsim','\u226A\u20D2':'nLt','\u22EA':'nltri','\u22EC':'nltrie','\u226A\u0338':'nLtv','\u2224':'nmid','\u2060':'NoBreak','\uD835\uDD5F':'nopf','\u2AEC':'Not','\xAC':'not','\u226D':'NotCupCap','\u2226':'npar','\u2209':'notin','\u2279':'ntgl','\u22F5\u0338':'notindot','\u22F9\u0338':'notinE','\u22F7':'notinvb','\u22F6':'notinvc','\u29CF\u0338':'NotLeftTriangleBar','\u2278':'ntlg','\u2AA2\u0338':'NotNestedGreaterGreater','\u2AA1\u0338':'NotNestedLessLess','\u220C':'notni','\u22FE':'notnivb','\u22FD':'notnivc','\u2280':'npr','\u2AAF\u0338':'npre','\u22E0':'nprcue','\u29D0\u0338':'NotRightTriangleBar','\u22EB':'nrtri','\u22ED':'nrtrie','\u228F\u0338':'NotSquareSubset','\u22E2':'nsqsube','\u2290\u0338':'NotSquareSuperset','\u22E3':'nsqsupe','\u2282\u20D2':'vnsub','\u2288':'nsube','\u2281':'nsc','\u2AB0\u0338':'nsce','\u22E1':'nsccue','\u227F\u0338':'NotSucceedsTilde','\u2283\u20D2':'vnsup','\u2289':'nsupe','\u2241':'nsim','\u2244':'nsime','\u2AFD\u20E5':'nparsl','\u2202\u0338':'npart','\u2A14':'npolint','\u2933\u0338':'nrarrc','\u219B':'nrarr','\u21CF':'nrArr','\u219D\u0338':'nrarrw','\uD835\uDCA9':'Nscr','\uD835\uDCC3':'nscr','\u2284':'nsub','\u2AC5\u0338':'nsubE','\u2285':'nsup','\u2AC6\u0338':'nsupE','\xD1':'Ntilde','\xF1':'ntilde','\u039D':'Nu','\u03BD':'nu','#':'num','\u2116':'numero','\u2007':'numsp','\u224D\u20D2':'nvap','\u22AC':'nvdash','\u22AD':'nvDash','\u22AE':'nVdash','\u22AF':'nVDash','\u2265\u20D2':'nvge','>\u20D2':'nvgt','\u2904':'nvHarr','\u29DE':'nvinfin','\u2902':'nvlArr','\u2264\u20D2':'nvle','<\u20D2':'nvlt','\u22B4\u20D2':'nvltrie','\u2903':'nvrArr','\u22B5\u20D2':'nvrtrie','\u223C\u20D2':'nvsim','\u2923':'nwarhk','\u2196':'nwarr','\u21D6':'nwArr','\u2927':'nwnear','\xD3':'Oacute','\xF3':'oacute','\xD4':'Ocirc','\xF4':'ocirc','\u041E':'Ocy','\u043E':'ocy','\u0150':'Odblac','\u0151':'odblac','\u2A38':'odiv','\u29BC':'odsold','\u0152':'OElig','\u0153':'oelig','\u29BF':'ofcir','\uD835\uDD12':'Ofr','\uD835\uDD2C':'ofr','\u02DB':'ogon','\xD2':'Ograve','\xF2':'ograve','\u29C1':'ogt','\u29B5':'ohbar','\u03A9':'ohm','\u29BE':'olcir','\u29BB':'olcross','\u203E':'oline','\u29C0':'olt','\u014C':'Omacr','\u014D':'omacr','\u03C9':'omega','\u039F':'Omicron','\u03BF':'omicron','\u29B6':'omid','\uD835\uDD46':'Oopf','\uD835\uDD60':'oopf','\u29B7':'opar','\u29B9':'operp','\u2A54':'Or','\u2228':'or','\u2A5D':'ord','\u2134':'oscr','\xAA':'ordf','\xBA':'ordm','\u22B6':'origof','\u2A56':'oror','\u2A57':'orslope','\u2A5B':'orv','\uD835\uDCAA':'Oscr','\xD8':'Oslash','\xF8':'oslash','\u2298':'osol','\xD5':'Otilde','\xF5':'otilde','\u2A36':'otimesas','\u2A37':'Otimes','\xD6':'Ouml','\xF6':'ouml','\u233D':'ovbar','\u23DE':'OverBrace','\u23B4':'tbrk','\u23DC':'OverParenthesis','\xB6':'para','\u2AF3':'parsim','\u2AFD':'parsl','\u2202':'part','\u041F':'Pcy','\u043F':'pcy','%':'percnt','.':'period','\u2030':'permil','\u2031':'pertenk','\uD835\uDD13':'Pfr','\uD835\uDD2D':'pfr','\u03A6':'Phi','\u03C6':'phi','\u03D5':'phiv','\u260E':'phone','\u03A0':'Pi','\u03C0':'pi','\u03D6':'piv','\u210E':'planckh','\u2A23':'plusacir','\u2A22':'pluscir','+':'plus','\u2A25':'plusdu','\u2A72':'pluse','\xB1':'pm','\u2A26':'plussim','\u2A27':'plustwo','\u2A15':'pointint','\uD835\uDD61':'popf','\u2119':'Popf','\xA3':'pound','\u2AB7':'prap','\u2ABB':'Pr','\u227A':'pr','\u227C':'prcue','\u2AAF':'pre','\u227E':'prsim','\u2AB9':'prnap','\u2AB5':'prnE','\u22E8':'prnsim','\u2AB3':'prE','\u2032':'prime','\u2033':'Prime','\u220F':'prod','\u232E':'profalar','\u2312':'profline','\u2313':'profsurf','\u221D':'prop','\u22B0':'prurel','\uD835\uDCAB':'Pscr','\uD835\uDCC5':'pscr','\u03A8':'Psi','\u03C8':'psi','\u2008':'puncsp','\uD835\uDD14':'Qfr','\uD835\uDD2E':'qfr','\uD835\uDD62':'qopf','\u211A':'Qopf','\u2057':'qprime','\uD835\uDCAC':'Qscr','\uD835\uDCC6':'qscr','\u2A16':'quatint','?':'quest','"':'quot','\u21DB':'rAarr','\u223D\u0331':'race','\u0154':'Racute','\u0155':'racute','\u221A':'Sqrt','\u29B3':'raemptyv','\u27E9':'rang','\u27EB':'Rang','\u2992':'rangd','\u29A5':'range','\xBB':'raquo','\u2975':'rarrap','\u21E5':'rarrb','\u2920':'rarrbfs','\u2933':'rarrc','\u2192':'rarr','\u21A0':'Rarr','\u291E':'rarrfs','\u2945':'rarrpl','\u2974':'rarrsim','\u2916':'Rarrtl','\u21A3':'rarrtl','\u219D':'rarrw','\u291A':'ratail','\u291C':'rAtail','\u2236':'ratio','\u2773':'rbbrk','}':'rcub',']':'rsqb','\u298C':'rbrke','\u298E':'rbrksld','\u2990':'rbrkslu','\u0158':'Rcaron','\u0159':'rcaron','\u0156':'Rcedil','\u0157':'rcedil','\u2309':'rceil','\u0420':'Rcy','\u0440':'rcy','\u2937':'rdca','\u2969':'rdldhar','\u21B3':'rdsh','\u211C':'Re','\u211B':'Rscr','\u211D':'Ropf','\u25AD':'rect','\u297D':'rfisht','\u230B':'rfloor','\uD835\uDD2F':'rfr','\u2964':'rHar','\u21C0':'rharu','\u296C':'rharul','\u03A1':'Rho','\u03C1':'rho','\u03F1':'rhov','\u21C4':'rlarr','\u27E7':'robrk','\u295D':'RightDownTeeVector','\u2955':'RightDownVectorBar','\u21C9':'rrarr','\u22A2':'vdash','\u295B':'RightTeeVector','\u22CC':'rthree','\u29D0':'RightTriangleBar','\u22B3':'vrtri','\u22B5':'rtrie','\u294F':'RightUpDownVector','\u295C':'RightUpTeeVector','\u2954':'RightUpVectorBar','\u21BE':'uharr','\u2953':'RightVectorBar','\u02DA':'ring','\u200F':'rlm','\u23B1':'rmoust','\u2AEE':'rnmid','\u27ED':'roang','\u21FE':'roarr','\u2986':'ropar','\uD835\uDD63':'ropf','\u2A2E':'roplus','\u2A35':'rotimes','\u2970':'RoundImplies',')':'rpar','\u2994':'rpargt','\u2A12':'rppolint','\u203A':'rsaquo','\uD835\uDCC7':'rscr','\u21B1':'rsh','\u22CA':'rtimes','\u25B9':'rtri','\u29CE':'rtriltri','\u29F4':'RuleDelayed','\u2968':'ruluhar','\u211E':'rx','\u015A':'Sacute','\u015B':'sacute','\u2AB8':'scap','\u0160':'Scaron','\u0161':'scaron','\u2ABC':'Sc','\u227B':'sc','\u227D':'sccue','\u2AB0':'sce','\u2AB4':'scE','\u015E':'Scedil','\u015F':'scedil','\u015C':'Scirc','\u015D':'scirc','\u2ABA':'scnap','\u2AB6':'scnE','\u22E9':'scnsim','\u2A13':'scpolint','\u227F':'scsim','\u0421':'Scy','\u0441':'scy','\u22C5':'sdot','\u2A66':'sdote','\u21D8':'seArr','\xA7':'sect',';':'semi','\u2929':'tosa','\u2736':'sext','\uD835\uDD16':'Sfr','\uD835\uDD30':'sfr','\u266F':'sharp','\u0429':'SHCHcy','\u0449':'shchcy','\u0428':'SHcy','\u0448':'shcy','\u2191':'uarr','\xAD':'shy','\u03A3':'Sigma','\u03C3':'sigma','\u03C2':'sigmaf','\u223C':'sim','\u2A6A':'simdot','\u2243':'sime','\u2A9E':'simg','\u2AA0':'simgE','\u2A9D':'siml','\u2A9F':'simlE','\u2246':'simne','\u2A24':'simplus','\u2972':'simrarr','\u2A33':'smashp','\u29E4':'smeparsl','\u2323':'smile','\u2AAA':'smt','\u2AAC':'smte','\u2AAC\uFE00':'smtes','\u042C':'SOFTcy','\u044C':'softcy','\u233F':'solbar','\u29C4':'solb','/':'sol','\uD835\uDD4A':'Sopf','\uD835\uDD64':'sopf','\u2660':'spades','\u2293':'sqcap','\u2293\uFE00':'sqcaps','\u2294':'sqcup','\u2294\uFE00':'sqcups','\u228F':'sqsub','\u2291':'sqsube','\u2290':'sqsup','\u2292':'sqsupe','\u25A1':'squ','\uD835\uDCAE':'Sscr','\uD835\uDCC8':'sscr','\u22C6':'Star','\u2606':'star','\u2282':'sub','\u22D0':'Sub','\u2ABD':'subdot','\u2AC5':'subE','\u2286':'sube','\u2AC3':'subedot','\u2AC1':'submult','\u2ACB':'subnE','\u228A':'subne','\u2ABF':'subplus','\u2979':'subrarr','\u2AC7':'subsim','\u2AD5':'subsub','\u2AD3':'subsup','\u2211':'sum','\u266A':'sung','\xB9':'sup1','\xB2':'sup2','\xB3':'sup3','\u2283':'sup','\u22D1':'Sup','\u2ABE':'supdot','\u2AD8':'supdsub','\u2AC6':'supE','\u2287':'supe','\u2AC4':'supedot','\u27C9':'suphsol','\u2AD7':'suphsub','\u297B':'suplarr','\u2AC2':'supmult','\u2ACC':'supnE','\u228B':'supne','\u2AC0':'supplus','\u2AC8':'supsim','\u2AD4':'supsub','\u2AD6':'supsup','\u21D9':'swArr','\u292A':'swnwar','\xDF':'szlig','\t':'Tab','\u2316':'target','\u03A4':'Tau','\u03C4':'tau','\u0164':'Tcaron','\u0165':'tcaron','\u0162':'Tcedil','\u0163':'tcedil','\u0422':'Tcy','\u0442':'tcy','\u20DB':'tdot','\u2315':'telrec','\uD835\uDD17':'Tfr','\uD835\uDD31':'tfr','\u2234':'there4','\u0398':'Theta','\u03B8':'theta','\u03D1':'thetav','\u205F\u200A':'ThickSpace','\u2009':'thinsp','\xDE':'THORN','\xFE':'thorn','\u2A31':'timesbar','\xD7':'times','\u2A30':'timesd','\u2336':'topbot','\u2AF1':'topcir','\uD835\uDD4B':'Topf','\uD835\uDD65':'topf','\u2ADA':'topfork','\u2034':'tprime','\u2122':'trade','\u25B5':'utri','\u225C':'trie','\u25EC':'tridot','\u2A3A':'triminus','\u2A39':'triplus','\u29CD':'trisb','\u2A3B':'tritime','\u23E2':'trpezium','\uD835\uDCAF':'Tscr','\uD835\uDCC9':'tscr','\u0426':'TScy','\u0446':'tscy','\u040B':'TSHcy','\u045B':'tshcy','\u0166':'Tstrok','\u0167':'tstrok','\xDA':'Uacute','\xFA':'uacute','\u219F':'Uarr','\u2949':'Uarrocir','\u040E':'Ubrcy','\u045E':'ubrcy','\u016C':'Ubreve','\u016D':'ubreve','\xDB':'Ucirc','\xFB':'ucirc','\u0423':'Ucy','\u0443':'ucy','\u21C5':'udarr','\u0170':'Udblac','\u0171':'udblac','\u296E':'udhar','\u297E':'ufisht','\uD835\uDD18':'Ufr','\uD835\uDD32':'ufr','\xD9':'Ugrave','\xF9':'ugrave','\u2963':'uHar','\u2580':'uhblk','\u231C':'ulcorn','\u230F':'ulcrop','\u25F8':'ultri','\u016A':'Umacr','\u016B':'umacr','\u23DF':'UnderBrace','\u23DD':'UnderParenthesis','\u228E':'uplus','\u0172':'Uogon','\u0173':'uogon','\uD835\uDD4C':'Uopf','\uD835\uDD66':'uopf','\u2912':'UpArrowBar','\u2195':'varr','\u03C5':'upsi','\u03D2':'Upsi','\u03A5':'Upsilon','\u21C8':'uuarr','\u231D':'urcorn','\u230E':'urcrop','\u016E':'Uring','\u016F':'uring','\u25F9':'urtri','\uD835\uDCB0':'Uscr','\uD835\uDCCA':'uscr','\u22F0':'utdot','\u0168':'Utilde','\u0169':'utilde','\xDC':'Uuml','\xFC':'uuml','\u29A7':'uwangle','\u299C':'vangrt','\u228A\uFE00':'vsubne','\u2ACB\uFE00':'vsubnE','\u228B\uFE00':'vsupne','\u2ACC\uFE00':'vsupnE','\u2AE8':'vBar','\u2AEB':'Vbar','\u2AE9':'vBarv','\u0412':'Vcy','\u0432':'vcy','\u22A9':'Vdash','\u22AB':'VDash','\u2AE6':'Vdashl','\u22BB':'veebar','\u225A':'veeeq','\u22EE':'vellip','|':'vert','\u2016':'Vert','\u2758':'VerticalSeparator','\u2240':'wr','\uD835\uDD19':'Vfr','\uD835\uDD33':'vfr','\uD835\uDD4D':'Vopf','\uD835\uDD67':'vopf','\uD835\uDCB1':'Vscr','\uD835\uDCCB':'vscr','\u22AA':'Vvdash','\u299A':'vzigzag','\u0174':'Wcirc','\u0175':'wcirc','\u2A5F':'wedbar','\u2259':'wedgeq','\u2118':'wp','\uD835\uDD1A':'Wfr','\uD835\uDD34':'wfr','\uD835\uDD4E':'Wopf','\uD835\uDD68':'wopf','\uD835\uDCB2':'Wscr','\uD835\uDCCC':'wscr','\uD835\uDD1B':'Xfr','\uD835\uDD35':'xfr','\u039E':'Xi','\u03BE':'xi','\u22FB':'xnis','\uD835\uDD4F':'Xopf','\uD835\uDD69':'xopf','\uD835\uDCB3':'Xscr','\uD835\uDCCD':'xscr','\xDD':'Yacute','\xFD':'yacute','\u042F':'YAcy','\u044F':'yacy','\u0176':'Ycirc','\u0177':'ycirc','\u042B':'Ycy','\u044B':'ycy','\xA5':'yen','\uD835\uDD1C':'Yfr','\uD835\uDD36':'yfr','\u0407':'YIcy','\u0457':'yicy','\uD835\uDD50':'Yopf','\uD835\uDD6A':'yopf','\uD835\uDCB4':'Yscr','\uD835\uDCCE':'yscr','\u042E':'YUcy','\u044E':'yucy','\xFF':'yuml','\u0178':'Yuml','\u0179':'Zacute','\u017A':'zacute','\u017D':'Zcaron','\u017E':'zcaron','\u0417':'Zcy','\u0437':'zcy','\u017B':'Zdot','\u017C':'zdot','\u2128':'Zfr','\u0396':'Zeta','\u03B6':'zeta','\uD835\uDD37':'zfr','\u0416':'ZHcy','\u0436':'zhcy','\u21DD':'zigrarr','\uD835\uDD6B':'zopf','\uD835\uDCB5':'Zscr','\uD835\uDCCF':'zscr','\u200D':'zwj','\u200C':'zwnj'};
+
+ var regexEscape = /["&'<>`]/g;
+ var escapeMap = {
+ '"': '"',
+ '&': '&',
+ '\'': ''',
+ '<': '<',
+ // See https://mathiasbynens.be/notes/ambiguous-ampersands: in HTML, the
+ // following is not strictly necessary unless itâs part of a tag or an
+ // unquoted attribute value. Weâre only escaping it to support those
+ // situations, and for XML support.
+ '>': '>',
+ // In Internet Explorer †8, the backtick character can be used
+ // to break out of (un)quoted attribute values or HTML comments.
+ // See http://html5sec.org/#102, http://html5sec.org/#108, and
+ // http://html5sec.org/#133.
+ '`': '`'
+ };
+
+ var regexInvalidEntity = /(?:[xX][^a-fA-F0-9]|[^0-9xX])/;
+ var regexInvalidRawCodePoint = /[\0-\x08\x0B\x0E-\x1F\x7F-\x9F\uFDD0-\uFDEF\uFFFE\uFFFF]|[\uD83F\uD87F\uD8BF\uD8FF\uD93F\uD97F\uD9BF\uD9FF\uDA3F\uDA7F\uDABF\uDAFF\uDB3F\uDB7F\uDBBF\uDBFF][\uDFFE\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/;
+ var regexDecode = /([0-9]+)(;?)|[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+);|&(Aacute|iacute|Uacute|plusmn|otilde|Otilde|Agrave|agrave|yacute|Yacute|oslash|Oslash|Atilde|atilde|brvbar|Ccedil|ccedil|ograve|curren|divide|Eacute|eacute|Ograve|oacute|Egrave|egrave|ugrave|frac12|frac14|frac34|Ugrave|Oacute|Iacute|ntilde|Ntilde|uacute|middot|Igrave|igrave|iquest|aacute|laquo|THORN|micro|iexcl|icirc|Icirc|Acirc|ucirc|ecirc|Ocirc|ocirc|Ecirc|Ucirc|aring|Aring|aelig|AElig|acute|pound|raquo|acirc|times|thorn|szlig|cedil|COPY|Auml|ordf|ordm|uuml|macr|Uuml|auml|Ouml|ouml|para|nbsp|Euml|quot|QUOT|euml|yuml|cent|sect|copy|sup1|sup2|sup3|Iuml|iuml|shy|eth|reg|not|yen|amp|AMP|REG|uml|ETH|deg|gt|GT|LT|lt)([=a-zA-Z0-9])?/g;
+ var decodeMap = {'Aacute':'\xC1','aacute':'\xE1','Abreve':'\u0102','abreve':'\u0103','ac':'\u223E','acd':'\u223F','acE':'\u223E\u0333','Acirc':'\xC2','acirc':'\xE2','acute':'\xB4','Acy':'\u0410','acy':'\u0430','AElig':'\xC6','aelig':'\xE6','af':'\u2061','Afr':'\uD835\uDD04','afr':'\uD835\uDD1E','Agrave':'\xC0','agrave':'\xE0','alefsym':'\u2135','aleph':'\u2135','Alpha':'\u0391','alpha':'\u03B1','Amacr':'\u0100','amacr':'\u0101','amalg':'\u2A3F','amp':'&','AMP':'&','andand':'\u2A55','And':'\u2A53','and':'\u2227','andd':'\u2A5C','andslope':'\u2A58','andv':'\u2A5A','ang':'\u2220','ange':'\u29A4','angle':'\u2220','angmsdaa':'\u29A8','angmsdab':'\u29A9','angmsdac':'\u29AA','angmsdad':'\u29AB','angmsdae':'\u29AC','angmsdaf':'\u29AD','angmsdag':'\u29AE','angmsdah':'\u29AF','angmsd':'\u2221','angrt':'\u221F','angrtvb':'\u22BE','angrtvbd':'\u299D','angsph':'\u2222','angst':'\xC5','angzarr':'\u237C','Aogon':'\u0104','aogon':'\u0105','Aopf':'\uD835\uDD38','aopf':'\uD835\uDD52','apacir':'\u2A6F','ap':'\u2248','apE':'\u2A70','ape':'\u224A','apid':'\u224B','apos':'\'','ApplyFunction':'\u2061','approx':'\u2248','approxeq':'\u224A','Aring':'\xC5','aring':'\xE5','Ascr':'\uD835\uDC9C','ascr':'\uD835\uDCB6','Assign':'\u2254','ast':'*','asymp':'\u2248','asympeq':'\u224D','Atilde':'\xC3','atilde':'\xE3','Auml':'\xC4','auml':'\xE4','awconint':'\u2233','awint':'\u2A11','backcong':'\u224C','backepsilon':'\u03F6','backprime':'\u2035','backsim':'\u223D','backsimeq':'\u22CD','Backslash':'\u2216','Barv':'\u2AE7','barvee':'\u22BD','barwed':'\u2305','Barwed':'\u2306','barwedge':'\u2305','bbrk':'\u23B5','bbrktbrk':'\u23B6','bcong':'\u224C','Bcy':'\u0411','bcy':'\u0431','bdquo':'\u201E','becaus':'\u2235','because':'\u2235','Because':'\u2235','bemptyv':'\u29B0','bepsi':'\u03F6','bernou':'\u212C','Bernoullis':'\u212C','Beta':'\u0392','beta':'\u03B2','beth':'\u2136','between':'\u226C','Bfr':'\uD835\uDD05','bfr':'\uD835\uDD1F','bigcap':'\u22C2','bigcirc':'\u25EF','bigcup':'\u22C3','bigodot':'\u2A00','bigoplus':'\u2A01','bigotimes':'\u2A02','bigsqcup':'\u2A06','bigstar':'\u2605','bigtriangledown':'\u25BD','bigtriangleup':'\u25B3','biguplus':'\u2A04','bigvee':'\u22C1','bigwedge':'\u22C0','bkarow':'\u290D','blacklozenge':'\u29EB','blacksquare':'\u25AA','blacktriangle':'\u25B4','blacktriangledown':'\u25BE','blacktriangleleft':'\u25C2','blacktriangleright':'\u25B8','blank':'\u2423','blk12':'\u2592','blk14':'\u2591','blk34':'\u2593','block':'\u2588','bne':'=\u20E5','bnequiv':'\u2261\u20E5','bNot':'\u2AED','bnot':'\u2310','Bopf':'\uD835\uDD39','bopf':'\uD835\uDD53','bot':'\u22A5','bottom':'\u22A5','bowtie':'\u22C8','boxbox':'\u29C9','boxdl':'\u2510','boxdL':'\u2555','boxDl':'\u2556','boxDL':'\u2557','boxdr':'\u250C','boxdR':'\u2552','boxDr':'\u2553','boxDR':'\u2554','boxh':'\u2500','boxH':'\u2550','boxhd':'\u252C','boxHd':'\u2564','boxhD':'\u2565','boxHD':'\u2566','boxhu':'\u2534','boxHu':'\u2567','boxhU':'\u2568','boxHU':'\u2569','boxminus':'\u229F','boxplus':'\u229E','boxtimes':'\u22A0','boxul':'\u2518','boxuL':'\u255B','boxUl':'\u255C','boxUL':'\u255D','boxur':'\u2514','boxuR':'\u2558','boxUr':'\u2559','boxUR':'\u255A','boxv':'\u2502','boxV':'\u2551','boxvh':'\u253C','boxvH':'\u256A','boxVh':'\u256B','boxVH':'\u256C','boxvl':'\u2524','boxvL':'\u2561','boxVl':'\u2562','boxVL':'\u2563','boxvr':'\u251C','boxvR':'\u255E','boxVr':'\u255F','boxVR':'\u2560','bprime':'\u2035','breve':'\u02D8','Breve':'\u02D8','brvbar':'\xA6','bscr':'\uD835\uDCB7','Bscr':'\u212C','bsemi':'\u204F','bsim':'\u223D','bsime':'\u22CD','bsolb':'\u29C5','bsol':'\\','bsolhsub':'\u27C8','bull':'\u2022','bullet':'\u2022','bump':'\u224E','bumpE':'\u2AAE','bumpe':'\u224F','Bumpeq':'\u224E','bumpeq':'\u224F','Cacute':'\u0106','cacute':'\u0107','capand':'\u2A44','capbrcup':'\u2A49','capcap':'\u2A4B','cap':'\u2229','Cap':'\u22D2','capcup':'\u2A47','capdot':'\u2A40','CapitalDifferentialD':'\u2145','caps':'\u2229\uFE00','caret':'\u2041','caron':'\u02C7','Cayleys':'\u212D','ccaps':'\u2A4D','Ccaron':'\u010C','ccaron':'\u010D','Ccedil':'\xC7','ccedil':'\xE7','Ccirc':'\u0108','ccirc':'\u0109','Cconint':'\u2230','ccups':'\u2A4C','ccupssm':'\u2A50','Cdot':'\u010A','cdot':'\u010B','cedil':'\xB8','Cedilla':'\xB8','cemptyv':'\u29B2','cent':'\xA2','centerdot':'\xB7','CenterDot':'\xB7','cfr':'\uD835\uDD20','Cfr':'\u212D','CHcy':'\u0427','chcy':'\u0447','check':'\u2713','checkmark':'\u2713','Chi':'\u03A7','chi':'\u03C7','circ':'\u02C6','circeq':'\u2257','circlearrowleft':'\u21BA','circlearrowright':'\u21BB','circledast':'\u229B','circledcirc':'\u229A','circleddash':'\u229D','CircleDot':'\u2299','circledR':'\xAE','circledS':'\u24C8','CircleMinus':'\u2296','CirclePlus':'\u2295','CircleTimes':'\u2297','cir':'\u25CB','cirE':'\u29C3','cire':'\u2257','cirfnint':'\u2A10','cirmid':'\u2AEF','cirscir':'\u29C2','ClockwiseContourIntegral':'\u2232','CloseCurlyDoubleQuote':'\u201D','CloseCurlyQuote':'\u2019','clubs':'\u2663','clubsuit':'\u2663','colon':':','Colon':'\u2237','Colone':'\u2A74','colone':'\u2254','coloneq':'\u2254','comma':',','commat':'@','comp':'\u2201','compfn':'\u2218','complement':'\u2201','complexes':'\u2102','cong':'\u2245','congdot':'\u2A6D','Congruent':'\u2261','conint':'\u222E','Conint':'\u222F','ContourIntegral':'\u222E','copf':'\uD835\uDD54','Copf':'\u2102','coprod':'\u2210','Coproduct':'\u2210','copy':'\xA9','COPY':'\xA9','copysr':'\u2117','CounterClockwiseContourIntegral':'\u2233','crarr':'\u21B5','cross':'\u2717','Cross':'\u2A2F','Cscr':'\uD835\uDC9E','cscr':'\uD835\uDCB8','csub':'\u2ACF','csube':'\u2AD1','csup':'\u2AD0','csupe':'\u2AD2','ctdot':'\u22EF','cudarrl':'\u2938','cudarrr':'\u2935','cuepr':'\u22DE','cuesc':'\u22DF','cularr':'\u21B6','cularrp':'\u293D','cupbrcap':'\u2A48','cupcap':'\u2A46','CupCap':'\u224D','cup':'\u222A','Cup':'\u22D3','cupcup':'\u2A4A','cupdot':'\u228D','cupor':'\u2A45','cups':'\u222A\uFE00','curarr':'\u21B7','curarrm':'\u293C','curlyeqprec':'\u22DE','curlyeqsucc':'\u22DF','curlyvee':'\u22CE','curlywedge':'\u22CF','curren':'\xA4','curvearrowleft':'\u21B6','curvearrowright':'\u21B7','cuvee':'\u22CE','cuwed':'\u22CF','cwconint':'\u2232','cwint':'\u2231','cylcty':'\u232D','dagger':'\u2020','Dagger':'\u2021','daleth':'\u2138','darr':'\u2193','Darr':'\u21A1','dArr':'\u21D3','dash':'\u2010','Dashv':'\u2AE4','dashv':'\u22A3','dbkarow':'\u290F','dblac':'\u02DD','Dcaron':'\u010E','dcaron':'\u010F','Dcy':'\u0414','dcy':'\u0434','ddagger':'\u2021','ddarr':'\u21CA','DD':'\u2145','dd':'\u2146','DDotrahd':'\u2911','ddotseq':'\u2A77','deg':'\xB0','Del':'\u2207','Delta':'\u0394','delta':'\u03B4','demptyv':'\u29B1','dfisht':'\u297F','Dfr':'\uD835\uDD07','dfr':'\uD835\uDD21','dHar':'\u2965','dharl':'\u21C3','dharr':'\u21C2','DiacriticalAcute':'\xB4','DiacriticalDot':'\u02D9','DiacriticalDoubleAcute':'\u02DD','DiacriticalGrave':'`','DiacriticalTilde':'\u02DC','diam':'\u22C4','diamond':'\u22C4','Diamond':'\u22C4','diamondsuit':'\u2666','diams':'\u2666','die':'\xA8','DifferentialD':'\u2146','digamma':'\u03DD','disin':'\u22F2','div':'\xF7','divide':'\xF7','divideontimes':'\u22C7','divonx':'\u22C7','DJcy':'\u0402','djcy':'\u0452','dlcorn':'\u231E','dlcrop':'\u230D','dollar':'$','Dopf':'\uD835\uDD3B','dopf':'\uD835\uDD55','Dot':'\xA8','dot':'\u02D9','DotDot':'\u20DC','doteq':'\u2250','doteqdot':'\u2251','DotEqual':'\u2250','dotminus':'\u2238','dotplus':'\u2214','dotsquare':'\u22A1','doublebarwedge':'\u2306','DoubleContourIntegral':'\u222F','DoubleDot':'\xA8','DoubleDownArrow':'\u21D3','DoubleLeftArrow':'\u21D0','DoubleLeftRightArrow':'\u21D4','DoubleLeftTee':'\u2AE4','DoubleLongLeftArrow':'\u27F8','DoubleLongLeftRightArrow':'\u27FA','DoubleLongRightArrow':'\u27F9','DoubleRightArrow':'\u21D2','DoubleRightTee':'\u22A8','DoubleUpArrow':'\u21D1','DoubleUpDownArrow':'\u21D5','DoubleVerticalBar':'\u2225','DownArrowBar':'\u2913','downarrow':'\u2193','DownArrow':'\u2193','Downarrow':'\u21D3','DownArrowUpArrow':'\u21F5','DownBreve':'\u0311','downdownarrows':'\u21CA','downharpoonleft':'\u21C3','downharpoonright':'\u21C2','DownLeftRightVector':'\u2950','DownLeftTeeVector':'\u295E','DownLeftVectorBar':'\u2956','DownLeftVector':'\u21BD','DownRightTeeVector':'\u295F','DownRightVectorBar':'\u2957','DownRightVector':'\u21C1','DownTeeArrow':'\u21A7','DownTee':'\u22A4','drbkarow':'\u2910','drcorn':'\u231F','drcrop':'\u230C','Dscr':'\uD835\uDC9F','dscr':'\uD835\uDCB9','DScy':'\u0405','dscy':'\u0455','dsol':'\u29F6','Dstrok':'\u0110','dstrok':'\u0111','dtdot':'\u22F1','dtri':'\u25BF','dtrif':'\u25BE','duarr':'\u21F5','duhar':'\u296F','dwangle':'\u29A6','DZcy':'\u040F','dzcy':'\u045F','dzigrarr':'\u27FF','Eacute':'\xC9','eacute':'\xE9','easter':'\u2A6E','Ecaron':'\u011A','ecaron':'\u011B','Ecirc':'\xCA','ecirc':'\xEA','ecir':'\u2256','ecolon':'\u2255','Ecy':'\u042D','ecy':'\u044D','eDDot':'\u2A77','Edot':'\u0116','edot':'\u0117','eDot':'\u2251','ee':'\u2147','efDot':'\u2252','Efr':'\uD835\uDD08','efr':'\uD835\uDD22','eg':'\u2A9A','Egrave':'\xC8','egrave':'\xE8','egs':'\u2A96','egsdot':'\u2A98','el':'\u2A99','Element':'\u2208','elinters':'\u23E7','ell':'\u2113','els':'\u2A95','elsdot':'\u2A97','Emacr':'\u0112','emacr':'\u0113','empty':'\u2205','emptyset':'\u2205','EmptySmallSquare':'\u25FB','emptyv':'\u2205','EmptyVerySmallSquare':'\u25AB','emsp13':'\u2004','emsp14':'\u2005','emsp':'\u2003','ENG':'\u014A','eng':'\u014B','ensp':'\u2002','Eogon':'\u0118','eogon':'\u0119','Eopf':'\uD835\uDD3C','eopf':'\uD835\uDD56','epar':'\u22D5','eparsl':'\u29E3','eplus':'\u2A71','epsi':'\u03B5','Epsilon':'\u0395','epsilon':'\u03B5','epsiv':'\u03F5','eqcirc':'\u2256','eqcolon':'\u2255','eqsim':'\u2242','eqslantgtr':'\u2A96','eqslantless':'\u2A95','Equal':'\u2A75','equals':'=','EqualTilde':'\u2242','equest':'\u225F','Equilibrium':'\u21CC','equiv':'\u2261','equivDD':'\u2A78','eqvparsl':'\u29E5','erarr':'\u2971','erDot':'\u2253','escr':'\u212F','Escr':'\u2130','esdot':'\u2250','Esim':'\u2A73','esim':'\u2242','Eta':'\u0397','eta':'\u03B7','ETH':'\xD0','eth':'\xF0','Euml':'\xCB','euml':'\xEB','euro':'\u20AC','excl':'!','exist':'\u2203','Exists':'\u2203','expectation':'\u2130','exponentiale':'\u2147','ExponentialE':'\u2147','fallingdotseq':'\u2252','Fcy':'\u0424','fcy':'\u0444','female':'\u2640','ffilig':'\uFB03','fflig':'\uFB00','ffllig':'\uFB04','Ffr':'\uD835\uDD09','ffr':'\uD835\uDD23','filig':'\uFB01','FilledSmallSquare':'\u25FC','FilledVerySmallSquare':'\u25AA','fjlig':'fj','flat':'\u266D','fllig':'\uFB02','fltns':'\u25B1','fnof':'\u0192','Fopf':'\uD835\uDD3D','fopf':'\uD835\uDD57','forall':'\u2200','ForAll':'\u2200','fork':'\u22D4','forkv':'\u2AD9','Fouriertrf':'\u2131','fpartint':'\u2A0D','frac12':'\xBD','frac13':'\u2153','frac14':'\xBC','frac15':'\u2155','frac16':'\u2159','frac18':'\u215B','frac23':'\u2154','frac25':'\u2156','frac34':'\xBE','frac35':'\u2157','frac38':'\u215C','frac45':'\u2158','frac56':'\u215A','frac58':'\u215D','frac78':'\u215E','frasl':'\u2044','frown':'\u2322','fscr':'\uD835\uDCBB','Fscr':'\u2131','gacute':'\u01F5','Gamma':'\u0393','gamma':'\u03B3','Gammad':'\u03DC','gammad':'\u03DD','gap':'\u2A86','Gbreve':'\u011E','gbreve':'\u011F','Gcedil':'\u0122','Gcirc':'\u011C','gcirc':'\u011D','Gcy':'\u0413','gcy':'\u0433','Gdot':'\u0120','gdot':'\u0121','ge':'\u2265','gE':'\u2267','gEl':'\u2A8C','gel':'\u22DB','geq':'\u2265','geqq':'\u2267','geqslant':'\u2A7E','gescc':'\u2AA9','ges':'\u2A7E','gesdot':'\u2A80','gesdoto':'\u2A82','gesdotol':'\u2A84','gesl':'\u22DB\uFE00','gesles':'\u2A94','Gfr':'\uD835\uDD0A','gfr':'\uD835\uDD24','gg':'\u226B','Gg':'\u22D9','ggg':'\u22D9','gimel':'\u2137','GJcy':'\u0403','gjcy':'\u0453','gla':'\u2AA5','gl':'\u2277','glE':'\u2A92','glj':'\u2AA4','gnap':'\u2A8A','gnapprox':'\u2A8A','gne':'\u2A88','gnE':'\u2269','gneq':'\u2A88','gneqq':'\u2269','gnsim':'\u22E7','Gopf':'\uD835\uDD3E','gopf':'\uD835\uDD58','grave':'`','GreaterEqual':'\u2265','GreaterEqualLess':'\u22DB','GreaterFullEqual':'\u2267','GreaterGreater':'\u2AA2','GreaterLess':'\u2277','GreaterSlantEqual':'\u2A7E','GreaterTilde':'\u2273','Gscr':'\uD835\uDCA2','gscr':'\u210A','gsim':'\u2273','gsime':'\u2A8E','gsiml':'\u2A90','gtcc':'\u2AA7','gtcir':'\u2A7A','gt':'>','GT':'>','Gt':'\u226B','gtdot':'\u22D7','gtlPar':'\u2995','gtquest':'\u2A7C','gtrapprox':'\u2A86','gtrarr':'\u2978','gtrdot':'\u22D7','gtreqless':'\u22DB','gtreqqless':'\u2A8C','gtrless':'\u2277','gtrsim':'\u2273','gvertneqq':'\u2269\uFE00','gvnE':'\u2269\uFE00','Hacek':'\u02C7','hairsp':'\u200A','half':'\xBD','hamilt':'\u210B','HARDcy':'\u042A','hardcy':'\u044A','harrcir':'\u2948','harr':'\u2194','hArr':'\u21D4','harrw':'\u21AD','Hat':'^','hbar':'\u210F','Hcirc':'\u0124','hcirc':'\u0125','hearts':'\u2665','heartsuit':'\u2665','hellip':'\u2026','hercon':'\u22B9','hfr':'\uD835\uDD25','Hfr':'\u210C','HilbertSpace':'\u210B','hksearow':'\u2925','hkswarow':'\u2926','hoarr':'\u21FF','homtht':'\u223B','hookleftarrow':'\u21A9','hookrightarrow':'\u21AA','hopf':'\uD835\uDD59','Hopf':'\u210D','horbar':'\u2015','HorizontalLine':'\u2500','hscr':'\uD835\uDCBD','Hscr':'\u210B','hslash':'\u210F','Hstrok':'\u0126','hstrok':'\u0127','HumpDownHump':'\u224E','HumpEqual':'\u224F','hybull':'\u2043','hyphen':'\u2010','Iacute':'\xCD','iacute':'\xED','ic':'\u2063','Icirc':'\xCE','icirc':'\xEE','Icy':'\u0418','icy':'\u0438','Idot':'\u0130','IEcy':'\u0415','iecy':'\u0435','iexcl':'\xA1','iff':'\u21D4','ifr':'\uD835\uDD26','Ifr':'\u2111','Igrave':'\xCC','igrave':'\xEC','ii':'\u2148','iiiint':'\u2A0C','iiint':'\u222D','iinfin':'\u29DC','iiota':'\u2129','IJlig':'\u0132','ijlig':'\u0133','Imacr':'\u012A','imacr':'\u012B','image':'\u2111','ImaginaryI':'\u2148','imagline':'\u2110','imagpart':'\u2111','imath':'\u0131','Im':'\u2111','imof':'\u22B7','imped':'\u01B5','Implies':'\u21D2','incare':'\u2105','in':'\u2208','infin':'\u221E','infintie':'\u29DD','inodot':'\u0131','intcal':'\u22BA','int':'\u222B','Int':'\u222C','integers':'\u2124','Integral':'\u222B','intercal':'\u22BA','Intersection':'\u22C2','intlarhk':'\u2A17','intprod':'\u2A3C','InvisibleComma':'\u2063','InvisibleTimes':'\u2062','IOcy':'\u0401','iocy':'\u0451','Iogon':'\u012E','iogon':'\u012F','Iopf':'\uD835\uDD40','iopf':'\uD835\uDD5A','Iota':'\u0399','iota':'\u03B9','iprod':'\u2A3C','iquest':'\xBF','iscr':'\uD835\uDCBE','Iscr':'\u2110','isin':'\u2208','isindot':'\u22F5','isinE':'\u22F9','isins':'\u22F4','isinsv':'\u22F3','isinv':'\u2208','it':'\u2062','Itilde':'\u0128','itilde':'\u0129','Iukcy':'\u0406','iukcy':'\u0456','Iuml':'\xCF','iuml':'\xEF','Jcirc':'\u0134','jcirc':'\u0135','Jcy':'\u0419','jcy':'\u0439','Jfr':'\uD835\uDD0D','jfr':'\uD835\uDD27','jmath':'\u0237','Jopf':'\uD835\uDD41','jopf':'\uD835\uDD5B','Jscr':'\uD835\uDCA5','jscr':'\uD835\uDCBF','Jsercy':'\u0408','jsercy':'\u0458','Jukcy':'\u0404','jukcy':'\u0454','Kappa':'\u039A','kappa':'\u03BA','kappav':'\u03F0','Kcedil':'\u0136','kcedil':'\u0137','Kcy':'\u041A','kcy':'\u043A','Kfr':'\uD835\uDD0E','kfr':'\uD835\uDD28','kgreen':'\u0138','KHcy':'\u0425','khcy':'\u0445','KJcy':'\u040C','kjcy':'\u045C','Kopf':'\uD835\uDD42','kopf':'\uD835\uDD5C','Kscr':'\uD835\uDCA6','kscr':'\uD835\uDCC0','lAarr':'\u21DA','Lacute':'\u0139','lacute':'\u013A','laemptyv':'\u29B4','lagran':'\u2112','Lambda':'\u039B','lambda':'\u03BB','lang':'\u27E8','Lang':'\u27EA','langd':'\u2991','langle':'\u27E8','lap':'\u2A85','Laplacetrf':'\u2112','laquo':'\xAB','larrb':'\u21E4','larrbfs':'\u291F','larr':'\u2190','Larr':'\u219E','lArr':'\u21D0','larrfs':'\u291D','larrhk':'\u21A9','larrlp':'\u21AB','larrpl':'\u2939','larrsim':'\u2973','larrtl':'\u21A2','latail':'\u2919','lAtail':'\u291B','lat':'\u2AAB','late':'\u2AAD','lates':'\u2AAD\uFE00','lbarr':'\u290C','lBarr':'\u290E','lbbrk':'\u2772','lbrace':'{','lbrack':'[','lbrke':'\u298B','lbrksld':'\u298F','lbrkslu':'\u298D','Lcaron':'\u013D','lcaron':'\u013E','Lcedil':'\u013B','lcedil':'\u013C','lceil':'\u2308','lcub':'{','Lcy':'\u041B','lcy':'\u043B','ldca':'\u2936','ldquo':'\u201C','ldquor':'\u201E','ldrdhar':'\u2967','ldrushar':'\u294B','ldsh':'\u21B2','le':'\u2264','lE':'\u2266','LeftAngleBracket':'\u27E8','LeftArrowBar':'\u21E4','leftarrow':'\u2190','LeftArrow':'\u2190','Leftarrow':'\u21D0','LeftArrowRightArrow':'\u21C6','leftarrowtail':'\u21A2','LeftCeiling':'\u2308','LeftDoubleBracket':'\u27E6','LeftDownTeeVector':'\u2961','LeftDownVectorBar':'\u2959','LeftDownVector':'\u21C3','LeftFloor':'\u230A','leftharpoondown':'\u21BD','leftharpoonup':'\u21BC','leftleftarrows':'\u21C7','leftrightarrow':'\u2194','LeftRightArrow':'\u2194','Leftrightarrow':'\u21D4','leftrightarrows':'\u21C6','leftrightharpoons':'\u21CB','leftrightsquigarrow':'\u21AD','LeftRightVector':'\u294E','LeftTeeArrow':'\u21A4','LeftTee':'\u22A3','LeftTeeVector':'\u295A','leftthreetimes':'\u22CB','LeftTriangleBar':'\u29CF','LeftTriangle':'\u22B2','LeftTriangleEqual':'\u22B4','LeftUpDownVector':'\u2951','LeftUpTeeVector':'\u2960','LeftUpVectorBar':'\u2958','LeftUpVector':'\u21BF','LeftVectorBar':'\u2952','LeftVector':'\u21BC','lEg':'\u2A8B','leg':'\u22DA','leq':'\u2264','leqq':'\u2266','leqslant':'\u2A7D','lescc':'\u2AA8','les':'\u2A7D','lesdot':'\u2A7F','lesdoto':'\u2A81','lesdotor':'\u2A83','lesg':'\u22DA\uFE00','lesges':'\u2A93','lessapprox':'\u2A85','lessdot':'\u22D6','lesseqgtr':'\u22DA','lesseqqgtr':'\u2A8B','LessEqualGreater':'\u22DA','LessFullEqual':'\u2266','LessGreater':'\u2276','lessgtr':'\u2276','LessLess':'\u2AA1','lesssim':'\u2272','LessSlantEqual':'\u2A7D','LessTilde':'\u2272','lfisht':'\u297C','lfloor':'\u230A','Lfr':'\uD835\uDD0F','lfr':'\uD835\uDD29','lg':'\u2276','lgE':'\u2A91','lHar':'\u2962','lhard':'\u21BD','lharu':'\u21BC','lharul':'\u296A','lhblk':'\u2584','LJcy':'\u0409','ljcy':'\u0459','llarr':'\u21C7','ll':'\u226A','Ll':'\u22D8','llcorner':'\u231E','Lleftarrow':'\u21DA','llhard':'\u296B','lltri':'\u25FA','Lmidot':'\u013F','lmidot':'\u0140','lmoustache':'\u23B0','lmoust':'\u23B0','lnap':'\u2A89','lnapprox':'\u2A89','lne':'\u2A87','lnE':'\u2268','lneq':'\u2A87','lneqq':'\u2268','lnsim':'\u22E6','loang':'\u27EC','loarr':'\u21FD','lobrk':'\u27E6','longleftarrow':'\u27F5','LongLeftArrow':'\u27F5','Longleftarrow':'\u27F8','longleftrightarrow':'\u27F7','LongLeftRightArrow':'\u27F7','Longleftrightarrow':'\u27FA','longmapsto':'\u27FC','longrightarrow':'\u27F6','LongRightArrow':'\u27F6','Longrightarrow':'\u27F9','looparrowleft':'\u21AB','looparrowright':'\u21AC','lopar':'\u2985','Lopf':'\uD835\uDD43','lopf':'\uD835\uDD5D','loplus':'\u2A2D','lotimes':'\u2A34','lowast':'\u2217','lowbar':'_','LowerLeftArrow':'\u2199','LowerRightArrow':'\u2198','loz':'\u25CA','lozenge':'\u25CA','lozf':'\u29EB','lpar':'(','lparlt':'\u2993','lrarr':'\u21C6','lrcorner':'\u231F','lrhar':'\u21CB','lrhard':'\u296D','lrm':'\u200E','lrtri':'\u22BF','lsaquo':'\u2039','lscr':'\uD835\uDCC1','Lscr':'\u2112','lsh':'\u21B0','Lsh':'\u21B0','lsim':'\u2272','lsime':'\u2A8D','lsimg':'\u2A8F','lsqb':'[','lsquo':'\u2018','lsquor':'\u201A','Lstrok':'\u0141','lstrok':'\u0142','ltcc':'\u2AA6','ltcir':'\u2A79','lt':'<','LT':'<','Lt':'\u226A','ltdot':'\u22D6','lthree':'\u22CB','ltimes':'\u22C9','ltlarr':'\u2976','ltquest':'\u2A7B','ltri':'\u25C3','ltrie':'\u22B4','ltrif':'\u25C2','ltrPar':'\u2996','lurdshar':'\u294A','luruhar':'\u2966','lvertneqq':'\u2268\uFE00','lvnE':'\u2268\uFE00','macr':'\xAF','male':'\u2642','malt':'\u2720','maltese':'\u2720','Map':'\u2905','map':'\u21A6','mapsto':'\u21A6','mapstodown':'\u21A7','mapstoleft':'\u21A4','mapstoup':'\u21A5','marker':'\u25AE','mcomma':'\u2A29','Mcy':'\u041C','mcy':'\u043C','mdash':'\u2014','mDDot':'\u223A','measuredangle':'\u2221','MediumSpace':'\u205F','Mellintrf':'\u2133','Mfr':'\uD835\uDD10','mfr':'\uD835\uDD2A','mho':'\u2127','micro':'\xB5','midast':'*','midcir':'\u2AF0','mid':'\u2223','middot':'\xB7','minusb':'\u229F','minus':'\u2212','minusd':'\u2238','minusdu':'\u2A2A','MinusPlus':'\u2213','mlcp':'\u2ADB','mldr':'\u2026','mnplus':'\u2213','models':'\u22A7','Mopf':'\uD835\uDD44','mopf':'\uD835\uDD5E','mp':'\u2213','mscr':'\uD835\uDCC2','Mscr':'\u2133','mstpos':'\u223E','Mu':'\u039C','mu':'\u03BC','multimap':'\u22B8','mumap':'\u22B8','nabla':'\u2207','Nacute':'\u0143','nacute':'\u0144','nang':'\u2220\u20D2','nap':'\u2249','napE':'\u2A70\u0338','napid':'\u224B\u0338','napos':'\u0149','napprox':'\u2249','natural':'\u266E','naturals':'\u2115','natur':'\u266E','nbsp':'\xA0','nbump':'\u224E\u0338','nbumpe':'\u224F\u0338','ncap':'\u2A43','Ncaron':'\u0147','ncaron':'\u0148','Ncedil':'\u0145','ncedil':'\u0146','ncong':'\u2247','ncongdot':'\u2A6D\u0338','ncup':'\u2A42','Ncy':'\u041D','ncy':'\u043D','ndash':'\u2013','nearhk':'\u2924','nearr':'\u2197','neArr':'\u21D7','nearrow':'\u2197','ne':'\u2260','nedot':'\u2250\u0338','NegativeMediumSpace':'\u200B','NegativeThickSpace':'\u200B','NegativeThinSpace':'\u200B','NegativeVeryThinSpace':'\u200B','nequiv':'\u2262','nesear':'\u2928','nesim':'\u2242\u0338','NestedGreaterGreater':'\u226B','NestedLessLess':'\u226A','NewLine':'\n','nexist':'\u2204','nexists':'\u2204','Nfr':'\uD835\uDD11','nfr':'\uD835\uDD2B','ngE':'\u2267\u0338','nge':'\u2271','ngeq':'\u2271','ngeqq':'\u2267\u0338','ngeqslant':'\u2A7E\u0338','nges':'\u2A7E\u0338','nGg':'\u22D9\u0338','ngsim':'\u2275','nGt':'\u226B\u20D2','ngt':'\u226F','ngtr':'\u226F','nGtv':'\u226B\u0338','nharr':'\u21AE','nhArr':'\u21CE','nhpar':'\u2AF2','ni':'\u220B','nis':'\u22FC','nisd':'\u22FA','niv':'\u220B','NJcy':'\u040A','njcy':'\u045A','nlarr':'\u219A','nlArr':'\u21CD','nldr':'\u2025','nlE':'\u2266\u0338','nle':'\u2270','nleftarrow':'\u219A','nLeftarrow':'\u21CD','nleftrightarrow':'\u21AE','nLeftrightarrow':'\u21CE','nleq':'\u2270','nleqq':'\u2266\u0338','nleqslant':'\u2A7D\u0338','nles':'\u2A7D\u0338','nless':'\u226E','nLl':'\u22D8\u0338','nlsim':'\u2274','nLt':'\u226A\u20D2','nlt':'\u226E','nltri':'\u22EA','nltrie':'\u22EC','nLtv':'\u226A\u0338','nmid':'\u2224','NoBreak':'\u2060','NonBreakingSpace':'\xA0','nopf':'\uD835\uDD5F','Nopf':'\u2115','Not':'\u2AEC','not':'\xAC','NotCongruent':'\u2262','NotCupCap':'\u226D','NotDoubleVerticalBar':'\u2226','NotElement':'\u2209','NotEqual':'\u2260','NotEqualTilde':'\u2242\u0338','NotExists':'\u2204','NotGreater':'\u226F','NotGreaterEqual':'\u2271','NotGreaterFullEqual':'\u2267\u0338','NotGreaterGreater':'\u226B\u0338','NotGreaterLess':'\u2279','NotGreaterSlantEqual':'\u2A7E\u0338','NotGreaterTilde':'\u2275','NotHumpDownHump':'\u224E\u0338','NotHumpEqual':'\u224F\u0338','notin':'\u2209','notindot':'\u22F5\u0338','notinE':'\u22F9\u0338','notinva':'\u2209','notinvb':'\u22F7','notinvc':'\u22F6','NotLeftTriangleBar':'\u29CF\u0338','NotLeftTriangle':'\u22EA','NotLeftTriangleEqual':'\u22EC','NotLess':'\u226E','NotLessEqual':'\u2270','NotLessGreater':'\u2278','NotLessLess':'\u226A\u0338','NotLessSlantEqual':'\u2A7D\u0338','NotLessTilde':'\u2274','NotNestedGreaterGreater':'\u2AA2\u0338','NotNestedLessLess':'\u2AA1\u0338','notni':'\u220C','notniva':'\u220C','notnivb':'\u22FE','notnivc':'\u22FD','NotPrecedes':'\u2280','NotPrecedesEqual':'\u2AAF\u0338','NotPrecedesSlantEqual':'\u22E0','NotReverseElement':'\u220C','NotRightTriangleBar':'\u29D0\u0338','NotRightTriangle':'\u22EB','NotRightTriangleEqual':'\u22ED','NotSquareSubset':'\u228F\u0338','NotSquareSubsetEqual':'\u22E2','NotSquareSuperset':'\u2290\u0338','NotSquareSupersetEqual':'\u22E3','NotSubset':'\u2282\u20D2','NotSubsetEqual':'\u2288','NotSucceeds':'\u2281','NotSucceedsEqual':'\u2AB0\u0338','NotSucceedsSlantEqual':'\u22E1','NotSucceedsTilde':'\u227F\u0338','NotSuperset':'\u2283\u20D2','NotSupersetEqual':'\u2289','NotTilde':'\u2241','NotTildeEqual':'\u2244','NotTildeFullEqual':'\u2247','NotTildeTilde':'\u2249','NotVerticalBar':'\u2224','nparallel':'\u2226','npar':'\u2226','nparsl':'\u2AFD\u20E5','npart':'\u2202\u0338','npolint':'\u2A14','npr':'\u2280','nprcue':'\u22E0','nprec':'\u2280','npreceq':'\u2AAF\u0338','npre':'\u2AAF\u0338','nrarrc':'\u2933\u0338','nrarr':'\u219B','nrArr':'\u21CF','nrarrw':'\u219D\u0338','nrightarrow':'\u219B','nRightarrow':'\u21CF','nrtri':'\u22EB','nrtrie':'\u22ED','nsc':'\u2281','nsccue':'\u22E1','nsce':'\u2AB0\u0338','Nscr':'\uD835\uDCA9','nscr':'\uD835\uDCC3','nshortmid':'\u2224','nshortparallel':'\u2226','nsim':'\u2241','nsime':'\u2244','nsimeq':'\u2244','nsmid':'\u2224','nspar':'\u2226','nsqsube':'\u22E2','nsqsupe':'\u22E3','nsub':'\u2284','nsubE':'\u2AC5\u0338','nsube':'\u2288','nsubset':'\u2282\u20D2','nsubseteq':'\u2288','nsubseteqq':'\u2AC5\u0338','nsucc':'\u2281','nsucceq':'\u2AB0\u0338','nsup':'\u2285','nsupE':'\u2AC6\u0338','nsupe':'\u2289','nsupset':'\u2283\u20D2','nsupseteq':'\u2289','nsupseteqq':'\u2AC6\u0338','ntgl':'\u2279','Ntilde':'\xD1','ntilde':'\xF1','ntlg':'\u2278','ntriangleleft':'\u22EA','ntrianglelefteq':'\u22EC','ntriangleright':'\u22EB','ntrianglerighteq':'\u22ED','Nu':'\u039D','nu':'\u03BD','num':'#','numero':'\u2116','numsp':'\u2007','nvap':'\u224D\u20D2','nvdash':'\u22AC','nvDash':'\u22AD','nVdash':'\u22AE','nVDash':'\u22AF','nvge':'\u2265\u20D2','nvgt':'>\u20D2','nvHarr':'\u2904','nvinfin':'\u29DE','nvlArr':'\u2902','nvle':'\u2264\u20D2','nvlt':'<\u20D2','nvltrie':'\u22B4\u20D2','nvrArr':'\u2903','nvrtrie':'\u22B5\u20D2','nvsim':'\u223C\u20D2','nwarhk':'\u2923','nwarr':'\u2196','nwArr':'\u21D6','nwarrow':'\u2196','nwnear':'\u2927','Oacute':'\xD3','oacute':'\xF3','oast':'\u229B','Ocirc':'\xD4','ocirc':'\xF4','ocir':'\u229A','Ocy':'\u041E','ocy':'\u043E','odash':'\u229D','Odblac':'\u0150','odblac':'\u0151','odiv':'\u2A38','odot':'\u2299','odsold':'\u29BC','OElig':'\u0152','oelig':'\u0153','ofcir':'\u29BF','Ofr':'\uD835\uDD12','ofr':'\uD835\uDD2C','ogon':'\u02DB','Ograve':'\xD2','ograve':'\xF2','ogt':'\u29C1','ohbar':'\u29B5','ohm':'\u03A9','oint':'\u222E','olarr':'\u21BA','olcir':'\u29BE','olcross':'\u29BB','oline':'\u203E','olt':'\u29C0','Omacr':'\u014C','omacr':'\u014D','Omega':'\u03A9','omega':'\u03C9','Omicron':'\u039F','omicron':'\u03BF','omid':'\u29B6','ominus':'\u2296','Oopf':'\uD835\uDD46','oopf':'\uD835\uDD60','opar':'\u29B7','OpenCurlyDoubleQuote':'\u201C','OpenCurlyQuote':'\u2018','operp':'\u29B9','oplus':'\u2295','orarr':'\u21BB','Or':'\u2A54','or':'\u2228','ord':'\u2A5D','order':'\u2134','orderof':'\u2134','ordf':'\xAA','ordm':'\xBA','origof':'\u22B6','oror':'\u2A56','orslope':'\u2A57','orv':'\u2A5B','oS':'\u24C8','Oscr':'\uD835\uDCAA','oscr':'\u2134','Oslash':'\xD8','oslash':'\xF8','osol':'\u2298','Otilde':'\xD5','otilde':'\xF5','otimesas':'\u2A36','Otimes':'\u2A37','otimes':'\u2297','Ouml':'\xD6','ouml':'\xF6','ovbar':'\u233D','OverBar':'\u203E','OverBrace':'\u23DE','OverBracket':'\u23B4','OverParenthesis':'\u23DC','para':'\xB6','parallel':'\u2225','par':'\u2225','parsim':'\u2AF3','parsl':'\u2AFD','part':'\u2202','PartialD':'\u2202','Pcy':'\u041F','pcy':'\u043F','percnt':'%','period':'.','permil':'\u2030','perp':'\u22A5','pertenk':'\u2031','Pfr':'\uD835\uDD13','pfr':'\uD835\uDD2D','Phi':'\u03A6','phi':'\u03C6','phiv':'\u03D5','phmmat':'\u2133','phone':'\u260E','Pi':'\u03A0','pi':'\u03C0','pitchfork':'\u22D4','piv':'\u03D6','planck':'\u210F','planckh':'\u210E','plankv':'\u210F','plusacir':'\u2A23','plusb':'\u229E','pluscir':'\u2A22','plus':'+','plusdo':'\u2214','plusdu':'\u2A25','pluse':'\u2A72','PlusMinus':'\xB1','plusmn':'\xB1','plussim':'\u2A26','plustwo':'\u2A27','pm':'\xB1','Poincareplane':'\u210C','pointint':'\u2A15','popf':'\uD835\uDD61','Popf':'\u2119','pound':'\xA3','prap':'\u2AB7','Pr':'\u2ABB','pr':'\u227A','prcue':'\u227C','precapprox':'\u2AB7','prec':'\u227A','preccurlyeq':'\u227C','Precedes':'\u227A','PrecedesEqual':'\u2AAF','PrecedesSlantEqual':'\u227C','PrecedesTilde':'\u227E','preceq':'\u2AAF','precnapprox':'\u2AB9','precneqq':'\u2AB5','precnsim':'\u22E8','pre':'\u2AAF','prE':'\u2AB3','precsim':'\u227E','prime':'\u2032','Prime':'\u2033','primes':'\u2119','prnap':'\u2AB9','prnE':'\u2AB5','prnsim':'\u22E8','prod':'\u220F','Product':'\u220F','profalar':'\u232E','profline':'\u2312','profsurf':'\u2313','prop':'\u221D','Proportional':'\u221D','Proportion':'\u2237','propto':'\u221D','prsim':'\u227E','prurel':'\u22B0','Pscr':'\uD835\uDCAB','pscr':'\uD835\uDCC5','Psi':'\u03A8','psi':'\u03C8','puncsp':'\u2008','Qfr':'\uD835\uDD14','qfr':'\uD835\uDD2E','qint':'\u2A0C','qopf':'\uD835\uDD62','Qopf':'\u211A','qprime':'\u2057','Qscr':'\uD835\uDCAC','qscr':'\uD835\uDCC6','quaternions':'\u210D','quatint':'\u2A16','quest':'?','questeq':'\u225F','quot':'"','QUOT':'"','rAarr':'\u21DB','race':'\u223D\u0331','Racute':'\u0154','racute':'\u0155','radic':'\u221A','raemptyv':'\u29B3','rang':'\u27E9','Rang':'\u27EB','rangd':'\u2992','range':'\u29A5','rangle':'\u27E9','raquo':'\xBB','rarrap':'\u2975','rarrb':'\u21E5','rarrbfs':'\u2920','rarrc':'\u2933','rarr':'\u2192','Rarr':'\u21A0','rArr':'\u21D2','rarrfs':'\u291E','rarrhk':'\u21AA','rarrlp':'\u21AC','rarrpl':'\u2945','rarrsim':'\u2974','Rarrtl':'\u2916','rarrtl':'\u21A3','rarrw':'\u219D','ratail':'\u291A','rAtail':'\u291C','ratio':'\u2236','rationals':'\u211A','rbarr':'\u290D','rBarr':'\u290F','RBarr':'\u2910','rbbrk':'\u2773','rbrace':'}','rbrack':']','rbrke':'\u298C','rbrksld':'\u298E','rbrkslu':'\u2990','Rcaron':'\u0158','rcaron':'\u0159','Rcedil':'\u0156','rcedil':'\u0157','rceil':'\u2309','rcub':'}','Rcy':'\u0420','rcy':'\u0440','rdca':'\u2937','rdldhar':'\u2969','rdquo':'\u201D','rdquor':'\u201D','rdsh':'\u21B3','real':'\u211C','realine':'\u211B','realpart':'\u211C','reals':'\u211D','Re':'\u211C','rect':'\u25AD','reg':'\xAE','REG':'\xAE','ReverseElement':'\u220B','ReverseEquilibrium':'\u21CB','ReverseUpEquilibrium':'\u296F','rfisht':'\u297D','rfloor':'\u230B','rfr':'\uD835\uDD2F','Rfr':'\u211C','rHar':'\u2964','rhard':'\u21C1','rharu':'\u21C0','rharul':'\u296C','Rho':'\u03A1','rho':'\u03C1','rhov':'\u03F1','RightAngleBracket':'\u27E9','RightArrowBar':'\u21E5','rightarrow':'\u2192','RightArrow':'\u2192','Rightarrow':'\u21D2','RightArrowLeftArrow':'\u21C4','rightarrowtail':'\u21A3','RightCeiling':'\u2309','RightDoubleBracket':'\u27E7','RightDownTeeVector':'\u295D','RightDownVectorBar':'\u2955','RightDownVector':'\u21C2','RightFloor':'\u230B','rightharpoondown':'\u21C1','rightharpoonup':'\u21C0','rightleftarrows':'\u21C4','rightleftharpoons':'\u21CC','rightrightarrows':'\u21C9','rightsquigarrow':'\u219D','RightTeeArrow':'\u21A6','RightTee':'\u22A2','RightTeeVector':'\u295B','rightthreetimes':'\u22CC','RightTriangleBar':'\u29D0','RightTriangle':'\u22B3','RightTriangleEqual':'\u22B5','RightUpDownVector':'\u294F','RightUpTeeVector':'\u295C','RightUpVectorBar':'\u2954','RightUpVector':'\u21BE','RightVectorBar':'\u2953','RightVector':'\u21C0','ring':'\u02DA','risingdotseq':'\u2253','rlarr':'\u21C4','rlhar':'\u21CC','rlm':'\u200F','rmoustache':'\u23B1','rmoust':'\u23B1','rnmid':'\u2AEE','roang':'\u27ED','roarr':'\u21FE','robrk':'\u27E7','ropar':'\u2986','ropf':'\uD835\uDD63','Ropf':'\u211D','roplus':'\u2A2E','rotimes':'\u2A35','RoundImplies':'\u2970','rpar':')','rpargt':'\u2994','rppolint':'\u2A12','rrarr':'\u21C9','Rrightarrow':'\u21DB','rsaquo':'\u203A','rscr':'\uD835\uDCC7','Rscr':'\u211B','rsh':'\u21B1','Rsh':'\u21B1','rsqb':']','rsquo':'\u2019','rsquor':'\u2019','rthree':'\u22CC','rtimes':'\u22CA','rtri':'\u25B9','rtrie':'\u22B5','rtrif':'\u25B8','rtriltri':'\u29CE','RuleDelayed':'\u29F4','ruluhar':'\u2968','rx':'\u211E','Sacute':'\u015A','sacute':'\u015B','sbquo':'\u201A','scap':'\u2AB8','Scaron':'\u0160','scaron':'\u0161','Sc':'\u2ABC','sc':'\u227B','sccue':'\u227D','sce':'\u2AB0','scE':'\u2AB4','Scedil':'\u015E','scedil':'\u015F','Scirc':'\u015C','scirc':'\u015D','scnap':'\u2ABA','scnE':'\u2AB6','scnsim':'\u22E9','scpolint':'\u2A13','scsim':'\u227F','Scy':'\u0421','scy':'\u0441','sdotb':'\u22A1','sdot':'\u22C5','sdote':'\u2A66','searhk':'\u2925','searr':'\u2198','seArr':'\u21D8','searrow':'\u2198','sect':'\xA7','semi':';','seswar':'\u2929','setminus':'\u2216','setmn':'\u2216','sext':'\u2736','Sfr':'\uD835\uDD16','sfr':'\uD835\uDD30','sfrown':'\u2322','sharp':'\u266F','SHCHcy':'\u0429','shchcy':'\u0449','SHcy':'\u0428','shcy':'\u0448','ShortDownArrow':'\u2193','ShortLeftArrow':'\u2190','shortmid':'\u2223','shortparallel':'\u2225','ShortRightArrow':'\u2192','ShortUpArrow':'\u2191','shy':'\xAD','Sigma':'\u03A3','sigma':'\u03C3','sigmaf':'\u03C2','sigmav':'\u03C2','sim':'\u223C','simdot':'\u2A6A','sime':'\u2243','simeq':'\u2243','simg':'\u2A9E','simgE':'\u2AA0','siml':'\u2A9D','simlE':'\u2A9F','simne':'\u2246','simplus':'\u2A24','simrarr':'\u2972','slarr':'\u2190','SmallCircle':'\u2218','smallsetminus':'\u2216','smashp':'\u2A33','smeparsl':'\u29E4','smid':'\u2223','smile':'\u2323','smt':'\u2AAA','smte':'\u2AAC','smtes':'\u2AAC\uFE00','SOFTcy':'\u042C','softcy':'\u044C','solbar':'\u233F','solb':'\u29C4','sol':'/','Sopf':'\uD835\uDD4A','sopf':'\uD835\uDD64','spades':'\u2660','spadesuit':'\u2660','spar':'\u2225','sqcap':'\u2293','sqcaps':'\u2293\uFE00','sqcup':'\u2294','sqcups':'\u2294\uFE00','Sqrt':'\u221A','sqsub':'\u228F','sqsube':'\u2291','sqsubset':'\u228F','sqsubseteq':'\u2291','sqsup':'\u2290','sqsupe':'\u2292','sqsupset':'\u2290','sqsupseteq':'\u2292','square':'\u25A1','Square':'\u25A1','SquareIntersection':'\u2293','SquareSubset':'\u228F','SquareSubsetEqual':'\u2291','SquareSuperset':'\u2290','SquareSupersetEqual':'\u2292','SquareUnion':'\u2294','squarf':'\u25AA','squ':'\u25A1','squf':'\u25AA','srarr':'\u2192','Sscr':'\uD835\uDCAE','sscr':'\uD835\uDCC8','ssetmn':'\u2216','ssmile':'\u2323','sstarf':'\u22C6','Star':'\u22C6','star':'\u2606','starf':'\u2605','straightepsilon':'\u03F5','straightphi':'\u03D5','strns':'\xAF','sub':'\u2282','Sub':'\u22D0','subdot':'\u2ABD','subE':'\u2AC5','sube':'\u2286','subedot':'\u2AC3','submult':'\u2AC1','subnE':'\u2ACB','subne':'\u228A','subplus':'\u2ABF','subrarr':'\u2979','subset':'\u2282','Subset':'\u22D0','subseteq':'\u2286','subseteqq':'\u2AC5','SubsetEqual':'\u2286','subsetneq':'\u228A','subsetneqq':'\u2ACB','subsim':'\u2AC7','subsub':'\u2AD5','subsup':'\u2AD3','succapprox':'\u2AB8','succ':'\u227B','succcurlyeq':'\u227D','Succeeds':'\u227B','SucceedsEqual':'\u2AB0','SucceedsSlantEqual':'\u227D','SucceedsTilde':'\u227F','succeq':'\u2AB0','succnapprox':'\u2ABA','succneqq':'\u2AB6','succnsim':'\u22E9','succsim':'\u227F','SuchThat':'\u220B','sum':'\u2211','Sum':'\u2211','sung':'\u266A','sup1':'\xB9','sup2':'\xB2','sup3':'\xB3','sup':'\u2283','Sup':'\u22D1','supdot':'\u2ABE','supdsub':'\u2AD8','supE':'\u2AC6','supe':'\u2287','supedot':'\u2AC4','Superset':'\u2283','SupersetEqual':'\u2287','suphsol':'\u27C9','suphsub':'\u2AD7','suplarr':'\u297B','supmult':'\u2AC2','supnE':'\u2ACC','supne':'\u228B','supplus':'\u2AC0','supset':'\u2283','Supset':'\u22D1','supseteq':'\u2287','supseteqq':'\u2AC6','supsetneq':'\u228B','supsetneqq':'\u2ACC','supsim':'\u2AC8','supsub':'\u2AD4','supsup':'\u2AD6','swarhk':'\u2926','swarr':'\u2199','swArr':'\u21D9','swarrow':'\u2199','swnwar':'\u292A','szlig':'\xDF','Tab':'\t','target':'\u2316','Tau':'\u03A4','tau':'\u03C4','tbrk':'\u23B4','Tcaron':'\u0164','tcaron':'\u0165','Tcedil':'\u0162','tcedil':'\u0163','Tcy':'\u0422','tcy':'\u0442','tdot':'\u20DB','telrec':'\u2315','Tfr':'\uD835\uDD17','tfr':'\uD835\uDD31','there4':'\u2234','therefore':'\u2234','Therefore':'\u2234','Theta':'\u0398','theta':'\u03B8','thetasym':'\u03D1','thetav':'\u03D1','thickapprox':'\u2248','thicksim':'\u223C','ThickSpace':'\u205F\u200A','ThinSpace':'\u2009','thinsp':'\u2009','thkap':'\u2248','thksim':'\u223C','THORN':'\xDE','thorn':'\xFE','tilde':'\u02DC','Tilde':'\u223C','TildeEqual':'\u2243','TildeFullEqual':'\u2245','TildeTilde':'\u2248','timesbar':'\u2A31','timesb':'\u22A0','times':'\xD7','timesd':'\u2A30','tint':'\u222D','toea':'\u2928','topbot':'\u2336','topcir':'\u2AF1','top':'\u22A4','Topf':'\uD835\uDD4B','topf':'\uD835\uDD65','topfork':'\u2ADA','tosa':'\u2929','tprime':'\u2034','trade':'\u2122','TRADE':'\u2122','triangle':'\u25B5','triangledown':'\u25BF','triangleleft':'\u25C3','trianglelefteq':'\u22B4','triangleq':'\u225C','triangleright':'\u25B9','trianglerighteq':'\u22B5','tridot':'\u25EC','trie':'\u225C','triminus':'\u2A3A','TripleDot':'\u20DB','triplus':'\u2A39','trisb':'\u29CD','tritime':'\u2A3B','trpezium':'\u23E2','Tscr':'\uD835\uDCAF','tscr':'\uD835\uDCC9','TScy':'\u0426','tscy':'\u0446','TSHcy':'\u040B','tshcy':'\u045B','Tstrok':'\u0166','tstrok':'\u0167','twixt':'\u226C','twoheadleftarrow':'\u219E','twoheadrightarrow':'\u21A0','Uacute':'\xDA','uacute':'\xFA','uarr':'\u2191','Uarr':'\u219F','uArr':'\u21D1','Uarrocir':'\u2949','Ubrcy':'\u040E','ubrcy':'\u045E','Ubreve':'\u016C','ubreve':'\u016D','Ucirc':'\xDB','ucirc':'\xFB','Ucy':'\u0423','ucy':'\u0443','udarr':'\u21C5','Udblac':'\u0170','udblac':'\u0171','udhar':'\u296E','ufisht':'\u297E','Ufr':'\uD835\uDD18','ufr':'\uD835\uDD32','Ugrave':'\xD9','ugrave':'\xF9','uHar':'\u2963','uharl':'\u21BF','uharr':'\u21BE','uhblk':'\u2580','ulcorn':'\u231C','ulcorner':'\u231C','ulcrop':'\u230F','ultri':'\u25F8','Umacr':'\u016A','umacr':'\u016B','uml':'\xA8','UnderBar':'_','UnderBrace':'\u23DF','UnderBracket':'\u23B5','UnderParenthesis':'\u23DD','Union':'\u22C3','UnionPlus':'\u228E','Uogon':'\u0172','uogon':'\u0173','Uopf':'\uD835\uDD4C','uopf':'\uD835\uDD66','UpArrowBar':'\u2912','uparrow':'\u2191','UpArrow':'\u2191','Uparrow':'\u21D1','UpArrowDownArrow':'\u21C5','updownarrow':'\u2195','UpDownArrow':'\u2195','Updownarrow':'\u21D5','UpEquilibrium':'\u296E','upharpoonleft':'\u21BF','upharpoonright':'\u21BE','uplus':'\u228E','UpperLeftArrow':'\u2196','UpperRightArrow':'\u2197','upsi':'\u03C5','Upsi':'\u03D2','upsih':'\u03D2','Upsilon':'\u03A5','upsilon':'\u03C5','UpTeeArrow':'\u21A5','UpTee':'\u22A5','upuparrows':'\u21C8','urcorn':'\u231D','urcorner':'\u231D','urcrop':'\u230E','Uring':'\u016E','uring':'\u016F','urtri':'\u25F9','Uscr':'\uD835\uDCB0','uscr':'\uD835\uDCCA','utdot':'\u22F0','Utilde':'\u0168','utilde':'\u0169','utri':'\u25B5','utrif':'\u25B4','uuarr':'\u21C8','Uuml':'\xDC','uuml':'\xFC','uwangle':'\u29A7','vangrt':'\u299C','varepsilon':'\u03F5','varkappa':'\u03F0','varnothing':'\u2205','varphi':'\u03D5','varpi':'\u03D6','varpropto':'\u221D','varr':'\u2195','vArr':'\u21D5','varrho':'\u03F1','varsigma':'\u03C2','varsubsetneq':'\u228A\uFE00','varsubsetneqq':'\u2ACB\uFE00','varsupsetneq':'\u228B\uFE00','varsupsetneqq':'\u2ACC\uFE00','vartheta':'\u03D1','vartriangleleft':'\u22B2','vartriangleright':'\u22B3','vBar':'\u2AE8','Vbar':'\u2AEB','vBarv':'\u2AE9','Vcy':'\u0412','vcy':'\u0432','vdash':'\u22A2','vDash':'\u22A8','Vdash':'\u22A9','VDash':'\u22AB','Vdashl':'\u2AE6','veebar':'\u22BB','vee':'\u2228','Vee':'\u22C1','veeeq':'\u225A','vellip':'\u22EE','verbar':'|','Verbar':'\u2016','vert':'|','Vert':'\u2016','VerticalBar':'\u2223','VerticalLine':'|','VerticalSeparator':'\u2758','VerticalTilde':'\u2240','VeryThinSpace':'\u200A','Vfr':'\uD835\uDD19','vfr':'\uD835\uDD33','vltri':'\u22B2','vnsub':'\u2282\u20D2','vnsup':'\u2283\u20D2','Vopf':'\uD835\uDD4D','vopf':'\uD835\uDD67','vprop':'\u221D','vrtri':'\u22B3','Vscr':'\uD835\uDCB1','vscr':'\uD835\uDCCB','vsubnE':'\u2ACB\uFE00','vsubne':'\u228A\uFE00','vsupnE':'\u2ACC\uFE00','vsupne':'\u228B\uFE00','Vvdash':'\u22AA','vzigzag':'\u299A','Wcirc':'\u0174','wcirc':'\u0175','wedbar':'\u2A5F','wedge':'\u2227','Wedge':'\u22C0','wedgeq':'\u2259','weierp':'\u2118','Wfr':'\uD835\uDD1A','wfr':'\uD835\uDD34','Wopf':'\uD835\uDD4E','wopf':'\uD835\uDD68','wp':'\u2118','wr':'\u2240','wreath':'\u2240','Wscr':'\uD835\uDCB2','wscr':'\uD835\uDCCC','xcap':'\u22C2','xcirc':'\u25EF','xcup':'\u22C3','xdtri':'\u25BD','Xfr':'\uD835\uDD1B','xfr':'\uD835\uDD35','xharr':'\u27F7','xhArr':'\u27FA','Xi':'\u039E','xi':'\u03BE','xlarr':'\u27F5','xlArr':'\u27F8','xmap':'\u27FC','xnis':'\u22FB','xodot':'\u2A00','Xopf':'\uD835\uDD4F','xopf':'\uD835\uDD69','xoplus':'\u2A01','xotime':'\u2A02','xrarr':'\u27F6','xrArr':'\u27F9','Xscr':'\uD835\uDCB3','xscr':'\uD835\uDCCD','xsqcup':'\u2A06','xuplus':'\u2A04','xutri':'\u25B3','xvee':'\u22C1','xwedge':'\u22C0','Yacute':'\xDD','yacute':'\xFD','YAcy':'\u042F','yacy':'\u044F','Ycirc':'\u0176','ycirc':'\u0177','Ycy':'\u042B','ycy':'\u044B','yen':'\xA5','Yfr':'\uD835\uDD1C','yfr':'\uD835\uDD36','YIcy':'\u0407','yicy':'\u0457','Yopf':'\uD835\uDD50','yopf':'\uD835\uDD6A','Yscr':'\uD835\uDCB4','yscr':'\uD835\uDCCE','YUcy':'\u042E','yucy':'\u044E','yuml':'\xFF','Yuml':'\u0178','Zacute':'\u0179','zacute':'\u017A','Zcaron':'\u017D','zcaron':'\u017E','Zcy':'\u0417','zcy':'\u0437','Zdot':'\u017B','zdot':'\u017C','zeetrf':'\u2128','ZeroWidthSpace':'\u200B','Zeta':'\u0396','zeta':'\u03B6','zfr':'\uD835\uDD37','Zfr':'\u2128','ZHcy':'\u0416','zhcy':'\u0436','zigrarr':'\u21DD','zopf':'\uD835\uDD6B','Zopf':'\u2124','Zscr':'\uD835\uDCB5','zscr':'\uD835\uDCCF','zwj':'\u200D','zwnj':'\u200C'};
+ var decodeMapLegacy = {'Aacute':'\xC1','aacute':'\xE1','Acirc':'\xC2','acirc':'\xE2','acute':'\xB4','AElig':'\xC6','aelig':'\xE6','Agrave':'\xC0','agrave':'\xE0','amp':'&','AMP':'&','Aring':'\xC5','aring':'\xE5','Atilde':'\xC3','atilde':'\xE3','Auml':'\xC4','auml':'\xE4','brvbar':'\xA6','Ccedil':'\xC7','ccedil':'\xE7','cedil':'\xB8','cent':'\xA2','copy':'\xA9','COPY':'\xA9','curren':'\xA4','deg':'\xB0','divide':'\xF7','Eacute':'\xC9','eacute':'\xE9','Ecirc':'\xCA','ecirc':'\xEA','Egrave':'\xC8','egrave':'\xE8','ETH':'\xD0','eth':'\xF0','Euml':'\xCB','euml':'\xEB','frac12':'\xBD','frac14':'\xBC','frac34':'\xBE','gt':'>','GT':'>','Iacute':'\xCD','iacute':'\xED','Icirc':'\xCE','icirc':'\xEE','iexcl':'\xA1','Igrave':'\xCC','igrave':'\xEC','iquest':'\xBF','Iuml':'\xCF','iuml':'\xEF','laquo':'\xAB','lt':'<','LT':'<','macr':'\xAF','micro':'\xB5','middot':'\xB7','nbsp':'\xA0','not':'\xAC','Ntilde':'\xD1','ntilde':'\xF1','Oacute':'\xD3','oacute':'\xF3','Ocirc':'\xD4','ocirc':'\xF4','Ograve':'\xD2','ograve':'\xF2','ordf':'\xAA','ordm':'\xBA','Oslash':'\xD8','oslash':'\xF8','Otilde':'\xD5','otilde':'\xF5','Ouml':'\xD6','ouml':'\xF6','para':'\xB6','plusmn':'\xB1','pound':'\xA3','quot':'"','QUOT':'"','raquo':'\xBB','reg':'\xAE','REG':'\xAE','sect':'\xA7','shy':'\xAD','sup1':'\xB9','sup2':'\xB2','sup3':'\xB3','szlig':'\xDF','THORN':'\xDE','thorn':'\xFE','times':'\xD7','Uacute':'\xDA','uacute':'\xFA','Ucirc':'\xDB','ucirc':'\xFB','Ugrave':'\xD9','ugrave':'\xF9','uml':'\xA8','Uuml':'\xDC','uuml':'\xFC','Yacute':'\xDD','yacute':'\xFD','yen':'\xA5','yuml':'\xFF'};
+ var decodeMapNumeric = {'0':'\uFFFD','128':'\u20AC','130':'\u201A','131':'\u0192','132':'\u201E','133':'\u2026','134':'\u2020','135':'\u2021','136':'\u02C6','137':'\u2030','138':'\u0160','139':'\u2039','140':'\u0152','142':'\u017D','145':'\u2018','146':'\u2019','147':'\u201C','148':'\u201D','149':'\u2022','150':'\u2013','151':'\u2014','152':'\u02DC','153':'\u2122','154':'\u0161','155':'\u203A','156':'\u0153','158':'\u017E','159':'\u0178'};
+ var invalidReferenceCodePoints = [1,2,3,4,5,6,7,8,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,64976,64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993,64994,64995,64996,64997,64998,64999,65000,65001,65002,65003,65004,65005,65006,65007,65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111];
+
+ /*--------------------------------------------------------------------------*/
+
+ var stringFromCharCode = String.fromCharCode;
+
+ var object = {};
+ var hasOwnProperty = object.hasOwnProperty;
+ var has = function(object, propertyName) {
+ return hasOwnProperty.call(object, propertyName);
+ };
+
+ var contains = function(array, value) {
+ var index = -1;
+ var length = array.length;
+ while (++index < length) {
+ if (array[index] == value) {
+ return true;
+ }
+ }
+ return false;
+ };
+
+ var merge = function(options, defaults) {
+ if (!options) {
+ return defaults;
+ }
+ var result = {};
+ var key;
+ for (key in defaults) {
+ // A `hasOwnProperty` check is not needed here, since only recognized
+ // option names are used anyway. Any others are ignored.
+ result[key] = has(options, key) ? options[key] : defaults[key];
+ }
+ return result;
+ };
+
+ // Modified version of `ucs2encode`; see http://mths.be/punycode.
+ var codePointToSymbol = function(codePoint, strict) {
+ var output = '';
+ if ((codePoint >= 0xD800 && codePoint <= 0xDFFF) || codePoint > 0x10FFFF) {
+ // See issue #4:
+ // âOtherwise, if the number is in the range 0xD800 to 0xDFFF or is
+ // greater than 0x10FFFF, then this is a parse error. Return a U+FFFD
+ // REPLACEMENT CHARACTER.â
+ if (strict) {
+ parseError('character reference outside the permissible Unicode range');
+ }
+ return '\uFFFD';
+ }
+ if (has(decodeMapNumeric, codePoint)) {
+ if (strict) {
+ parseError('disallowed character reference');
+ }
+ return decodeMapNumeric[codePoint];
+ }
+ if (strict && contains(invalidReferenceCodePoints, codePoint)) {
+ parseError('disallowed character reference');
+ }
+ if (codePoint > 0xFFFF) {
+ codePoint -= 0x10000;
+ output += stringFromCharCode(codePoint >>> 10 & 0x3FF | 0xD800);
+ codePoint = 0xDC00 | codePoint & 0x3FF;
+ }
+ output += stringFromCharCode(codePoint);
+ return output;
+ };
+
+ var hexEscape = function(symbol) {
+ return '' + symbol.charCodeAt(0).toString(16).toUpperCase() + ';';
+ };
+
+ var parseError = function(message) {
+ throw Error('Parse error: ' + message);
+ };
+
+ /*--------------------------------------------------------------------------*/
+
+ var encode = function(string, options) {
+ options = merge(options, encode.options);
+ var strict = options.strict;
+ if (strict && regexInvalidRawCodePoint.test(string)) {
+ parseError('forbidden code point');
+ }
+ var encodeEverything = options.encodeEverything;
+ var useNamedReferences = options.useNamedReferences;
+ var allowUnsafeSymbols = options.allowUnsafeSymbols;
+ if (encodeEverything) {
+ // Encode ASCII symbols.
+ string = string.replace(regexAsciiWhitelist, function(symbol) {
+ // Use named references if requested & possible.
+ if (useNamedReferences && has(encodeMap, symbol)) {
+ return '&' + encodeMap[symbol] + ';';
+ }
+ return hexEscape(symbol);
+ });
+ // Shorten a few escapes that represent two symbols, of which at least one
+ // is within the ASCII range.
+ if (useNamedReferences) {
+ string = string
+ .replace(/>\u20D2/g, '>⃒')
+ .replace(/<\u20D2/g, '<⃒')
+ .replace(/fj/g, 'fj');
+ }
+ // Encode non-ASCII symbols.
+ if (useNamedReferences) {
+ // Encode non-ASCII symbols that can be replaced with a named reference.
+ string = string.replace(regexEncodeNonAscii, function(string) {
+ // Note: there is no need to check `has(encodeMap, string)` here.
+ return '&' + encodeMap[string] + ';';
+ });
+ }
+ // Note: any remaining non-ASCII symbols are handled outside of the `if`.
+ } else if (useNamedReferences) {
+ // Apply named character references.
+ // Encode `<>"'&` using named character references.
+ if (!allowUnsafeSymbols) {
+ string = string.replace(regexEscape, function(string) {
+ return '&' + encodeMap[string] + ';'; // no need to check `has()` here
+ });
+ }
+ // Shorten escapes that represent two symbols, of which at least one is
+ // `<>"'&`.
+ string = string
+ .replace(/>\u20D2/g, '>⃒')
+ .replace(/<\u20D2/g, '<⃒');
+ // Encode non-ASCII symbols that can be replaced with a named reference.
+ string = string.replace(regexEncodeNonAscii, function(string) {
+ // Note: there is no need to check `has(encodeMap, string)` here.
+ return '&' + encodeMap[string] + ';';
+ });
+ } else if (!allowUnsafeSymbols) {
+ // Encode `<>"'&` using hexadecimal escapes, now that theyâre not handled
+ // using named character references.
+ string = string.replace(regexEscape, hexEscape);
+ }
+ return string
+ // Encode astral symbols.
+ .replace(regexAstralSymbols, function($0) {
+ // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
+ var high = $0.charCodeAt(0);
+ var low = $0.charCodeAt(1);
+ var codePoint = (high - 0xD800) * 0x400 + low - 0xDC00 + 0x10000;
+ return '' + codePoint.toString(16).toUpperCase() + ';';
+ })
+ // Encode any remaining BMP symbols that are not printable ASCII symbols
+ // using a hexadecimal escape.
+ .replace(regexBmpWhitelist, hexEscape);
+ };
+ // Expose default options (so they can be overridden globally).
+ encode.options = {
+ 'allowUnsafeSymbols': false,
+ 'encodeEverything': false,
+ 'strict': false,
+ 'useNamedReferences': false
+ };
+
+ var decode = function(html, options) {
+ options = merge(options, decode.options);
+ var strict = options.strict;
+ if (strict && regexInvalidEntity.test(html)) {
+ parseError('malformed character reference');
+ }
+ return html.replace(regexDecode, function($0, $1, $2, $3, $4, $5, $6, $7) {
+ var codePoint;
+ var semicolon;
+ var hexDigits;
+ var reference;
+ var next;
+ if ($1) {
+ // Decode decimal escapes, e.g. `𝌆`.
+ codePoint = $1;
+ semicolon = $2;
+ if (strict && !semicolon) {
+ parseError('character reference was not terminated by a semicolon');
+ }
+ return codePointToSymbol(codePoint, strict);
+ }
+ if ($3) {
+ // Decode hexadecimal escapes, e.g. `𝌆`.
+ hexDigits = $3;
+ semicolon = $4;
+ if (strict && !semicolon) {
+ parseError('character reference was not terminated by a semicolon');
+ }
+ codePoint = parseInt(hexDigits, 16);
+ return codePointToSymbol(codePoint, strict);
+ }
+ if ($5) {
+ // Decode named character references with trailing `;`, e.g. `©`.
+ reference = $5;
+ if (has(decodeMap, reference)) {
+ return decodeMap[reference];
+ } else {
+ // Ambiguous ampersand; see http://mths.be/notes/ambiguous-ampersands.
+ if (strict) {
+ parseError(
+ 'named character reference was not terminated by a semicolon'
+ );
+ }
+ return $0;
+ }
+ }
+ // If weâre still here, itâs a legacy reference for sure. No need for an
+ // extra `if` check.
+ // Decode named character references without trailing `;`, e.g. `&`
+ // This is only a parse error if it gets converted to `&`, or if it is
+ // followed by `=` in an attribute context.
+ reference = $6;
+ next = $7;
+ if (next && options.isAttributeValue) {
+ if (strict && next == '=') {
+ parseError('`&` did not start a character reference');
+ }
+ return $0;
+ } else {
+ if (strict) {
+ parseError(
+ 'named character reference was not terminated by a semicolon'
+ );
+ }
+ // Note: there is no need to check `has(decodeMapLegacy, reference)`.
+ return decodeMapLegacy[reference] + (next || '');
+ }
+ });
+ };
+ // Expose default options (so they can be overridden globally).
+ decode.options = {
+ 'isAttributeValue': false,
+ 'strict': false
+ };
+
+ var escape = function(string) {
+ return string.replace(regexEscape, function($0) {
+ // Note: there is no need to check `has(escapeMap, $0)` here.
+ return escapeMap[$0];
+ });
+ };
+
+ /*--------------------------------------------------------------------------*/
+
+ var he = {
+ 'version': '0.5.0',
+ 'encode': encode,
+ 'decode': decode,
+ 'escape': escape,
+ 'unescape': decode
+ };
+
+ // Some AMD build optimizers, like r.js, check for specific condition patterns
+ // like the following:
+ if (
+ typeof define == 'function' &&
+ typeof define.amd == 'object' &&
+ define.amd
+ ) {
+ define(function() {
+ return he;
+ });
+ } else if (freeExports && !freeExports.nodeType) {
+ if (freeModule) { // in Node.js or RingoJS v0.8.0+
+ freeModule.exports = he;
+ } else { // in Narwhal or RingoJS v0.7.0-
+ for (var key in he) {
+ has(he, key) && (freeExports[key] = he[key]);
+ }
+ }
+ } else { // in Rhino or a web browser
+ root.he = he;
+ }
+
+}(this));
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/he/man/he.1 b/node_modules/http-server/node_modules/ecstatic/node_modules/he/man/he.1
new file mode 100644
index 00000000..3a7e5041
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/he/man/he.1
@@ -0,0 +1,78 @@
+.Dd July 27, 2013
+.Dt he 1
+.Sh NAME
+.Nm he
+.Nd encode/decode HTML entities just like a browser would
+.Sh SYNOPSIS
+.Nm
+.Op Fl -escape Ar string
+.br
+.Op Fl -encode Ar string
+.br
+.Op Fl -encode Fl -use-named-refs Fl -everything Fl -allow-unsafe Ar string
+.br
+.Op Fl -decode Ar string
+.br
+.Op Fl -decode Fl -attribute Ar string
+.br
+.Op Fl -decode Fl -strict Ar string
+.br
+.Op Fl v | -version
+.br
+.Op Fl h | -help
+.Sh DESCRIPTION
+.Nm
+encodes/decodes HTML entities in strings just like a browser would.
+.Sh OPTIONS
+.Bl -ohang -offset
+.It Sy "--escape"
+Take a string of text and escape it for use in text contexts in XML or HTML documents. Only the following characters are escaped: `&`, `<`, `>`, `"`, and `'`.
+.It Sy "--encode"
+Take a string of text and encode any symbols that aren't printable ASCII symbols and that can be replaced with character references. For example, it would turn `©` into `©`, but it wouldn't turn `+` into `+` since there is no point in doing so. Additionally, it replaces any remaining non-ASCII symbols with a hexadecimal escape sequence (e.g. `𝌆`). The return value of this function is always valid HTML.
+.It Sy "--encode --use-named-refs"
+Enable the use of named character references (like `©`) in the output. If compatibility with older browsers is a concern, don't use this option.
+.It Sy "--encode --everything"
+Encode every symbol in the input string, even safe printable ASCII symbols.
+.It Sy "--encode --allow-unsafe"
+Encode non-ASCII characters only. This leaves unsafe HTML/XML symbols like `&`, `<`, `>`, `"`, and `'` intact.
+.It Sy "--decode"
+Takes a string of HTML and decode any named and numerical character references in it using the algorithm described in the HTML spec.
+.It Sy "--decode --attribute"
+Parse the input as if it was an HTML attribute value rather than a string in an HTML text content.
+.It Sy "--decode --strict"
+Throw an error if an invalid character reference is encountered.
+.It Sy "-v, --version"
+Print he's version.
+.It Sy "-h, --help"
+Show the help screen.
+.El
+.Sh EXIT STATUS
+The
+.Nm he
+utility exits with one of the following values:
+.Pp
+.Bl -tag -width flag -compact
+.It Li 0
+.Nm
+successfully encoded/decoded the input and printed the result.
+.It Li 1
+.Nm
+wasn't instructed to encode/decode anything (for example, the
+.Ar --help
+flag was set); or, an error occurred.
+.El
+.Sh EXAMPLES
+.Bl -ohang -offset
+.It Sy "he --escape ''"
+Print an escaped version of the given string that is safe for use in HTML text contexts, escaping only `&`, `<`, `>`, `"`, and `'`.
+.It Sy "he --decode '©𝌆'"
+Print the decoded version of the given HTML string.
+.It Sy "echo\ '©𝌆'\ |\ he --decode"
+Print the decoded version of the HTML string that gets piped in.
+.El
+.Sh BUGS
+he's bug tracker is located at .
+.Sh AUTHOR
+Mathias Bynens
+.Sh WWW
+
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/he/package.json b/node_modules/http-server/node_modules/ecstatic/node_modules/he/package.json
new file mode 100644
index 00000000..bf33b4a8
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/he/package.json
@@ -0,0 +1,82 @@
+{
+ "name": "he",
+ "version": "0.5.0",
+ "description": "A robust HTML entities encoder/decoder with full Unicode support.",
+ "homepage": "http://mths.be/he",
+ "main": "he.js",
+ "bin": {
+ "he": "bin/he"
+ },
+ "keywords": [
+ "string",
+ "entities",
+ "entity",
+ "html",
+ "encode",
+ "decode",
+ "unicode"
+ ],
+ "license": "MIT",
+ "author": {
+ "name": "Mathias Bynens",
+ "url": "https://mathiasbynens.be/"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/mathiasbynens/he.git"
+ },
+ "bugs": {
+ "url": "https://github.com/mathiasbynens/he/issues"
+ },
+ "files": [
+ "LICENSE-MIT.txt",
+ "he.js",
+ "bin/",
+ "man/"
+ ],
+ "directories": {
+ "bin": "bin",
+ "man": "man",
+ "test": "tests"
+ },
+ "scripts": {
+ "test": "node tests/tests.js"
+ },
+ "devDependencies": {
+ "coveralls": "^2.11.1",
+ "grunt": "^0.4.5",
+ "grunt-shell": "^1.0.1",
+ "grunt-template": "^0.2.3",
+ "istanbul": "^0.3.0",
+ "jsesc": "^0.5.0",
+ "lodash": "^2.4.1",
+ "qunit-extras": "^1.1.0",
+ "qunitjs": "~1.11.0",
+ "regenerate": "^0.6.2",
+ "requirejs": "^2.1.14",
+ "string.fromcodepoint": "^0.2.1"
+ },
+ "man": [
+ "/Users/mathias/.npm/he/0.5.0/package/man/he.1"
+ ],
+ "_id": "he@0.5.0",
+ "_shasum": "2c05ffaef90b68e860f3fd2b54ef580989277ee2",
+ "_from": "he@>=0.5.0 <0.6.0",
+ "_npmVersion": "1.4.9",
+ "_npmUser": {
+ "name": "mathias",
+ "email": "mathias@qiwi.be"
+ },
+ "maintainers": [
+ {
+ "name": "mathias",
+ "email": "mathias@qiwi.be"
+ }
+ ],
+ "dist": {
+ "shasum": "2c05ffaef90b68e860f3fd2b54ef580989277ee2",
+ "tarball": "https://registry.npmjs.org/he/-/he-0.5.0.tgz"
+ },
+ "_resolved": "https://registry.npmjs.org/he/-/he-0.5.0.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/mime/LICENSE b/node_modules/http-server/node_modules/ecstatic/node_modules/mime/LICENSE
new file mode 100644
index 00000000..d3f46f7e
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/mime/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2010 Benjamin Thomas, Robert Kieffer
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/mime/README.md b/node_modules/http-server/node_modules/ecstatic/node_modules/mime/README.md
new file mode 100644
index 00000000..506fbe55
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/mime/README.md
@@ -0,0 +1,90 @@
+# mime
+
+Comprehensive MIME type mapping API based on mime-db module.
+
+## Install
+
+Install with [npm](http://github.com/isaacs/npm):
+
+ npm install mime
+
+## Contributing / Testing
+
+ npm run test
+
+## Command Line
+
+ mime [path_string]
+
+E.g.
+
+ > mime scripts/jquery.js
+ application/javascript
+
+## API - Queries
+
+### mime.lookup(path)
+Get the mime type associated with a file, if no mime type is found `application/octet-stream` is returned. Performs a case-insensitive lookup using the extension in `path` (the substring after the last '/' or '.'). E.g.
+
+```js
+var mime = require('mime');
+
+mime.lookup('/path/to/file.txt'); // => 'text/plain'
+mime.lookup('file.txt'); // => 'text/plain'
+mime.lookup('.TXT'); // => 'text/plain'
+mime.lookup('htm'); // => 'text/html'
+```
+
+### mime.default_type
+Sets the mime type returned when `mime.lookup` fails to find the extension searched for. (Default is `application/octet-stream`.)
+
+### mime.extension(type)
+Get the default extension for `type`
+
+```js
+mime.extension('text/html'); // => 'html'
+mime.extension('application/octet-stream'); // => 'bin'
+```
+
+### mime.charsets.lookup()
+
+Map mime-type to charset
+
+```js
+mime.charsets.lookup('text/plain'); // => 'UTF-8'
+```
+
+(The logic for charset lookups is pretty rudimentary. Feel free to suggest improvements.)
+
+## API - Defining Custom Types
+
+Custom type mappings can be added on a per-project basis via the following APIs.
+
+### mime.define()
+
+Add custom mime/extension mappings
+
+```js
+mime.define({
+ 'text/x-some-format': ['x-sf', 'x-sft', 'x-sfml'],
+ 'application/x-my-type': ['x-mt', 'x-mtt'],
+ // etc ...
+});
+
+mime.lookup('x-sft'); // => 'text/x-some-format'
+```
+
+The first entry in the extensions array is returned by `mime.extension()`. E.g.
+
+```js
+mime.extension('text/x-some-format'); // => 'x-sf'
+```
+
+### mime.load(filepath)
+
+Load mappings from an Apache ".types" format file
+
+```js
+mime.load('./my_project.types');
+```
+The .types file format is simple - See the `types` dir for examples.
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/mime/build/build.js b/node_modules/http-server/node_modules/ecstatic/node_modules/mime/build/build.js
new file mode 100644
index 00000000..ed5313e3
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/mime/build/build.js
@@ -0,0 +1,11 @@
+var db = require('mime-db');
+
+var mapByType = {};
+Object.keys(db).forEach(function(key) {
+ var extensions = db[key].extensions;
+ if (extensions) {
+ mapByType[key] = extensions;
+ }
+});
+
+console.log(JSON.stringify(mapByType));
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/mime/build/test.js b/node_modules/http-server/node_modules/ecstatic/node_modules/mime/build/test.js
new file mode 100644
index 00000000..010c42b9
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/mime/build/test.js
@@ -0,0 +1,60 @@
+/**
+ * Usage: node test.js
+ */
+
+var mime = require('../mime');
+var assert = require('assert');
+var path = require('path');
+
+//
+// Test mime lookups
+//
+
+assert.equal('text/plain', mime.lookup('text.txt')); // normal file
+assert.equal('text/plain', mime.lookup('TEXT.TXT')); // uppercase
+assert.equal('text/plain', mime.lookup('dir/text.txt')); // dir + file
+assert.equal('text/plain', mime.lookup('.text.txt')); // hidden file
+assert.equal('text/plain', mime.lookup('.txt')); // nameless
+assert.equal('text/plain', mime.lookup('txt')); // extension-only
+assert.equal('text/plain', mime.lookup('/txt')); // extension-less ()
+assert.equal('text/plain', mime.lookup('\\txt')); // Windows, extension-less
+assert.equal('application/octet-stream', mime.lookup('text.nope')); // unrecognized
+assert.equal('fallback', mime.lookup('text.fallback', 'fallback')); // alternate default
+
+//
+// Test extensions
+//
+
+assert.equal('txt', mime.extension(mime.types.text));
+assert.equal('html', mime.extension(mime.types.htm));
+assert.equal('bin', mime.extension('application/octet-stream'));
+assert.equal('bin', mime.extension('application/octet-stream '));
+assert.equal('html', mime.extension(' text/html; charset=UTF-8'));
+assert.equal('html', mime.extension('text/html; charset=UTF-8 '));
+assert.equal('html', mime.extension('text/html; charset=UTF-8'));
+assert.equal('html', mime.extension('text/html ; charset=UTF-8'));
+assert.equal('html', mime.extension('text/html;charset=UTF-8'));
+assert.equal('html', mime.extension('text/Html;charset=UTF-8'));
+assert.equal(undefined, mime.extension('unrecognized'));
+
+//
+// Test node.types lookups
+//
+
+assert.equal('application/font-woff', mime.lookup('file.woff'));
+assert.equal('application/octet-stream', mime.lookup('file.buffer'));
+// TODO: Uncomment once #157 is resolved
+// assert.equal('audio/mp4', mime.lookup('file.m4a'));
+assert.equal('font/otf', mime.lookup('file.otf'));
+
+//
+// Test charsets
+//
+
+assert.equal('UTF-8', mime.charsets.lookup('text/plain'));
+assert.equal('UTF-8', mime.charsets.lookup(mime.types.js));
+assert.equal('UTF-8', mime.charsets.lookup(mime.types.json));
+assert.equal(undefined, mime.charsets.lookup(mime.types.bin));
+assert.equal('fallback', mime.charsets.lookup('application/octet-stream', 'fallback'));
+
+console.log('\nAll tests passed');
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/mime/cli.js b/node_modules/http-server/node_modules/ecstatic/node_modules/mime/cli.js
new file mode 100644
index 00000000..20b1ffeb
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/mime/cli.js
@@ -0,0 +1,8 @@
+#!/usr/bin/env node
+
+var mime = require('./mime.js');
+var file = process.argv[2];
+var type = mime.lookup(file);
+
+process.stdout.write(type + '\n');
+
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/mime/mime.js b/node_modules/http-server/node_modules/ecstatic/node_modules/mime/mime.js
new file mode 100644
index 00000000..d7efbde7
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/mime/mime.js
@@ -0,0 +1,108 @@
+var path = require('path');
+var fs = require('fs');
+
+function Mime() {
+ // Map of extension -> mime type
+ this.types = Object.create(null);
+
+ // Map of mime type -> extension
+ this.extensions = Object.create(null);
+}
+
+/**
+ * Define mimetype -> extension mappings. Each key is a mime-type that maps
+ * to an array of extensions associated with the type. The first extension is
+ * used as the default extension for the type.
+ *
+ * e.g. mime.define({'audio/ogg', ['oga', 'ogg', 'spx']});
+ *
+ * @param map (Object) type definitions
+ */
+Mime.prototype.define = function (map) {
+ for (var type in map) {
+ var exts = map[type];
+ for (var i = 0; i < exts.length; i++) {
+ if (process.env.DEBUG_MIME && this.types[exts[i]]) {
+ console.warn((this._loading || "define()").replace(/.*\//, ''), 'changes "' + exts[i] + '" extension type from ' +
+ this.types[exts[i]] + ' to ' + type);
+ }
+
+ this.types[exts[i]] = type;
+ }
+
+ // Default extension is the first one we encounter
+ if (!this.extensions[type]) {
+ this.extensions[type] = exts[0];
+ }
+ }
+};
+
+/**
+ * Load an Apache2-style ".types" file
+ *
+ * This may be called multiple times (it's expected). Where files declare
+ * overlapping types/extensions, the last file wins.
+ *
+ * @param file (String) path of file to load.
+ */
+Mime.prototype.load = function(file) {
+ this._loading = file;
+ // Read file and split into lines
+ var map = {},
+ content = fs.readFileSync(file, 'ascii'),
+ lines = content.split(/[\r\n]+/);
+
+ lines.forEach(function(line) {
+ // Clean up whitespace/comments, and split into fields
+ var fields = line.replace(/\s*#.*|^\s*|\s*$/g, '').split(/\s+/);
+ map[fields.shift()] = fields;
+ });
+
+ this.define(map);
+
+ this._loading = null;
+};
+
+/**
+ * Lookup a mime type based on extension
+ */
+Mime.prototype.lookup = function(path, fallback) {
+ var ext = path.replace(/^.*[\.\/\\]/, '').toLowerCase();
+
+ return this.types[ext] || fallback || this.default_type;
+};
+
+/**
+ * Return file extension associated with a mime type
+ */
+Mime.prototype.extension = function(mimeType) {
+ var type = mimeType.match(/^\s*([^;\s]*)(?:;|\s|$)/)[1].toLowerCase();
+ return this.extensions[type];
+};
+
+// Default instance
+var mime = new Mime();
+
+// Define built-in types
+mime.define(require('./types.json'));
+
+// Default type
+mime.default_type = mime.lookup('bin');
+
+//
+// Additional API specific to the default instance
+//
+
+mime.Mime = Mime;
+
+/**
+ * Lookup a charset based on mime type.
+ */
+mime.charsets = {
+ lookup: function(mimeType, fallback) {
+ // Assume text types are utf8
+ return (/^text\/|^application\/(javascript|json)/).test(mimeType) ? 'UTF-8' : fallback;
+ }
+};
+
+module.exports = mime;
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/mime/package.json b/node_modules/http-server/node_modules/ecstatic/node_modules/mime/package.json
new file mode 100644
index 00000000..0db36373
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/mime/package.json
@@ -0,0 +1,74 @@
+{
+ "author": {
+ "name": "Robert Kieffer",
+ "email": "robert@broofa.com",
+ "url": "http://github.com/broofa"
+ },
+ "bin": {
+ "mime": "cli.js"
+ },
+ "contributors": [
+ {
+ "name": "Benjamin Thomas",
+ "email": "benjamin@benjaminthomas.org",
+ "url": "http://github.com/bentomas"
+ }
+ ],
+ "description": "A comprehensive library for mime-type mapping",
+ "license": "MIT",
+ "dependencies": {},
+ "devDependencies": {
+ "mime-db": "1.30.0"
+ },
+ "scripts": {
+ "prepublish": "node build/build.js > types.json",
+ "test": "node build/test.js"
+ },
+ "keywords": [
+ "util",
+ "mime"
+ ],
+ "main": "mime.js",
+ "name": "mime",
+ "repository": {
+ "url": "git+https://github.com/broofa/node-mime.git",
+ "type": "git"
+ },
+ "version": "1.4.1",
+ "gitHead": "eb24bae372a76acd2c95fd05f8837814c33a9e3d",
+ "bugs": {
+ "url": "https://github.com/broofa/node-mime/issues"
+ },
+ "homepage": "https://github.com/broofa/node-mime#readme",
+ "_id": "mime@1.4.1",
+ "_npmVersion": "5.4.2",
+ "_nodeVersion": "7.10.0",
+ "_npmUser": {
+ "name": "broofa",
+ "email": "robert@broofa.com"
+ },
+ "maintainers": [
+ {
+ "name": "broofa",
+ "email": "robert@broofa.com"
+ },
+ {
+ "name": "bentomas",
+ "email": "benjamin@benjaminthomas.org"
+ }
+ ],
+ "dist": {
+ "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
+ "shasum": "121f9ebc49e3766f311a76e1fa1c8003c4b03aa6",
+ "tarball": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz"
+ },
+ "_npmOperationalInternal": {
+ "host": "s3://npm-registry-packages",
+ "tmp": "tmp/mime-1.4.1.tgz_1506364709246_0.33135218149982393"
+ },
+ "directories": {},
+ "_shasum": "121f9ebc49e3766f311a76e1fa1c8003c4b03aa6",
+ "_resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
+ "_from": "mime@>=1.2.11 <2.0.0",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/mime/types.json b/node_modules/http-server/node_modules/ecstatic/node_modules/mime/types.json
new file mode 100644
index 00000000..5369cd1c
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/mime/types.json
@@ -0,0 +1 @@
+{"application/andrew-inset":["ez"],"application/applixware":["aw"],"application/atom+xml":["atom"],"application/atomcat+xml":["atomcat"],"application/atomsvc+xml":["atomsvc"],"application/bdoc":["bdoc"],"application/ccxml+xml":["ccxml"],"application/cdmi-capability":["cdmia"],"application/cdmi-container":["cdmic"],"application/cdmi-domain":["cdmid"],"application/cdmi-object":["cdmio"],"application/cdmi-queue":["cdmiq"],"application/cu-seeme":["cu"],"application/dash+xml":["mpd"],"application/davmount+xml":["davmount"],"application/docbook+xml":["dbk"],"application/dssc+der":["dssc"],"application/dssc+xml":["xdssc"],"application/ecmascript":["ecma"],"application/emma+xml":["emma"],"application/epub+zip":["epub"],"application/exi":["exi"],"application/font-tdpfr":["pfr"],"application/font-woff":["woff"],"application/font-woff2":["woff2"],"application/geo+json":["geojson"],"application/gml+xml":["gml"],"application/gpx+xml":["gpx"],"application/gxf":["gxf"],"application/gzip":["gz"],"application/hyperstudio":["stk"],"application/inkml+xml":["ink","inkml"],"application/ipfix":["ipfix"],"application/java-archive":["jar","war","ear"],"application/java-serialized-object":["ser"],"application/java-vm":["class"],"application/javascript":["js","mjs"],"application/json":["json","map"],"application/json5":["json5"],"application/jsonml+json":["jsonml"],"application/ld+json":["jsonld"],"application/lost+xml":["lostxml"],"application/mac-binhex40":["hqx"],"application/mac-compactpro":["cpt"],"application/mads+xml":["mads"],"application/manifest+json":["webmanifest"],"application/marc":["mrc"],"application/marcxml+xml":["mrcx"],"application/mathematica":["ma","nb","mb"],"application/mathml+xml":["mathml"],"application/mbox":["mbox"],"application/mediaservercontrol+xml":["mscml"],"application/metalink+xml":["metalink"],"application/metalink4+xml":["meta4"],"application/mets+xml":["mets"],"application/mods+xml":["mods"],"application/mp21":["m21","mp21"],"application/mp4":["mp4s","m4p"],"application/msword":["doc","dot"],"application/mxf":["mxf"],"application/octet-stream":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"],"application/oda":["oda"],"application/oebps-package+xml":["opf"],"application/ogg":["ogx"],"application/omdoc+xml":["omdoc"],"application/onenote":["onetoc","onetoc2","onetmp","onepkg"],"application/oxps":["oxps"],"application/patch-ops-error+xml":["xer"],"application/pdf":["pdf"],"application/pgp-encrypted":["pgp"],"application/pgp-signature":["asc","sig"],"application/pics-rules":["prf"],"application/pkcs10":["p10"],"application/pkcs7-mime":["p7m","p7c"],"application/pkcs7-signature":["p7s"],"application/pkcs8":["p8"],"application/pkix-attr-cert":["ac"],"application/pkix-cert":["cer"],"application/pkix-crl":["crl"],"application/pkix-pkipath":["pkipath"],"application/pkixcmp":["pki"],"application/pls+xml":["pls"],"application/postscript":["ai","eps","ps"],"application/prs.cww":["cww"],"application/pskc+xml":["pskcxml"],"application/rdf+xml":["rdf"],"application/reginfo+xml":["rif"],"application/relax-ng-compact-syntax":["rnc"],"application/resource-lists+xml":["rl"],"application/resource-lists-diff+xml":["rld"],"application/rls-services+xml":["rs"],"application/rpki-ghostbusters":["gbr"],"application/rpki-manifest":["mft"],"application/rpki-roa":["roa"],"application/rsd+xml":["rsd"],"application/rss+xml":["rss"],"application/rtf":["rtf"],"application/sbml+xml":["sbml"],"application/scvp-cv-request":["scq"],"application/scvp-cv-response":["scs"],"application/scvp-vp-request":["spq"],"application/scvp-vp-response":["spp"],"application/sdp":["sdp"],"application/set-payment-initiation":["setpay"],"application/set-registration-initiation":["setreg"],"application/shf+xml":["shf"],"application/smil+xml":["smi","smil"],"application/sparql-query":["rq"],"application/sparql-results+xml":["srx"],"application/srgs":["gram"],"application/srgs+xml":["grxml"],"application/sru+xml":["sru"],"application/ssdl+xml":["ssdl"],"application/ssml+xml":["ssml"],"application/tei+xml":["tei","teicorpus"],"application/thraud+xml":["tfi"],"application/timestamped-data":["tsd"],"application/vnd.3gpp.pic-bw-large":["plb"],"application/vnd.3gpp.pic-bw-small":["psb"],"application/vnd.3gpp.pic-bw-var":["pvb"],"application/vnd.3gpp2.tcap":["tcap"],"application/vnd.3m.post-it-notes":["pwn"],"application/vnd.accpac.simply.aso":["aso"],"application/vnd.accpac.simply.imp":["imp"],"application/vnd.acucobol":["acu"],"application/vnd.acucorp":["atc","acutc"],"application/vnd.adobe.air-application-installer-package+zip":["air"],"application/vnd.adobe.formscentral.fcdt":["fcdt"],"application/vnd.adobe.fxp":["fxp","fxpl"],"application/vnd.adobe.xdp+xml":["xdp"],"application/vnd.adobe.xfdf":["xfdf"],"application/vnd.ahead.space":["ahead"],"application/vnd.airzip.filesecure.azf":["azf"],"application/vnd.airzip.filesecure.azs":["azs"],"application/vnd.amazon.ebook":["azw"],"application/vnd.americandynamics.acc":["acc"],"application/vnd.amiga.ami":["ami"],"application/vnd.android.package-archive":["apk"],"application/vnd.anser-web-certificate-issue-initiation":["cii"],"application/vnd.anser-web-funds-transfer-initiation":["fti"],"application/vnd.antix.game-component":["atx"],"application/vnd.apple.installer+xml":["mpkg"],"application/vnd.apple.mpegurl":["m3u8"],"application/vnd.apple.pkpass":["pkpass"],"application/vnd.aristanetworks.swi":["swi"],"application/vnd.astraea-software.iota":["iota"],"application/vnd.audiograph":["aep"],"application/vnd.blueice.multipass":["mpm"],"application/vnd.bmi":["bmi"],"application/vnd.businessobjects":["rep"],"application/vnd.chemdraw+xml":["cdxml"],"application/vnd.chipnuts.karaoke-mmd":["mmd"],"application/vnd.cinderella":["cdy"],"application/vnd.claymore":["cla"],"application/vnd.cloanto.rp9":["rp9"],"application/vnd.clonk.c4group":["c4g","c4d","c4f","c4p","c4u"],"application/vnd.cluetrust.cartomobile-config":["c11amc"],"application/vnd.cluetrust.cartomobile-config-pkg":["c11amz"],"application/vnd.commonspace":["csp"],"application/vnd.contact.cmsg":["cdbcmsg"],"application/vnd.cosmocaller":["cmc"],"application/vnd.crick.clicker":["clkx"],"application/vnd.crick.clicker.keyboard":["clkk"],"application/vnd.crick.clicker.palette":["clkp"],"application/vnd.crick.clicker.template":["clkt"],"application/vnd.crick.clicker.wordbank":["clkw"],"application/vnd.criticaltools.wbs+xml":["wbs"],"application/vnd.ctc-posml":["pml"],"application/vnd.cups-ppd":["ppd"],"application/vnd.curl.car":["car"],"application/vnd.curl.pcurl":["pcurl"],"application/vnd.dart":["dart"],"application/vnd.data-vision.rdz":["rdz"],"application/vnd.dece.data":["uvf","uvvf","uvd","uvvd"],"application/vnd.dece.ttml+xml":["uvt","uvvt"],"application/vnd.dece.unspecified":["uvx","uvvx"],"application/vnd.dece.zip":["uvz","uvvz"],"application/vnd.denovo.fcselayout-link":["fe_launch"],"application/vnd.dna":["dna"],"application/vnd.dolby.mlp":["mlp"],"application/vnd.dpgraph":["dpg"],"application/vnd.dreamfactory":["dfac"],"application/vnd.ds-keypoint":["kpxx"],"application/vnd.dvb.ait":["ait"],"application/vnd.dvb.service":["svc"],"application/vnd.dynageo":["geo"],"application/vnd.ecowin.chart":["mag"],"application/vnd.enliven":["nml"],"application/vnd.epson.esf":["esf"],"application/vnd.epson.msf":["msf"],"application/vnd.epson.quickanime":["qam"],"application/vnd.epson.salt":["slt"],"application/vnd.epson.ssf":["ssf"],"application/vnd.eszigno3+xml":["es3","et3"],"application/vnd.ezpix-album":["ez2"],"application/vnd.ezpix-package":["ez3"],"application/vnd.fdf":["fdf"],"application/vnd.fdsn.mseed":["mseed"],"application/vnd.fdsn.seed":["seed","dataless"],"application/vnd.flographit":["gph"],"application/vnd.fluxtime.clip":["ftc"],"application/vnd.framemaker":["fm","frame","maker","book"],"application/vnd.frogans.fnc":["fnc"],"application/vnd.frogans.ltf":["ltf"],"application/vnd.fsc.weblaunch":["fsc"],"application/vnd.fujitsu.oasys":["oas"],"application/vnd.fujitsu.oasys2":["oa2"],"application/vnd.fujitsu.oasys3":["oa3"],"application/vnd.fujitsu.oasysgp":["fg5"],"application/vnd.fujitsu.oasysprs":["bh2"],"application/vnd.fujixerox.ddd":["ddd"],"application/vnd.fujixerox.docuworks":["xdw"],"application/vnd.fujixerox.docuworks.binder":["xbd"],"application/vnd.fuzzysheet":["fzs"],"application/vnd.genomatix.tuxedo":["txd"],"application/vnd.geogebra.file":["ggb"],"application/vnd.geogebra.tool":["ggt"],"application/vnd.geometry-explorer":["gex","gre"],"application/vnd.geonext":["gxt"],"application/vnd.geoplan":["g2w"],"application/vnd.geospace":["g3w"],"application/vnd.gmx":["gmx"],"application/vnd.google-apps.document":["gdoc"],"application/vnd.google-apps.presentation":["gslides"],"application/vnd.google-apps.spreadsheet":["gsheet"],"application/vnd.google-earth.kml+xml":["kml"],"application/vnd.google-earth.kmz":["kmz"],"application/vnd.grafeq":["gqf","gqs"],"application/vnd.groove-account":["gac"],"application/vnd.groove-help":["ghf"],"application/vnd.groove-identity-message":["gim"],"application/vnd.groove-injector":["grv"],"application/vnd.groove-tool-message":["gtm"],"application/vnd.groove-tool-template":["tpl"],"application/vnd.groove-vcard":["vcg"],"application/vnd.hal+xml":["hal"],"application/vnd.handheld-entertainment+xml":["zmm"],"application/vnd.hbci":["hbci"],"application/vnd.hhe.lesson-player":["les"],"application/vnd.hp-hpgl":["hpgl"],"application/vnd.hp-hpid":["hpid"],"application/vnd.hp-hps":["hps"],"application/vnd.hp-jlyt":["jlt"],"application/vnd.hp-pcl":["pcl"],"application/vnd.hp-pclxl":["pclxl"],"application/vnd.hydrostatix.sof-data":["sfd-hdstx"],"application/vnd.ibm.minipay":["mpy"],"application/vnd.ibm.modcap":["afp","listafp","list3820"],"application/vnd.ibm.rights-management":["irm"],"application/vnd.ibm.secure-container":["sc"],"application/vnd.iccprofile":["icc","icm"],"application/vnd.igloader":["igl"],"application/vnd.immervision-ivp":["ivp"],"application/vnd.immervision-ivu":["ivu"],"application/vnd.insors.igm":["igm"],"application/vnd.intercon.formnet":["xpw","xpx"],"application/vnd.intergeo":["i2g"],"application/vnd.intu.qbo":["qbo"],"application/vnd.intu.qfx":["qfx"],"application/vnd.ipunplugged.rcprofile":["rcprofile"],"application/vnd.irepository.package+xml":["irp"],"application/vnd.is-xpr":["xpr"],"application/vnd.isac.fcs":["fcs"],"application/vnd.jam":["jam"],"application/vnd.jcp.javame.midlet-rms":["rms"],"application/vnd.jisp":["jisp"],"application/vnd.joost.joda-archive":["joda"],"application/vnd.kahootz":["ktz","ktr"],"application/vnd.kde.karbon":["karbon"],"application/vnd.kde.kchart":["chrt"],"application/vnd.kde.kformula":["kfo"],"application/vnd.kde.kivio":["flw"],"application/vnd.kde.kontour":["kon"],"application/vnd.kde.kpresenter":["kpr","kpt"],"application/vnd.kde.kspread":["ksp"],"application/vnd.kde.kword":["kwd","kwt"],"application/vnd.kenameaapp":["htke"],"application/vnd.kidspiration":["kia"],"application/vnd.kinar":["kne","knp"],"application/vnd.koan":["skp","skd","skt","skm"],"application/vnd.kodak-descriptor":["sse"],"application/vnd.las.las+xml":["lasxml"],"application/vnd.llamagraphics.life-balance.desktop":["lbd"],"application/vnd.llamagraphics.life-balance.exchange+xml":["lbe"],"application/vnd.lotus-1-2-3":["123"],"application/vnd.lotus-approach":["apr"],"application/vnd.lotus-freelance":["pre"],"application/vnd.lotus-notes":["nsf"],"application/vnd.lotus-organizer":["org"],"application/vnd.lotus-screencam":["scm"],"application/vnd.lotus-wordpro":["lwp"],"application/vnd.macports.portpkg":["portpkg"],"application/vnd.mcd":["mcd"],"application/vnd.medcalcdata":["mc1"],"application/vnd.mediastation.cdkey":["cdkey"],"application/vnd.mfer":["mwf"],"application/vnd.mfmp":["mfm"],"application/vnd.micrografx.flo":["flo"],"application/vnd.micrografx.igx":["igx"],"application/vnd.mif":["mif"],"application/vnd.mobius.daf":["daf"],"application/vnd.mobius.dis":["dis"],"application/vnd.mobius.mbk":["mbk"],"application/vnd.mobius.mqy":["mqy"],"application/vnd.mobius.msl":["msl"],"application/vnd.mobius.plc":["plc"],"application/vnd.mobius.txf":["txf"],"application/vnd.mophun.application":["mpn"],"application/vnd.mophun.certificate":["mpc"],"application/vnd.mozilla.xul+xml":["xul"],"application/vnd.ms-artgalry":["cil"],"application/vnd.ms-cab-compressed":["cab"],"application/vnd.ms-excel":["xls","xlm","xla","xlc","xlt","xlw"],"application/vnd.ms-excel.addin.macroenabled.12":["xlam"],"application/vnd.ms-excel.sheet.binary.macroenabled.12":["xlsb"],"application/vnd.ms-excel.sheet.macroenabled.12":["xlsm"],"application/vnd.ms-excel.template.macroenabled.12":["xltm"],"application/vnd.ms-fontobject":["eot"],"application/vnd.ms-htmlhelp":["chm"],"application/vnd.ms-ims":["ims"],"application/vnd.ms-lrm":["lrm"],"application/vnd.ms-officetheme":["thmx"],"application/vnd.ms-outlook":["msg"],"application/vnd.ms-pki.seccat":["cat"],"application/vnd.ms-pki.stl":["stl"],"application/vnd.ms-powerpoint":["ppt","pps","pot"],"application/vnd.ms-powerpoint.addin.macroenabled.12":["ppam"],"application/vnd.ms-powerpoint.presentation.macroenabled.12":["pptm"],"application/vnd.ms-powerpoint.slide.macroenabled.12":["sldm"],"application/vnd.ms-powerpoint.slideshow.macroenabled.12":["ppsm"],"application/vnd.ms-powerpoint.template.macroenabled.12":["potm"],"application/vnd.ms-project":["mpp","mpt"],"application/vnd.ms-word.document.macroenabled.12":["docm"],"application/vnd.ms-word.template.macroenabled.12":["dotm"],"application/vnd.ms-works":["wps","wks","wcm","wdb"],"application/vnd.ms-wpl":["wpl"],"application/vnd.ms-xpsdocument":["xps"],"application/vnd.mseq":["mseq"],"application/vnd.musician":["mus"],"application/vnd.muvee.style":["msty"],"application/vnd.mynfc":["taglet"],"application/vnd.neurolanguage.nlu":["nlu"],"application/vnd.nitf":["ntf","nitf"],"application/vnd.noblenet-directory":["nnd"],"application/vnd.noblenet-sealer":["nns"],"application/vnd.noblenet-web":["nnw"],"application/vnd.nokia.n-gage.data":["ngdat"],"application/vnd.nokia.n-gage.symbian.install":["n-gage"],"application/vnd.nokia.radio-preset":["rpst"],"application/vnd.nokia.radio-presets":["rpss"],"application/vnd.novadigm.edm":["edm"],"application/vnd.novadigm.edx":["edx"],"application/vnd.novadigm.ext":["ext"],"application/vnd.oasis.opendocument.chart":["odc"],"application/vnd.oasis.opendocument.chart-template":["otc"],"application/vnd.oasis.opendocument.database":["odb"],"application/vnd.oasis.opendocument.formula":["odf"],"application/vnd.oasis.opendocument.formula-template":["odft"],"application/vnd.oasis.opendocument.graphics":["odg"],"application/vnd.oasis.opendocument.graphics-template":["otg"],"application/vnd.oasis.opendocument.image":["odi"],"application/vnd.oasis.opendocument.image-template":["oti"],"application/vnd.oasis.opendocument.presentation":["odp"],"application/vnd.oasis.opendocument.presentation-template":["otp"],"application/vnd.oasis.opendocument.spreadsheet":["ods"],"application/vnd.oasis.opendocument.spreadsheet-template":["ots"],"application/vnd.oasis.opendocument.text":["odt"],"application/vnd.oasis.opendocument.text-master":["odm"],"application/vnd.oasis.opendocument.text-template":["ott"],"application/vnd.oasis.opendocument.text-web":["oth"],"application/vnd.olpc-sugar":["xo"],"application/vnd.oma.dd2+xml":["dd2"],"application/vnd.openofficeorg.extension":["oxt"],"application/vnd.openxmlformats-officedocument.presentationml.presentation":["pptx"],"application/vnd.openxmlformats-officedocument.presentationml.slide":["sldx"],"application/vnd.openxmlformats-officedocument.presentationml.slideshow":["ppsx"],"application/vnd.openxmlformats-officedocument.presentationml.template":["potx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":["xlsx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.template":["xltx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.document":["docx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.template":["dotx"],"application/vnd.osgeo.mapguide.package":["mgp"],"application/vnd.osgi.dp":["dp"],"application/vnd.osgi.subsystem":["esa"],"application/vnd.palm":["pdb","pqa","oprc"],"application/vnd.pawaafile":["paw"],"application/vnd.pg.format":["str"],"application/vnd.pg.osasli":["ei6"],"application/vnd.picsel":["efif"],"application/vnd.pmi.widget":["wg"],"application/vnd.pocketlearn":["plf"],"application/vnd.powerbuilder6":["pbd"],"application/vnd.previewsystems.box":["box"],"application/vnd.proteus.magazine":["mgz"],"application/vnd.publishare-delta-tree":["qps"],"application/vnd.pvi.ptid1":["ptid"],"application/vnd.quark.quarkxpress":["qxd","qxt","qwd","qwt","qxl","qxb"],"application/vnd.realvnc.bed":["bed"],"application/vnd.recordare.musicxml":["mxl"],"application/vnd.recordare.musicxml+xml":["musicxml"],"application/vnd.rig.cryptonote":["cryptonote"],"application/vnd.rim.cod":["cod"],"application/vnd.rn-realmedia":["rm"],"application/vnd.rn-realmedia-vbr":["rmvb"],"application/vnd.route66.link66+xml":["link66"],"application/vnd.sailingtracker.track":["st"],"application/vnd.seemail":["see"],"application/vnd.sema":["sema"],"application/vnd.semd":["semd"],"application/vnd.semf":["semf"],"application/vnd.shana.informed.formdata":["ifm"],"application/vnd.shana.informed.formtemplate":["itp"],"application/vnd.shana.informed.interchange":["iif"],"application/vnd.shana.informed.package":["ipk"],"application/vnd.simtech-mindmapper":["twd","twds"],"application/vnd.smaf":["mmf"],"application/vnd.smart.teacher":["teacher"],"application/vnd.solent.sdkm+xml":["sdkm","sdkd"],"application/vnd.spotfire.dxp":["dxp"],"application/vnd.spotfire.sfs":["sfs"],"application/vnd.stardivision.calc":["sdc"],"application/vnd.stardivision.draw":["sda"],"application/vnd.stardivision.impress":["sdd"],"application/vnd.stardivision.math":["smf"],"application/vnd.stardivision.writer":["sdw","vor"],"application/vnd.stardivision.writer-global":["sgl"],"application/vnd.stepmania.package":["smzip"],"application/vnd.stepmania.stepchart":["sm"],"application/vnd.sun.wadl+xml":["wadl"],"application/vnd.sun.xml.calc":["sxc"],"application/vnd.sun.xml.calc.template":["stc"],"application/vnd.sun.xml.draw":["sxd"],"application/vnd.sun.xml.draw.template":["std"],"application/vnd.sun.xml.impress":["sxi"],"application/vnd.sun.xml.impress.template":["sti"],"application/vnd.sun.xml.math":["sxm"],"application/vnd.sun.xml.writer":["sxw"],"application/vnd.sun.xml.writer.global":["sxg"],"application/vnd.sun.xml.writer.template":["stw"],"application/vnd.sus-calendar":["sus","susp"],"application/vnd.svd":["svd"],"application/vnd.symbian.install":["sis","sisx"],"application/vnd.syncml+xml":["xsm"],"application/vnd.syncml.dm+wbxml":["bdm"],"application/vnd.syncml.dm+xml":["xdm"],"application/vnd.tao.intent-module-archive":["tao"],"application/vnd.tcpdump.pcap":["pcap","cap","dmp"],"application/vnd.tmobile-livetv":["tmo"],"application/vnd.trid.tpt":["tpt"],"application/vnd.triscape.mxs":["mxs"],"application/vnd.trueapp":["tra"],"application/vnd.ufdl":["ufd","ufdl"],"application/vnd.uiq.theme":["utz"],"application/vnd.umajin":["umj"],"application/vnd.unity":["unityweb"],"application/vnd.uoml+xml":["uoml"],"application/vnd.vcx":["vcx"],"application/vnd.visio":["vsd","vst","vss","vsw"],"application/vnd.visionary":["vis"],"application/vnd.vsf":["vsf"],"application/vnd.wap.wbxml":["wbxml"],"application/vnd.wap.wmlc":["wmlc"],"application/vnd.wap.wmlscriptc":["wmlsc"],"application/vnd.webturbo":["wtb"],"application/vnd.wolfram.player":["nbp"],"application/vnd.wordperfect":["wpd"],"application/vnd.wqd":["wqd"],"application/vnd.wt.stf":["stf"],"application/vnd.xara":["xar"],"application/vnd.xfdl":["xfdl"],"application/vnd.yamaha.hv-dic":["hvd"],"application/vnd.yamaha.hv-script":["hvs"],"application/vnd.yamaha.hv-voice":["hvp"],"application/vnd.yamaha.openscoreformat":["osf"],"application/vnd.yamaha.openscoreformat.osfpvg+xml":["osfpvg"],"application/vnd.yamaha.smaf-audio":["saf"],"application/vnd.yamaha.smaf-phrase":["spf"],"application/vnd.yellowriver-custom-menu":["cmp"],"application/vnd.zul":["zir","zirz"],"application/vnd.zzazz.deck+xml":["zaz"],"application/voicexml+xml":["vxml"],"application/widget":["wgt"],"application/winhlp":["hlp"],"application/wsdl+xml":["wsdl"],"application/wspolicy+xml":["wspolicy"],"application/x-7z-compressed":["7z"],"application/x-abiword":["abw"],"application/x-ace-compressed":["ace"],"application/x-apple-diskimage":["dmg"],"application/x-arj":["arj"],"application/x-authorware-bin":["aab","x32","u32","vox"],"application/x-authorware-map":["aam"],"application/x-authorware-seg":["aas"],"application/x-bcpio":["bcpio"],"application/x-bdoc":["bdoc"],"application/x-bittorrent":["torrent"],"application/x-blorb":["blb","blorb"],"application/x-bzip":["bz"],"application/x-bzip2":["bz2","boz"],"application/x-cbr":["cbr","cba","cbt","cbz","cb7"],"application/x-cdlink":["vcd"],"application/x-cfs-compressed":["cfs"],"application/x-chat":["chat"],"application/x-chess-pgn":["pgn"],"application/x-chrome-extension":["crx"],"application/x-cocoa":["cco"],"application/x-conference":["nsc"],"application/x-cpio":["cpio"],"application/x-csh":["csh"],"application/x-debian-package":["deb","udeb"],"application/x-dgc-compressed":["dgc"],"application/x-director":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"],"application/x-doom":["wad"],"application/x-dtbncx+xml":["ncx"],"application/x-dtbook+xml":["dtb"],"application/x-dtbresource+xml":["res"],"application/x-dvi":["dvi"],"application/x-envoy":["evy"],"application/x-eva":["eva"],"application/x-font-bdf":["bdf"],"application/x-font-ghostscript":["gsf"],"application/x-font-linux-psf":["psf"],"application/x-font-otf":["otf"],"application/x-font-pcf":["pcf"],"application/x-font-snf":["snf"],"application/x-font-ttf":["ttf","ttc"],"application/x-font-type1":["pfa","pfb","pfm","afm"],"application/x-freearc":["arc"],"application/x-futuresplash":["spl"],"application/x-gca-compressed":["gca"],"application/x-glulx":["ulx"],"application/x-gnumeric":["gnumeric"],"application/x-gramps-xml":["gramps"],"application/x-gtar":["gtar"],"application/x-hdf":["hdf"],"application/x-httpd-php":["php"],"application/x-install-instructions":["install"],"application/x-iso9660-image":["iso"],"application/x-java-archive-diff":["jardiff"],"application/x-java-jnlp-file":["jnlp"],"application/x-latex":["latex"],"application/x-lua-bytecode":["luac"],"application/x-lzh-compressed":["lzh","lha"],"application/x-makeself":["run"],"application/x-mie":["mie"],"application/x-mobipocket-ebook":["prc","mobi"],"application/x-ms-application":["application"],"application/x-ms-shortcut":["lnk"],"application/x-ms-wmd":["wmd"],"application/x-ms-wmz":["wmz"],"application/x-ms-xbap":["xbap"],"application/x-msaccess":["mdb"],"application/x-msbinder":["obd"],"application/x-mscardfile":["crd"],"application/x-msclip":["clp"],"application/x-msdos-program":["exe"],"application/x-msdownload":["exe","dll","com","bat","msi"],"application/x-msmediaview":["mvb","m13","m14"],"application/x-msmetafile":["wmf","wmz","emf","emz"],"application/x-msmoney":["mny"],"application/x-mspublisher":["pub"],"application/x-msschedule":["scd"],"application/x-msterminal":["trm"],"application/x-mswrite":["wri"],"application/x-netcdf":["nc","cdf"],"application/x-ns-proxy-autoconfig":["pac"],"application/x-nzb":["nzb"],"application/x-perl":["pl","pm"],"application/x-pilot":["prc","pdb"],"application/x-pkcs12":["p12","pfx"],"application/x-pkcs7-certificates":["p7b","spc"],"application/x-pkcs7-certreqresp":["p7r"],"application/x-rar-compressed":["rar"],"application/x-redhat-package-manager":["rpm"],"application/x-research-info-systems":["ris"],"application/x-sea":["sea"],"application/x-sh":["sh"],"application/x-shar":["shar"],"application/x-shockwave-flash":["swf"],"application/x-silverlight-app":["xap"],"application/x-sql":["sql"],"application/x-stuffit":["sit"],"application/x-stuffitx":["sitx"],"application/x-subrip":["srt"],"application/x-sv4cpio":["sv4cpio"],"application/x-sv4crc":["sv4crc"],"application/x-t3vm-image":["t3"],"application/x-tads":["gam"],"application/x-tar":["tar"],"application/x-tcl":["tcl","tk"],"application/x-tex":["tex"],"application/x-tex-tfm":["tfm"],"application/x-texinfo":["texinfo","texi"],"application/x-tgif":["obj"],"application/x-ustar":["ustar"],"application/x-virtualbox-hdd":["hdd"],"application/x-virtualbox-ova":["ova"],"application/x-virtualbox-ovf":["ovf"],"application/x-virtualbox-vbox":["vbox"],"application/x-virtualbox-vbox-extpack":["vbox-extpack"],"application/x-virtualbox-vdi":["vdi"],"application/x-virtualbox-vhd":["vhd"],"application/x-virtualbox-vmdk":["vmdk"],"application/x-wais-source":["src"],"application/x-web-app-manifest+json":["webapp"],"application/x-x509-ca-cert":["der","crt","pem"],"application/x-xfig":["fig"],"application/x-xliff+xml":["xlf"],"application/x-xpinstall":["xpi"],"application/x-xz":["xz"],"application/x-zmachine":["z1","z2","z3","z4","z5","z6","z7","z8"],"application/xaml+xml":["xaml"],"application/xcap-diff+xml":["xdf"],"application/xenc+xml":["xenc"],"application/xhtml+xml":["xhtml","xht"],"application/xml":["xml","xsl","xsd","rng"],"application/xml-dtd":["dtd"],"application/xop+xml":["xop"],"application/xproc+xml":["xpl"],"application/xslt+xml":["xslt"],"application/xspf+xml":["xspf"],"application/xv+xml":["mxml","xhvml","xvml","xvm"],"application/yang":["yang"],"application/yin+xml":["yin"],"application/zip":["zip"],"audio/3gpp":["3gpp"],"audio/adpcm":["adp"],"audio/basic":["au","snd"],"audio/midi":["mid","midi","kar","rmi"],"audio/mp3":["mp3"],"audio/mp4":["m4a","mp4a"],"audio/mpeg":["mpga","mp2","mp2a","mp3","m2a","m3a"],"audio/ogg":["oga","ogg","spx"],"audio/s3m":["s3m"],"audio/silk":["sil"],"audio/vnd.dece.audio":["uva","uvva"],"audio/vnd.digital-winds":["eol"],"audio/vnd.dra":["dra"],"audio/vnd.dts":["dts"],"audio/vnd.dts.hd":["dtshd"],"audio/vnd.lucent.voice":["lvp"],"audio/vnd.ms-playready.media.pya":["pya"],"audio/vnd.nuera.ecelp4800":["ecelp4800"],"audio/vnd.nuera.ecelp7470":["ecelp7470"],"audio/vnd.nuera.ecelp9600":["ecelp9600"],"audio/vnd.rip":["rip"],"audio/wav":["wav"],"audio/wave":["wav"],"audio/webm":["weba"],"audio/x-aac":["aac"],"audio/x-aiff":["aif","aiff","aifc"],"audio/x-caf":["caf"],"audio/x-flac":["flac"],"audio/x-m4a":["m4a"],"audio/x-matroska":["mka"],"audio/x-mpegurl":["m3u"],"audio/x-ms-wax":["wax"],"audio/x-ms-wma":["wma"],"audio/x-pn-realaudio":["ram","ra"],"audio/x-pn-realaudio-plugin":["rmp"],"audio/x-realaudio":["ra"],"audio/x-wav":["wav"],"audio/xm":["xm"],"chemical/x-cdx":["cdx"],"chemical/x-cif":["cif"],"chemical/x-cmdf":["cmdf"],"chemical/x-cml":["cml"],"chemical/x-csml":["csml"],"chemical/x-xyz":["xyz"],"font/otf":["otf"],"image/apng":["apng"],"image/bmp":["bmp"],"image/cgm":["cgm"],"image/g3fax":["g3"],"image/gif":["gif"],"image/ief":["ief"],"image/jpeg":["jpeg","jpg","jpe"],"image/ktx":["ktx"],"image/png":["png"],"image/prs.btif":["btif"],"image/sgi":["sgi"],"image/svg+xml":["svg","svgz"],"image/tiff":["tiff","tif"],"image/vnd.adobe.photoshop":["psd"],"image/vnd.dece.graphic":["uvi","uvvi","uvg","uvvg"],"image/vnd.djvu":["djvu","djv"],"image/vnd.dvb.subtitle":["sub"],"image/vnd.dwg":["dwg"],"image/vnd.dxf":["dxf"],"image/vnd.fastbidsheet":["fbs"],"image/vnd.fpx":["fpx"],"image/vnd.fst":["fst"],"image/vnd.fujixerox.edmics-mmr":["mmr"],"image/vnd.fujixerox.edmics-rlc":["rlc"],"image/vnd.ms-modi":["mdi"],"image/vnd.ms-photo":["wdp"],"image/vnd.net-fpx":["npx"],"image/vnd.wap.wbmp":["wbmp"],"image/vnd.xiff":["xif"],"image/webp":["webp"],"image/x-3ds":["3ds"],"image/x-cmu-raster":["ras"],"image/x-cmx":["cmx"],"image/x-freehand":["fh","fhc","fh4","fh5","fh7"],"image/x-icon":["ico"],"image/x-jng":["jng"],"image/x-mrsid-image":["sid"],"image/x-ms-bmp":["bmp"],"image/x-pcx":["pcx"],"image/x-pict":["pic","pct"],"image/x-portable-anymap":["pnm"],"image/x-portable-bitmap":["pbm"],"image/x-portable-graymap":["pgm"],"image/x-portable-pixmap":["ppm"],"image/x-rgb":["rgb"],"image/x-tga":["tga"],"image/x-xbitmap":["xbm"],"image/x-xpixmap":["xpm"],"image/x-xwindowdump":["xwd"],"message/rfc822":["eml","mime"],"model/gltf+json":["gltf"],"model/gltf-binary":["glb"],"model/iges":["igs","iges"],"model/mesh":["msh","mesh","silo"],"model/vnd.collada+xml":["dae"],"model/vnd.dwf":["dwf"],"model/vnd.gdl":["gdl"],"model/vnd.gtw":["gtw"],"model/vnd.mts":["mts"],"model/vnd.vtu":["vtu"],"model/vrml":["wrl","vrml"],"model/x3d+binary":["x3db","x3dbz"],"model/x3d+vrml":["x3dv","x3dvz"],"model/x3d+xml":["x3d","x3dz"],"text/cache-manifest":["appcache","manifest"],"text/calendar":["ics","ifb"],"text/coffeescript":["coffee","litcoffee"],"text/css":["css"],"text/csv":["csv"],"text/hjson":["hjson"],"text/html":["html","htm","shtml"],"text/jade":["jade"],"text/jsx":["jsx"],"text/less":["less"],"text/markdown":["markdown","md"],"text/mathml":["mml"],"text/n3":["n3"],"text/plain":["txt","text","conf","def","list","log","in","ini"],"text/prs.lines.tag":["dsc"],"text/richtext":["rtx"],"text/rtf":["rtf"],"text/sgml":["sgml","sgm"],"text/slim":["slim","slm"],"text/stylus":["stylus","styl"],"text/tab-separated-values":["tsv"],"text/troff":["t","tr","roff","man","me","ms"],"text/turtle":["ttl"],"text/uri-list":["uri","uris","urls"],"text/vcard":["vcard"],"text/vnd.curl":["curl"],"text/vnd.curl.dcurl":["dcurl"],"text/vnd.curl.mcurl":["mcurl"],"text/vnd.curl.scurl":["scurl"],"text/vnd.dvb.subtitle":["sub"],"text/vnd.fly":["fly"],"text/vnd.fmi.flexstor":["flx"],"text/vnd.graphviz":["gv"],"text/vnd.in3d.3dml":["3dml"],"text/vnd.in3d.spot":["spot"],"text/vnd.sun.j2me.app-descriptor":["jad"],"text/vnd.wap.wml":["wml"],"text/vnd.wap.wmlscript":["wmls"],"text/vtt":["vtt"],"text/x-asm":["s","asm"],"text/x-c":["c","cc","cxx","cpp","h","hh","dic"],"text/x-component":["htc"],"text/x-fortran":["f","for","f77","f90"],"text/x-handlebars-template":["hbs"],"text/x-java-source":["java"],"text/x-lua":["lua"],"text/x-markdown":["mkd"],"text/x-nfo":["nfo"],"text/x-opml":["opml"],"text/x-org":["org"],"text/x-pascal":["p","pas"],"text/x-processing":["pde"],"text/x-sass":["sass"],"text/x-scss":["scss"],"text/x-setext":["etx"],"text/x-sfv":["sfv"],"text/x-suse-ymp":["ymp"],"text/x-uuencode":["uu"],"text/x-vcalendar":["vcs"],"text/x-vcard":["vcf"],"text/xml":["xml"],"text/yaml":["yaml","yml"],"video/3gpp":["3gp","3gpp"],"video/3gpp2":["3g2"],"video/h261":["h261"],"video/h263":["h263"],"video/h264":["h264"],"video/jpeg":["jpgv"],"video/jpm":["jpm","jpgm"],"video/mj2":["mj2","mjp2"],"video/mp2t":["ts"],"video/mp4":["mp4","mp4v","mpg4"],"video/mpeg":["mpeg","mpg","mpe","m1v","m2v"],"video/ogg":["ogv"],"video/quicktime":["qt","mov"],"video/vnd.dece.hd":["uvh","uvvh"],"video/vnd.dece.mobile":["uvm","uvvm"],"video/vnd.dece.pd":["uvp","uvvp"],"video/vnd.dece.sd":["uvs","uvvs"],"video/vnd.dece.video":["uvv","uvvv"],"video/vnd.dvb.file":["dvb"],"video/vnd.fvt":["fvt"],"video/vnd.mpegurl":["mxu","m4u"],"video/vnd.ms-playready.media.pyv":["pyv"],"video/vnd.uvvu.mp4":["uvu","uvvu"],"video/vnd.vivo":["viv"],"video/webm":["webm"],"video/x-f4v":["f4v"],"video/x-fli":["fli"],"video/x-flv":["flv"],"video/x-m4v":["m4v"],"video/x-matroska":["mkv","mk3d","mks"],"video/x-mng":["mng"],"video/x-ms-asf":["asf","asx"],"video/x-ms-vob":["vob"],"video/x-ms-wm":["wm"],"video/x-ms-wmv":["wmv"],"video/x-ms-wmx":["wmx"],"video/x-ms-wvx":["wvx"],"video/x-msvideo":["avi"],"video/x-sgi-movie":["movie"],"video/x-smv":["smv"],"x-conference/x-cooltalk":["ice"]}
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/.travis.yml b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/.travis.yml
new file mode 100644
index 00000000..74c57bf1
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/.travis.yml
@@ -0,0 +1,8 @@
+language: node_js
+node_js:
+ - "0.8"
+ - "0.10"
+ - "0.12"
+ - "iojs"
+before_install:
+ - npm install -g npm@~1.4.6
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/LICENSE b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/LICENSE
new file mode 100644
index 00000000..ee27ba4b
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/LICENSE
@@ -0,0 +1,18 @@
+This software is released under the MIT license:
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/example/parse.js b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/example/parse.js
new file mode 100644
index 00000000..abff3e8e
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/example/parse.js
@@ -0,0 +1,2 @@
+var argv = require('../')(process.argv.slice(2));
+console.dir(argv);
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/index.js b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/index.js
new file mode 100644
index 00000000..6a0559d5
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/index.js
@@ -0,0 +1,236 @@
+module.exports = function (args, opts) {
+ if (!opts) opts = {};
+
+ var flags = { bools : {}, strings : {}, unknownFn: null };
+
+ if (typeof opts['unknown'] === 'function') {
+ flags.unknownFn = opts['unknown'];
+ }
+
+ if (typeof opts['boolean'] === 'boolean' && opts['boolean']) {
+ flags.allBools = true;
+ } else {
+ [].concat(opts['boolean']).filter(Boolean).forEach(function (key) {
+ flags.bools[key] = true;
+ });
+ }
+
+ var aliases = {};
+ Object.keys(opts.alias || {}).forEach(function (key) {
+ aliases[key] = [].concat(opts.alias[key]);
+ aliases[key].forEach(function (x) {
+ aliases[x] = [key].concat(aliases[key].filter(function (y) {
+ return x !== y;
+ }));
+ });
+ });
+
+ [].concat(opts.string).filter(Boolean).forEach(function (key) {
+ flags.strings[key] = true;
+ if (aliases[key]) {
+ flags.strings[aliases[key]] = true;
+ }
+ });
+
+ var defaults = opts['default'] || {};
+
+ var argv = { _ : [] };
+ Object.keys(flags.bools).forEach(function (key) {
+ setArg(key, defaults[key] === undefined ? false : defaults[key]);
+ });
+
+ var notFlags = [];
+
+ if (args.indexOf('--') !== -1) {
+ notFlags = args.slice(args.indexOf('--')+1);
+ args = args.slice(0, args.indexOf('--'));
+ }
+
+ function argDefined(key, arg) {
+ return (flags.allBools && /^--[^=]+$/.test(arg)) ||
+ flags.strings[key] || flags.bools[key] || aliases[key];
+ }
+
+ function setArg (key, val, arg) {
+ if (arg && flags.unknownFn && !argDefined(key, arg)) {
+ if (flags.unknownFn(arg) === false) return;
+ }
+
+ var value = !flags.strings[key] && isNumber(val)
+ ? Number(val) : val
+ ;
+ setKey(argv, key.split('.'), value);
+
+ (aliases[key] || []).forEach(function (x) {
+ setKey(argv, x.split('.'), value);
+ });
+ }
+
+ function setKey (obj, keys, value) {
+ var o = obj;
+ keys.slice(0,-1).forEach(function (key) {
+ if (o[key] === undefined) o[key] = {};
+ o = o[key];
+ });
+
+ var key = keys[keys.length - 1];
+ if (o[key] === undefined || flags.bools[key] || typeof o[key] === 'boolean') {
+ o[key] = value;
+ }
+ else if (Array.isArray(o[key])) {
+ o[key].push(value);
+ }
+ else {
+ o[key] = [ o[key], value ];
+ }
+ }
+
+ function aliasIsBoolean(key) {
+ return aliases[key].some(function (x) {
+ return flags.bools[x];
+ });
+ }
+
+ for (var i = 0; i < args.length; i++) {
+ var arg = args[i];
+
+ if (/^--.+=/.test(arg)) {
+ // Using [\s\S] instead of . because js doesn't support the
+ // 'dotall' regex modifier. See:
+ // http://stackoverflow.com/a/1068308/13216
+ var m = arg.match(/^--([^=]+)=([\s\S]*)$/);
+ var key = m[1];
+ var value = m[2];
+ if (flags.bools[key]) {
+ value = value !== 'false';
+ }
+ setArg(key, value, arg);
+ }
+ else if (/^--no-.+/.test(arg)) {
+ var key = arg.match(/^--no-(.+)/)[1];
+ setArg(key, false, arg);
+ }
+ else if (/^--.+/.test(arg)) {
+ var key = arg.match(/^--(.+)/)[1];
+ var next = args[i + 1];
+ if (next !== undefined && !/^-/.test(next)
+ && !flags.bools[key]
+ && !flags.allBools
+ && (aliases[key] ? !aliasIsBoolean(key) : true)) {
+ setArg(key, next, arg);
+ i++;
+ }
+ else if (/^(true|false)$/.test(next)) {
+ setArg(key, next === 'true', arg);
+ i++;
+ }
+ else {
+ setArg(key, flags.strings[key] ? '' : true, arg);
+ }
+ }
+ else if (/^-[^-]+/.test(arg)) {
+ var letters = arg.slice(1,-1).split('');
+
+ var broken = false;
+ for (var j = 0; j < letters.length; j++) {
+ var next = arg.slice(j+2);
+
+ if (next === '-') {
+ setArg(letters[j], next, arg)
+ continue;
+ }
+
+ if (/[A-Za-z]/.test(letters[j]) && /=/.test(next)) {
+ setArg(letters[j], next.split('=')[1], arg);
+ broken = true;
+ break;
+ }
+
+ if (/[A-Za-z]/.test(letters[j])
+ && /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) {
+ setArg(letters[j], next, arg);
+ broken = true;
+ break;
+ }
+
+ if (letters[j+1] && letters[j+1].match(/\W/)) {
+ setArg(letters[j], arg.slice(j+2), arg);
+ broken = true;
+ break;
+ }
+ else {
+ setArg(letters[j], flags.strings[letters[j]] ? '' : true, arg);
+ }
+ }
+
+ var key = arg.slice(-1)[0];
+ if (!broken && key !== '-') {
+ if (args[i+1] && !/^(-|--)[^-]/.test(args[i+1])
+ && !flags.bools[key]
+ && (aliases[key] ? !aliasIsBoolean(key) : true)) {
+ setArg(key, args[i+1], arg);
+ i++;
+ }
+ else if (args[i+1] && /true|false/.test(args[i+1])) {
+ setArg(key, args[i+1] === 'true', arg);
+ i++;
+ }
+ else {
+ setArg(key, flags.strings[key] ? '' : true, arg);
+ }
+ }
+ }
+ else {
+ if (!flags.unknownFn || flags.unknownFn(arg) !== false) {
+ argv._.push(
+ flags.strings['_'] || !isNumber(arg) ? arg : Number(arg)
+ );
+ }
+ if (opts.stopEarly) {
+ argv._.push.apply(argv._, args.slice(i + 1));
+ break;
+ }
+ }
+ }
+
+ Object.keys(defaults).forEach(function (key) {
+ if (!hasKey(argv, key.split('.'))) {
+ setKey(argv, key.split('.'), defaults[key]);
+
+ (aliases[key] || []).forEach(function (x) {
+ setKey(argv, x.split('.'), defaults[key]);
+ });
+ }
+ });
+
+ if (opts['--']) {
+ argv['--'] = new Array();
+ notFlags.forEach(function(key) {
+ argv['--'].push(key);
+ });
+ }
+ else {
+ notFlags.forEach(function(key) {
+ argv._.push(key);
+ });
+ }
+
+ return argv;
+};
+
+function hasKey (obj, keys) {
+ var o = obj;
+ keys.slice(0,-1).forEach(function (key) {
+ o = (o[key] || {});
+ });
+
+ var key = keys[keys.length - 1];
+ return key in o;
+}
+
+function isNumber (x) {
+ if (typeof x === 'number') return true;
+ if (/^0x[0-9a-f]+$/i.test(x)) return true;
+ return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x);
+}
+
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/package.json b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/package.json
new file mode 100644
index 00000000..5a9fc099
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/package.json
@@ -0,0 +1,71 @@
+{
+ "name": "minimist",
+ "version": "1.2.0",
+ "description": "parse argument options",
+ "main": "index.js",
+ "devDependencies": {
+ "covert": "^1.0.0",
+ "tap": "~0.4.0",
+ "tape": "^3.5.0"
+ },
+ "scripts": {
+ "test": "tap test/*.js",
+ "coverage": "covert test/*.js"
+ },
+ "testling": {
+ "files": "test/*.js",
+ "browsers": [
+ "ie/6..latest",
+ "ff/5",
+ "firefox/latest",
+ "chrome/10",
+ "chrome/latest",
+ "safari/5.1",
+ "safari/latest",
+ "opera/12"
+ ]
+ },
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/substack/minimist.git"
+ },
+ "homepage": "https://github.com/substack/minimist",
+ "keywords": [
+ "argv",
+ "getopt",
+ "parser",
+ "optimist"
+ ],
+ "author": {
+ "name": "James Halliday",
+ "email": "mail@substack.net",
+ "url": "http://substack.net"
+ },
+ "license": "MIT",
+ "gitHead": "dc624482fcfec5bc669c68cdb861f00573ed4e64",
+ "bugs": {
+ "url": "https://github.com/substack/minimist/issues"
+ },
+ "_id": "minimist@1.2.0",
+ "_shasum": "a35008b20f41383eec1fb914f4cd5df79a264284",
+ "_from": "minimist@>=1.1.0 <2.0.0",
+ "_npmVersion": "3.2.2",
+ "_nodeVersion": "2.4.0",
+ "_npmUser": {
+ "name": "substack",
+ "email": "substack@gmail.com"
+ },
+ "dist": {
+ "shasum": "a35008b20f41383eec1fb914f4cd5df79a264284",
+ "tarball": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz"
+ },
+ "maintainers": [
+ {
+ "name": "substack",
+ "email": "mail@substack.net"
+ }
+ ],
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/readme.markdown b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/readme.markdown
new file mode 100644
index 00000000..30a74cf8
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/readme.markdown
@@ -0,0 +1,91 @@
+# minimist
+
+parse argument options
+
+This module is the guts of optimist's argument parser without all the
+fanciful decoration.
+
+[](http://ci.testling.com/substack/minimist)
+
+[](http://travis-ci.org/substack/minimist)
+
+# example
+
+``` js
+var argv = require('minimist')(process.argv.slice(2));
+console.dir(argv);
+```
+
+```
+$ node example/parse.js -a beep -b boop
+{ _: [], a: 'beep', b: 'boop' }
+```
+
+```
+$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz
+{ _: [ 'foo', 'bar', 'baz' ],
+ x: 3,
+ y: 4,
+ n: 5,
+ a: true,
+ b: true,
+ c: true,
+ beep: 'boop' }
+```
+
+# methods
+
+``` js
+var parseArgs = require('minimist')
+```
+
+## var argv = parseArgs(args, opts={})
+
+Return an argument object `argv` populated with the array arguments from `args`.
+
+`argv._` contains all the arguments that didn't have an option associated with
+them.
+
+Numeric-looking arguments will be returned as numbers unless `opts.string` or
+`opts.boolean` is set for that argument name.
+
+Any arguments after `'--'` will not be parsed and will end up in `argv._`.
+
+options can be:
+
+* `opts.string` - a string or array of strings argument names to always treat as
+strings
+* `opts.boolean` - a boolean, string or array of strings to always treat as
+booleans. if `true` will treat all double hyphenated arguments without equal signs
+as boolean (e.g. affects `--foo`, not `-f` or `--foo=bar`)
+* `opts.alias` - an object mapping string names to strings or arrays of string
+argument names to use as aliases
+* `opts.default` - an object mapping string argument names to default values
+* `opts.stopEarly` - when true, populate `argv._` with everything after the
+first non-option
+* `opts['--']` - when true, populate `argv._` with everything before the `--`
+and `argv['--']` with everything after the `--`. Here's an example:
+* `opts.unknown` - a function which is invoked with a command line parameter not
+defined in the `opts` configuration object. If the function returns `false`, the
+unknown option is not added to `argv`.
+
+```
+> require('./')('one two three -- four five --six'.split(' '), { '--': true })
+{ _: [ 'one', 'two', 'three' ],
+ '--': [ 'four', 'five', '--six' ] }
+```
+
+Note that with `opts['--']` set, parsing for arguments still stops after the
+`--`.
+
+# install
+
+With [npm](https://npmjs.org) do:
+
+```
+npm install minimist
+```
+
+# license
+
+MIT
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/all_bool.js b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/all_bool.js
new file mode 100644
index 00000000..ac835483
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/all_bool.js
@@ -0,0 +1,32 @@
+var parse = require('../');
+var test = require('tape');
+
+test('flag boolean true (default all --args to boolean)', function (t) {
+ var argv = parse(['moo', '--honk', 'cow'], {
+ boolean: true
+ });
+
+ t.deepEqual(argv, {
+ honk: true,
+ _: ['moo', 'cow']
+ });
+
+ t.deepEqual(typeof argv.honk, 'boolean');
+ t.end();
+});
+
+test('flag boolean true only affects double hyphen arguments without equals signs', function (t) {
+ var argv = parse(['moo', '--honk', 'cow', '-p', '55', '--tacos=good'], {
+ boolean: true
+ });
+
+ t.deepEqual(argv, {
+ honk: true,
+ tacos: 'good',
+ p: 55,
+ _: ['moo', 'cow']
+ });
+
+ t.deepEqual(typeof argv.honk, 'boolean');
+ t.end();
+});
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/bool.js b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/bool.js
new file mode 100644
index 00000000..14b0717c
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/bool.js
@@ -0,0 +1,166 @@
+var parse = require('../');
+var test = require('tape');
+
+test('flag boolean default false', function (t) {
+ var argv = parse(['moo'], {
+ boolean: ['t', 'verbose'],
+ default: { verbose: false, t: false }
+ });
+
+ t.deepEqual(argv, {
+ verbose: false,
+ t: false,
+ _: ['moo']
+ });
+
+ t.deepEqual(typeof argv.verbose, 'boolean');
+ t.deepEqual(typeof argv.t, 'boolean');
+ t.end();
+
+});
+
+test('boolean groups', function (t) {
+ var argv = parse([ '-x', '-z', 'one', 'two', 'three' ], {
+ boolean: ['x','y','z']
+ });
+
+ t.deepEqual(argv, {
+ x : true,
+ y : false,
+ z : true,
+ _ : [ 'one', 'two', 'three' ]
+ });
+
+ t.deepEqual(typeof argv.x, 'boolean');
+ t.deepEqual(typeof argv.y, 'boolean');
+ t.deepEqual(typeof argv.z, 'boolean');
+ t.end();
+});
+test('boolean and alias with chainable api', function (t) {
+ var aliased = [ '-h', 'derp' ];
+ var regular = [ '--herp', 'derp' ];
+ var opts = {
+ herp: { alias: 'h', boolean: true }
+ };
+ var aliasedArgv = parse(aliased, {
+ boolean: 'herp',
+ alias: { h: 'herp' }
+ });
+ var propertyArgv = parse(regular, {
+ boolean: 'herp',
+ alias: { h: 'herp' }
+ });
+ var expected = {
+ herp: true,
+ h: true,
+ '_': [ 'derp' ]
+ };
+
+ t.same(aliasedArgv, expected);
+ t.same(propertyArgv, expected);
+ t.end();
+});
+
+test('boolean and alias with options hash', function (t) {
+ var aliased = [ '-h', 'derp' ];
+ var regular = [ '--herp', 'derp' ];
+ var opts = {
+ alias: { 'h': 'herp' },
+ boolean: 'herp'
+ };
+ var aliasedArgv = parse(aliased, opts);
+ var propertyArgv = parse(regular, opts);
+ var expected = {
+ herp: true,
+ h: true,
+ '_': [ 'derp' ]
+ };
+ t.same(aliasedArgv, expected);
+ t.same(propertyArgv, expected);
+ t.end();
+});
+
+test('boolean and alias array with options hash', function (t) {
+ var aliased = [ '-h', 'derp' ];
+ var regular = [ '--herp', 'derp' ];
+ var alt = [ '--harp', 'derp' ];
+ var opts = {
+ alias: { 'h': ['herp', 'harp'] },
+ boolean: 'h'
+ };
+ var aliasedArgv = parse(aliased, opts);
+ var propertyArgv = parse(regular, opts);
+ var altPropertyArgv = parse(alt, opts);
+ var expected = {
+ harp: true,
+ herp: true,
+ h: true,
+ '_': [ 'derp' ]
+ };
+ t.same(aliasedArgv, expected);
+ t.same(propertyArgv, expected);
+ t.same(altPropertyArgv, expected);
+ t.end();
+});
+
+test('boolean and alias using explicit true', function (t) {
+ var aliased = [ '-h', 'true' ];
+ var regular = [ '--herp', 'true' ];
+ var opts = {
+ alias: { h: 'herp' },
+ boolean: 'h'
+ };
+ var aliasedArgv = parse(aliased, opts);
+ var propertyArgv = parse(regular, opts);
+ var expected = {
+ herp: true,
+ h: true,
+ '_': [ ]
+ };
+
+ t.same(aliasedArgv, expected);
+ t.same(propertyArgv, expected);
+ t.end();
+});
+
+// regression, see https://github.com/substack/node-optimist/issues/71
+test('boolean and --x=true', function(t) {
+ var parsed = parse(['--boool', '--other=true'], {
+ boolean: 'boool'
+ });
+
+ t.same(parsed.boool, true);
+ t.same(parsed.other, 'true');
+
+ parsed = parse(['--boool', '--other=false'], {
+ boolean: 'boool'
+ });
+
+ t.same(parsed.boool, true);
+ t.same(parsed.other, 'false');
+ t.end();
+});
+
+test('boolean --boool=true', function (t) {
+ var parsed = parse(['--boool=true'], {
+ default: {
+ boool: false
+ },
+ boolean: ['boool']
+ });
+
+ t.same(parsed.boool, true);
+ t.end();
+});
+
+test('boolean --boool=false', function (t) {
+ var parsed = parse(['--boool=false'], {
+ default: {
+ boool: true
+ },
+ boolean: ['boool']
+ });
+
+ t.same(parsed.boool, false);
+ t.end();
+});
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/dash.js b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/dash.js
new file mode 100644
index 00000000..5a4fa5be
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/dash.js
@@ -0,0 +1,31 @@
+var parse = require('../');
+var test = require('tape');
+
+test('-', function (t) {
+ t.plan(5);
+ t.deepEqual(parse([ '-n', '-' ]), { n: '-', _: [] });
+ t.deepEqual(parse([ '-' ]), { _: [ '-' ] });
+ t.deepEqual(parse([ '-f-' ]), { f: '-', _: [] });
+ t.deepEqual(
+ parse([ '-b', '-' ], { boolean: 'b' }),
+ { b: true, _: [ '-' ] }
+ );
+ t.deepEqual(
+ parse([ '-s', '-' ], { string: 's' }),
+ { s: '-', _: [] }
+ );
+});
+
+test('-a -- b', function (t) {
+ t.plan(3);
+ t.deepEqual(parse([ '-a', '--', 'b' ]), { a: true, _: [ 'b' ] });
+ t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] });
+ t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] });
+});
+
+test('move arguments after the -- into their own `--` array', function(t) {
+ t.plan(1);
+ t.deepEqual(
+ parse([ '--name', 'John', 'before', '--', 'after' ], { '--': true }),
+ { name: 'John', _: [ 'before' ], '--': [ 'after' ] });
+});
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/default_bool.js b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/default_bool.js
new file mode 100644
index 00000000..780a3112
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/default_bool.js
@@ -0,0 +1,35 @@
+var test = require('tape');
+var parse = require('../');
+
+test('boolean default true', function (t) {
+ var argv = parse([], {
+ boolean: 'sometrue',
+ default: { sometrue: true }
+ });
+ t.equal(argv.sometrue, true);
+ t.end();
+});
+
+test('boolean default false', function (t) {
+ var argv = parse([], {
+ boolean: 'somefalse',
+ default: { somefalse: false }
+ });
+ t.equal(argv.somefalse, false);
+ t.end();
+});
+
+test('boolean default to null', function (t) {
+ var argv = parse([], {
+ boolean: 'maybe',
+ default: { maybe: null }
+ });
+ t.equal(argv.maybe, null);
+ var argv = parse(['--maybe'], {
+ boolean: 'maybe',
+ default: { maybe: null }
+ });
+ t.equal(argv.maybe, true);
+ t.end();
+
+})
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/dotted.js b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/dotted.js
new file mode 100644
index 00000000..d8b3e856
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/dotted.js
@@ -0,0 +1,22 @@
+var parse = require('../');
+var test = require('tape');
+
+test('dotted alias', function (t) {
+ var argv = parse(['--a.b', '22'], {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}});
+ t.equal(argv.a.b, 22);
+ t.equal(argv.aa.bb, 22);
+ t.end();
+});
+
+test('dotted default', function (t) {
+ var argv = parse('', {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}});
+ t.equal(argv.a.b, 11);
+ t.equal(argv.aa.bb, 11);
+ t.end();
+});
+
+test('dotted default with no alias', function (t) {
+ var argv = parse('', {default: {'a.b': 11}});
+ t.equal(argv.a.b, 11);
+ t.end();
+});
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/kv_short.js b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/kv_short.js
new file mode 100644
index 00000000..f813b305
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/kv_short.js
@@ -0,0 +1,16 @@
+var parse = require('../');
+var test = require('tape');
+
+test('short -k=v' , function (t) {
+ t.plan(1);
+
+ var argv = parse([ '-b=123' ]);
+ t.deepEqual(argv, { b: 123, _: [] });
+});
+
+test('multi short -k=v' , function (t) {
+ t.plan(1);
+
+ var argv = parse([ '-a=whatever', '-b=robots' ]);
+ t.deepEqual(argv, { a: 'whatever', b: 'robots', _: [] });
+});
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/long.js b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/long.js
new file mode 100644
index 00000000..5d3a1e09
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/long.js
@@ -0,0 +1,31 @@
+var test = require('tape');
+var parse = require('../');
+
+test('long opts', function (t) {
+ t.deepEqual(
+ parse([ '--bool' ]),
+ { bool : true, _ : [] },
+ 'long boolean'
+ );
+ t.deepEqual(
+ parse([ '--pow', 'xixxle' ]),
+ { pow : 'xixxle', _ : [] },
+ 'long capture sp'
+ );
+ t.deepEqual(
+ parse([ '--pow=xixxle' ]),
+ { pow : 'xixxle', _ : [] },
+ 'long capture eq'
+ );
+ t.deepEqual(
+ parse([ '--host', 'localhost', '--port', '555' ]),
+ { host : 'localhost', port : 555, _ : [] },
+ 'long captures sp'
+ );
+ t.deepEqual(
+ parse([ '--host=localhost', '--port=555' ]),
+ { host : 'localhost', port : 555, _ : [] },
+ 'long captures eq'
+ );
+ t.end();
+});
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/num.js b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/num.js
new file mode 100644
index 00000000..2cc77f4d
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/num.js
@@ -0,0 +1,36 @@
+var parse = require('../');
+var test = require('tape');
+
+test('nums', function (t) {
+ var argv = parse([
+ '-x', '1234',
+ '-y', '5.67',
+ '-z', '1e7',
+ '-w', '10f',
+ '--hex', '0xdeadbeef',
+ '789'
+ ]);
+ t.deepEqual(argv, {
+ x : 1234,
+ y : 5.67,
+ z : 1e7,
+ w : '10f',
+ hex : 0xdeadbeef,
+ _ : [ 789 ]
+ });
+ t.deepEqual(typeof argv.x, 'number');
+ t.deepEqual(typeof argv.y, 'number');
+ t.deepEqual(typeof argv.z, 'number');
+ t.deepEqual(typeof argv.w, 'string');
+ t.deepEqual(typeof argv.hex, 'number');
+ t.deepEqual(typeof argv._[0], 'number');
+ t.end();
+});
+
+test('already a number', function (t) {
+ var argv = parse([ '-x', 1234, 789 ]);
+ t.deepEqual(argv, { x : 1234, _ : [ 789 ] });
+ t.deepEqual(typeof argv.x, 'number');
+ t.deepEqual(typeof argv._[0], 'number');
+ t.end();
+});
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/parse.js b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/parse.js
new file mode 100644
index 00000000..7b4a2a17
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/parse.js
@@ -0,0 +1,197 @@
+var parse = require('../');
+var test = require('tape');
+
+test('parse args', function (t) {
+ t.deepEqual(
+ parse([ '--no-moo' ]),
+ { moo : false, _ : [] },
+ 'no'
+ );
+ t.deepEqual(
+ parse([ '-v', 'a', '-v', 'b', '-v', 'c' ]),
+ { v : ['a','b','c'], _ : [] },
+ 'multi'
+ );
+ t.end();
+});
+
+test('comprehensive', function (t) {
+ t.deepEqual(
+ parse([
+ '--name=meowmers', 'bare', '-cats', 'woo',
+ '-h', 'awesome', '--multi=quux',
+ '--key', 'value',
+ '-b', '--bool', '--no-meep', '--multi=baz',
+ '--', '--not-a-flag', 'eek'
+ ]),
+ {
+ c : true,
+ a : true,
+ t : true,
+ s : 'woo',
+ h : 'awesome',
+ b : true,
+ bool : true,
+ key : 'value',
+ multi : [ 'quux', 'baz' ],
+ meep : false,
+ name : 'meowmers',
+ _ : [ 'bare', '--not-a-flag', 'eek' ]
+ }
+ );
+ t.end();
+});
+
+test('flag boolean', function (t) {
+ var argv = parse([ '-t', 'moo' ], { boolean: 't' });
+ t.deepEqual(argv, { t : true, _ : [ 'moo' ] });
+ t.deepEqual(typeof argv.t, 'boolean');
+ t.end();
+});
+
+test('flag boolean value', function (t) {
+ var argv = parse(['--verbose', 'false', 'moo', '-t', 'true'], {
+ boolean: [ 't', 'verbose' ],
+ default: { verbose: true }
+ });
+
+ t.deepEqual(argv, {
+ verbose: false,
+ t: true,
+ _: ['moo']
+ });
+
+ t.deepEqual(typeof argv.verbose, 'boolean');
+ t.deepEqual(typeof argv.t, 'boolean');
+ t.end();
+});
+
+test('newlines in params' , function (t) {
+ var args = parse([ '-s', "X\nX" ])
+ t.deepEqual(args, { _ : [], s : "X\nX" });
+
+ // reproduce in bash:
+ // VALUE="new
+ // line"
+ // node program.js --s="$VALUE"
+ args = parse([ "--s=X\nX" ])
+ t.deepEqual(args, { _ : [], s : "X\nX" });
+ t.end();
+});
+
+test('strings' , function (t) {
+ var s = parse([ '-s', '0001234' ], { string: 's' }).s;
+ t.equal(s, '0001234');
+ t.equal(typeof s, 'string');
+
+ var x = parse([ '-x', '56' ], { string: 'x' }).x;
+ t.equal(x, '56');
+ t.equal(typeof x, 'string');
+ t.end();
+});
+
+test('stringArgs', function (t) {
+ var s = parse([ ' ', ' ' ], { string: '_' })._;
+ t.same(s.length, 2);
+ t.same(typeof s[0], 'string');
+ t.same(s[0], ' ');
+ t.same(typeof s[1], 'string');
+ t.same(s[1], ' ');
+ t.end();
+});
+
+test('empty strings', function(t) {
+ var s = parse([ '-s' ], { string: 's' }).s;
+ t.equal(s, '');
+ t.equal(typeof s, 'string');
+
+ var str = parse([ '--str' ], { string: 'str' }).str;
+ t.equal(str, '');
+ t.equal(typeof str, 'string');
+
+ var letters = parse([ '-art' ], {
+ string: [ 'a', 't' ]
+ });
+
+ t.equal(letters.a, '');
+ t.equal(letters.r, true);
+ t.equal(letters.t, '');
+
+ t.end();
+});
+
+
+test('string and alias', function(t) {
+ var x = parse([ '--str', '000123' ], {
+ string: 's',
+ alias: { s: 'str' }
+ });
+
+ t.equal(x.str, '000123');
+ t.equal(typeof x.str, 'string');
+ t.equal(x.s, '000123');
+ t.equal(typeof x.s, 'string');
+
+ var y = parse([ '-s', '000123' ], {
+ string: 'str',
+ alias: { str: 's' }
+ });
+
+ t.equal(y.str, '000123');
+ t.equal(typeof y.str, 'string');
+ t.equal(y.s, '000123');
+ t.equal(typeof y.s, 'string');
+ t.end();
+});
+
+test('slashBreak', function (t) {
+ t.same(
+ parse([ '-I/foo/bar/baz' ]),
+ { I : '/foo/bar/baz', _ : [] }
+ );
+ t.same(
+ parse([ '-xyz/foo/bar/baz' ]),
+ { x : true, y : true, z : '/foo/bar/baz', _ : [] }
+ );
+ t.end();
+});
+
+test('alias', function (t) {
+ var argv = parse([ '-f', '11', '--zoom', '55' ], {
+ alias: { z: 'zoom' }
+ });
+ t.equal(argv.zoom, 55);
+ t.equal(argv.z, argv.zoom);
+ t.equal(argv.f, 11);
+ t.end();
+});
+
+test('multiAlias', function (t) {
+ var argv = parse([ '-f', '11', '--zoom', '55' ], {
+ alias: { z: [ 'zm', 'zoom' ] }
+ });
+ t.equal(argv.zoom, 55);
+ t.equal(argv.z, argv.zoom);
+ t.equal(argv.z, argv.zm);
+ t.equal(argv.f, 11);
+ t.end();
+});
+
+test('nested dotted objects', function (t) {
+ var argv = parse([
+ '--foo.bar', '3', '--foo.baz', '4',
+ '--foo.quux.quibble', '5', '--foo.quux.o_O',
+ '--beep.boop'
+ ]);
+
+ t.same(argv.foo, {
+ bar : 3,
+ baz : 4,
+ quux : {
+ quibble : 5,
+ o_O : true
+ }
+ });
+ t.same(argv.beep, { boop : true });
+ t.end();
+});
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/parse_modified.js b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/parse_modified.js
new file mode 100644
index 00000000..ab620dc5
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/parse_modified.js
@@ -0,0 +1,9 @@
+var parse = require('../');
+var test = require('tape');
+
+test('parse with modifier functions' , function (t) {
+ t.plan(1);
+
+ var argv = parse([ '-b', '123' ], { boolean: 'b' });
+ t.deepEqual(argv, { b: true, _: [123] });
+});
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/short.js b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/short.js
new file mode 100644
index 00000000..d513a1c2
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/short.js
@@ -0,0 +1,67 @@
+var parse = require('../');
+var test = require('tape');
+
+test('numeric short args', function (t) {
+ t.plan(2);
+ t.deepEqual(parse([ '-n123' ]), { n: 123, _: [] });
+ t.deepEqual(
+ parse([ '-123', '456' ]),
+ { 1: true, 2: true, 3: 456, _: [] }
+ );
+});
+
+test('short', function (t) {
+ t.deepEqual(
+ parse([ '-b' ]),
+ { b : true, _ : [] },
+ 'short boolean'
+ );
+ t.deepEqual(
+ parse([ 'foo', 'bar', 'baz' ]),
+ { _ : [ 'foo', 'bar', 'baz' ] },
+ 'bare'
+ );
+ t.deepEqual(
+ parse([ '-cats' ]),
+ { c : true, a : true, t : true, s : true, _ : [] },
+ 'group'
+ );
+ t.deepEqual(
+ parse([ '-cats', 'meow' ]),
+ { c : true, a : true, t : true, s : 'meow', _ : [] },
+ 'short group next'
+ );
+ t.deepEqual(
+ parse([ '-h', 'localhost' ]),
+ { h : 'localhost', _ : [] },
+ 'short capture'
+ );
+ t.deepEqual(
+ parse([ '-h', 'localhost', '-p', '555' ]),
+ { h : 'localhost', p : 555, _ : [] },
+ 'short captures'
+ );
+ t.end();
+});
+
+test('mixed short bool and capture', function (t) {
+ t.same(
+ parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]),
+ {
+ f : true, p : 555, h : 'localhost',
+ _ : [ 'script.js' ]
+ }
+ );
+ t.end();
+});
+
+test('short and long', function (t) {
+ t.deepEqual(
+ parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]),
+ {
+ f : true, p : 555, h : 'localhost',
+ _ : [ 'script.js' ]
+ }
+ );
+ t.end();
+});
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/stop_early.js b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/stop_early.js
new file mode 100644
index 00000000..bdf9fbcb
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/stop_early.js
@@ -0,0 +1,15 @@
+var parse = require('../');
+var test = require('tape');
+
+test('stops parsing on the first non-option when stopEarly is set', function (t) {
+ var argv = parse(['--aaa', 'bbb', 'ccc', '--ddd'], {
+ stopEarly: true
+ });
+
+ t.deepEqual(argv, {
+ aaa: 'bbb',
+ _: ['ccc', '--ddd']
+ });
+
+ t.end();
+});
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/unknown.js b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/unknown.js
new file mode 100644
index 00000000..462a36bd
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/unknown.js
@@ -0,0 +1,102 @@
+var parse = require('../');
+var test = require('tape');
+
+test('boolean and alias is not unknown', function (t) {
+ var unknown = [];
+ function unknownFn(arg) {
+ unknown.push(arg);
+ return false;
+ }
+ var aliased = [ '-h', 'true', '--derp', 'true' ];
+ var regular = [ '--herp', 'true', '-d', 'true' ];
+ var opts = {
+ alias: { h: 'herp' },
+ boolean: 'h',
+ unknown: unknownFn
+ };
+ var aliasedArgv = parse(aliased, opts);
+ var propertyArgv = parse(regular, opts);
+
+ t.same(unknown, ['--derp', '-d']);
+ t.end();
+});
+
+test('flag boolean true any double hyphen argument is not unknown', function (t) {
+ var unknown = [];
+ function unknownFn(arg) {
+ unknown.push(arg);
+ return false;
+ }
+ var argv = parse(['--honk', '--tacos=good', 'cow', '-p', '55'], {
+ boolean: true,
+ unknown: unknownFn
+ });
+ t.same(unknown, ['--tacos=good', 'cow', '-p']);
+ t.same(argv, {
+ honk: true,
+ _: []
+ });
+ t.end();
+});
+
+test('string and alias is not unknown', function (t) {
+ var unknown = [];
+ function unknownFn(arg) {
+ unknown.push(arg);
+ return false;
+ }
+ var aliased = [ '-h', 'hello', '--derp', 'goodbye' ];
+ var regular = [ '--herp', 'hello', '-d', 'moon' ];
+ var opts = {
+ alias: { h: 'herp' },
+ string: 'h',
+ unknown: unknownFn
+ };
+ var aliasedArgv = parse(aliased, opts);
+ var propertyArgv = parse(regular, opts);
+
+ t.same(unknown, ['--derp', '-d']);
+ t.end();
+});
+
+test('default and alias is not unknown', function (t) {
+ var unknown = [];
+ function unknownFn(arg) {
+ unknown.push(arg);
+ return false;
+ }
+ var aliased = [ '-h', 'hello' ];
+ var regular = [ '--herp', 'hello' ];
+ var opts = {
+ default: { 'h': 'bar' },
+ alias: { 'h': 'herp' },
+ unknown: unknownFn
+ };
+ var aliasedArgv = parse(aliased, opts);
+ var propertyArgv = parse(regular, opts);
+
+ t.same(unknown, []);
+ t.end();
+ unknownFn(); // exercise fn for 100% coverage
+});
+
+test('value following -- is not unknown', function (t) {
+ var unknown = [];
+ function unknownFn(arg) {
+ unknown.push(arg);
+ return false;
+ }
+ var aliased = [ '--bad', '--', 'good', 'arg' ];
+ var opts = {
+ '--': true,
+ unknown: unknownFn
+ };
+ var argv = parse(aliased, opts);
+
+ t.same(unknown, ['--bad']);
+ t.same(argv, {
+ '--': ['good', 'arg'],
+ '_': []
+ })
+ t.end();
+});
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/whitespace.js b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/whitespace.js
new file mode 100644
index 00000000..8a52a58c
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/minimist/test/whitespace.js
@@ -0,0 +1,8 @@
+var parse = require('../');
+var test = require('tape');
+
+test('whitespace should be whitespace' , function (t) {
+ t.plan(1);
+ var x = parse([ '-x', '\t' ]).x;
+ t.equal(x, '\t');
+});
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/url-join/.npmignore b/node_modules/http-server/node_modules/ecstatic/node_modules/url-join/.npmignore
new file mode 100644
index 00000000..8ee2d2ba
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/url-join/.npmignore
@@ -0,0 +1,2 @@
+node_modules/*
+*.log
\ No newline at end of file
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/url-join/.travis.yml b/node_modules/http-server/node_modules/ecstatic/node_modules/url-join/.travis.yml
new file mode 100644
index 00000000..7e2eb1fc
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/url-join/.travis.yml
@@ -0,0 +1,5 @@
+language: node_js
+node_js:
+ - "5"
+ - "4"
+ - "0.12"
\ No newline at end of file
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/url-join/README.md b/node_modules/http-server/node_modules/ecstatic/node_modules/url-join/README.md
new file mode 100644
index 00000000..13012c8d
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/url-join/README.md
@@ -0,0 +1,47 @@
+Join all arguments together and normalize the resulting url.
+
+## Install
+
+~~~
+npm install url-join
+~~~
+
+## Usage
+
+~~~javascript
+var urljoin = require('url-join');
+
+var fullUrl = urljoin('http://www.google.com', 'a', '/b/cd', '?foo=123');
+
+console.log(fullUrl);
+
+~~~
+
+Prints:
+
+~~~
+'http://www.google.com/a/b/cd?foo=123'
+~~~
+
+## Browser and AMD
+
+It also works in the browser, you can either include ```lib/url-join.js``` in your page:
+
+~~~html
+
+
+~~~
+
+Or using an AMD module system like requirejs:
+
+~~~javascript
+define(['path/url-join.js'], function (urljoin) {
+ urljoin('http://blabla.com', 'foo?a=1');
+});
+~~~
+
+## License
+
+MIT
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/url-join/bower.json b/node_modules/http-server/node_modules/ecstatic/node_modules/url-join/bower.json
new file mode 100644
index 00000000..3e751f94
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/url-join/bower.json
@@ -0,0 +1,22 @@
+{
+ "name": "url-join",
+ "version": "1.0.0",
+ "homepage": "https://github.com/jfromaniello/url-join",
+ "authors": [
+ "José F. Romaniello (http://joseoncode.com)"
+ ],
+ "description": "Join urls and normalize as in path.join.",
+ "main": "lib/url-join.js",
+ "keywords": [
+ "url",
+ "join"
+ ],
+ "license": "MIT",
+ "ignore": [
+ "**/.*",
+ "node_modules",
+ "bower_components",
+ "test",
+ "tests"
+ ]
+}
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/url-join/lib/url-join.js b/node_modules/http-server/node_modules/ecstatic/node_modules/url-join/lib/url-join.js
new file mode 100644
index 00000000..35dfa298
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/url-join/lib/url-join.js
@@ -0,0 +1,38 @@
+(function (name, context, definition) {
+ if (typeof module !== 'undefined' && module.exports) module.exports = definition();
+ else if (typeof define === 'function' && define.amd) define(definition);
+ else context[name] = definition();
+})('urljoin', this, function () {
+
+ function normalize (str, options) {
+
+ // make sure protocol is followed by two slashes
+ str = str.replace(/:\//g, '://');
+
+ // remove consecutive slashes
+ str = str.replace(/([^:\s])\/+/g, '$1/');
+
+ // remove trailing slash before parameters or hash
+ str = str.replace(/\/(\?|&|#[^!])/g, '$1');
+
+ // replace ? in parameters with &
+ str = str.replace(/(\?.+)\?/g, '$1&');
+
+ return str;
+ }
+
+ return function () {
+ var input = arguments;
+ var options = {};
+
+ if (typeof arguments[0] === 'object') {
+ // new syntax with array and options
+ input = arguments[0];
+ options = arguments[1] || {};
+ }
+
+ var joined = [].slice.call(input, 0).join('/');
+ return normalize(joined, options);
+ };
+
+});
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/url-join/package.json b/node_modules/http-server/node_modules/ecstatic/node_modules/url-join/package.json
new file mode 100644
index 00000000..07c4a58c
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/url-join/package.json
@@ -0,0 +1,58 @@
+{
+ "name": "url-join",
+ "version": "1.1.0",
+ "description": "Join urls and normalize as in path.join.",
+ "main": "lib/url-join.js",
+ "scripts": {
+ "test": "mocha --require should"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/jfromaniello/url-join.git"
+ },
+ "keywords": [
+ "url",
+ "join"
+ ],
+ "author": {
+ "name": "José F. Romaniello",
+ "email": "jfromaniello@gmail.com",
+ "url": "http://joseoncode.com"
+ },
+ "license": "MIT",
+ "devDependencies": {
+ "should": "~1.2.1",
+ "mocha": "~1.8.1"
+ },
+ "gitHead": "3144ba1acbfcee988d6abb3b2be1df532f0e151c",
+ "bugs": {
+ "url": "https://github.com/jfromaniello/url-join/issues"
+ },
+ "homepage": "https://github.com/jfromaniello/url-join#readme",
+ "_id": "url-join@1.1.0",
+ "_shasum": "741c6c2f4596c4830d6718460920d0c92202dc78",
+ "_from": "url-join@>=1.0.0 <2.0.0",
+ "_npmVersion": "2.15.1",
+ "_nodeVersion": "4.4.2",
+ "_npmUser": {
+ "name": "jfromaniello",
+ "email": "jfromaniello@gmail.com"
+ },
+ "dist": {
+ "shasum": "741c6c2f4596c4830d6718460920d0c92202dc78",
+ "tarball": "https://registry.npmjs.org/url-join/-/url-join-1.1.0.tgz"
+ },
+ "maintainers": [
+ {
+ "name": "jfromaniello",
+ "email": "jfromaniello@gmail.com"
+ }
+ ],
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/url-join-1.1.0.tgz_1459856865965_0.46360294660553336"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/url-join/-/url-join-1.1.0.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/node_modules/http-server/node_modules/ecstatic/node_modules/url-join/test/tests.js b/node_modules/http-server/node_modules/ecstatic/node_modules/url-join/test/tests.js
new file mode 100644
index 00000000..bda9a6e5
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/node_modules/url-join/test/tests.js
@@ -0,0 +1,51 @@
+var urljoin = require('../lib/url-join');
+
+describe('url join', function () {
+ it('should work for simple case', function () {
+ urljoin('http://www.google.com/', 'foo/bar', '?test=123')
+ .should.eql('http://www.google.com/foo/bar?test=123');
+ });
+
+ it('should work for simple case with new syntax', function () {
+ urljoin(['http://www.google.com/', 'foo/bar', '?test=123'])
+ .should.eql('http://www.google.com/foo/bar?test=123');
+ });
+
+ it('should work for hashbang urls', function () {
+ urljoin(['http://www.google.com', '#!', 'foo/bar', '?test=123'])
+ .should.eql('http://www.google.com/#!/foo/bar?test=123');
+ });
+
+ it('should be able to join protocol', function () {
+ urljoin('http:', 'www.google.com/', 'foo/bar', '?test=123')
+ .should.eql('http://www.google.com/foo/bar?test=123');
+ });
+
+ it('should be able to join protocol with slashes', function () {
+ urljoin('http://', 'www.google.com/', 'foo/bar', '?test=123')
+ .should.eql('http://www.google.com/foo/bar?test=123');
+ });
+
+ it('should remove extra slashes', function () {
+ urljoin('http:', 'www.google.com///', 'foo/bar', '?test=123')
+ .should.eql('http://www.google.com/foo/bar?test=123');
+ });
+
+ it('should support anchors in urls', function () {
+ urljoin('http:', 'www.google.com///', 'foo/bar', '?test=123', '#faaaaa')
+ .should.eql('http://www.google.com/foo/bar?test=123#faaaaa');
+ });
+
+ it('should support protocol-relative urls', function () {
+ urljoin('//www.google.com', 'foo/bar', '?test=123')
+ .should.eql('//www.google.com/foo/bar?test=123')
+ });
+
+ it('should merge multiple query params properly', function () {
+ urljoin('http:', 'www.google.com///', 'foo/bar', '?test=123', '?key=456')
+ .should.eql('http://www.google.com/foo/bar?test=123&key=456');
+
+ urljoin('http:', 'www.google.com///', 'foo/bar', '?test=123', '?boom=value', '&key=456')
+ .should.eql('http://www.google.com/foo/bar?test=123&boom=value&key=456');
+ });
+});
diff --git a/node_modules/http-server/node_modules/ecstatic/package.json b/node_modules/http-server/node_modules/ecstatic/package.json
new file mode 100644
index 00000000..0c1f12f7
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/package.json
@@ -0,0 +1,78 @@
+{
+ "author": {
+ "name": "Joshua Holbrook",
+ "email": "josh@nodejitsu.com",
+ "url": "http://jesusabdullah.net"
+ },
+ "name": "ecstatic",
+ "description": "A simple static file server middleware that works with both Express and Flatiron",
+ "version": "1.4.1",
+ "homepage": "https://github.com/jfhbrook/node-ecstatic",
+ "repository": {
+ "type": "git",
+ "url": "git+ssh://git@github.com/jfhbrook/node-ecstatic.git"
+ },
+ "main": "./lib/ecstatic.js",
+ "scripts": {
+ "test": "tap test/*.js"
+ },
+ "bin": {
+ "ecstatic": "./lib/ecstatic.js"
+ },
+ "keywords": [
+ "static",
+ "web",
+ "server",
+ "files",
+ "mime",
+ "middleware"
+ ],
+ "dependencies": {
+ "he": "^0.5.0",
+ "mime": "^1.2.11",
+ "minimist": "^1.1.0",
+ "url-join": "^1.0.0"
+ },
+ "devDependencies": {
+ "eol": "^0.2.0",
+ "express": "^4.12.3",
+ "mkdirp": "^0.5.0",
+ "request": "^2.49.0",
+ "tap": "^5.7.0"
+ },
+ "license": "MIT",
+ "gitHead": "70751198635509a156ad1564296625fc753af89f",
+ "bugs": {
+ "url": "https://github.com/jfhbrook/node-ecstatic/issues"
+ },
+ "_id": "ecstatic@1.4.1",
+ "_shasum": "32cb7b6fa2e290d58668674d115e8f0c3d567d6a",
+ "_from": "ecstatic@>=1.4.0 <2.0.0",
+ "_npmVersion": "2.14.16",
+ "_nodeVersion": "4.2.1",
+ "_npmUser": {
+ "name": "jfhbrook",
+ "email": "josh.holbrook@gmail.com"
+ },
+ "dist": {
+ "shasum": "32cb7b6fa2e290d58668674d115e8f0c3d567d6a",
+ "tarball": "https://registry.npmjs.org/ecstatic/-/ecstatic-1.4.1.tgz"
+ },
+ "maintainers": [
+ {
+ "name": "jesusabdullah",
+ "email": "josh.holbrook@gmail.com"
+ },
+ {
+ "name": "jfhbrook",
+ "email": "josh.holbrook@gmail.com"
+ }
+ ],
+ "_npmOperationalInternal": {
+ "host": "packages-16-east.internal.npmjs.com",
+ "tmp": "tmp/ecstatic-1.4.1.tgz_1462924279598_0.48026969679631293"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/ecstatic/-/ecstatic-1.4.1.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/node_modules/http-server/node_modules/ecstatic/test.js b/node_modules/http-server/node_modules/ecstatic/test.js
new file mode 100644
index 00000000..195dcae9
--- /dev/null
+++ b/node_modules/http-server/node_modules/ecstatic/test.js
@@ -0,0 +1,7 @@
+var fs = require('fs');
+
+var stat = fs.statSync('./package.json'); // or some other file
+
+console.log(stat.mtime);
+console.log('' + stat.mtime);
+console.log(JSON.stringify(stat.mtime));
diff --git a/node_modules/http-server/node_modules/http-proxy/.npmignore b/node_modules/http-server/node_modules/http-proxy/.npmignore
new file mode 100644
index 00000000..081a48c6
--- /dev/null
+++ b/node_modules/http-server/node_modules/http-proxy/.npmignore
@@ -0,0 +1,7 @@
+test
+examples
+doc
+benchmark
+.travis.yml
+CHANGELOG.md
+UPGRADING.md
\ No newline at end of file
diff --git a/node_modules/http-server/node_modules/http-proxy/LICENSE b/node_modules/http-server/node_modules/http-proxy/LICENSE
new file mode 100644
index 00000000..84820c00
--- /dev/null
+++ b/node_modules/http-server/node_modules/http-proxy/LICENSE
@@ -0,0 +1,23 @@
+
+ node-http-proxy
+
+ Copyright (c) 2010-2016 Charlie Robbins, Jarrett Cruger & the Contributors.
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/http-server/node_modules/http-proxy/README.md b/node_modules/http-server/node_modules/http-proxy/README.md
new file mode 100644
index 00000000..49c49a39
--- /dev/null
+++ b/node_modules/http-server/node_modules/http-proxy/README.md
@@ -0,0 +1,493 @@
+
+
+
+
+node-http-proxy
+=======
+
+
+
+
+
+
+
+
+`node-http-proxy` is an HTTP programmable proxying library that supports
+websockets. It is suitable for implementing components such as reverse
+proxies and load balancers.
+
+### Table of Contents
+ * [Installation](#installation)
+ * [Upgrading from 0.8.x ?](#upgrading-from-08x-)
+ * [Core Concept](#core-concept)
+ * [Use Cases](#use-cases)
+ * [Setup a basic stand-alone proxy server](#setup-a-basic-stand-alone-proxy-server)
+ * [Setup a stand-alone proxy server with custom server logic](#setup-a-stand-alone-proxy-server-with-custom-server-logic)
+ * [Setup a stand-alone proxy server with proxy request header re-writing](#setup-a-stand-alone-proxy-server-with-proxy-request-header-re-writing)
+ * [Modify a response from a proxied server](#modify-a-response-from-a-proxied-server)
+ * [Setup a stand-alone proxy server with latency](#setup-a-stand-alone-proxy-server-with-latency)
+ * [Using HTTPS](#using-https)
+ * [Proxying WebSockets](#proxying-websockets)
+ * [Options](#options)
+ * [Listening for proxy events](#listening-for-proxy-events)
+ * [Shutdown](#shutdown)
+ * [Miscellaneous](#miscellaneous)
+ * [Test](#test)
+ * [ProxyTable API](#proxytable-api)
+ * [Logo](#logo)
+ * [Contributing and Issues](#contributing-and-issues)
+ * [License](#license)
+
+### Installation
+
+`npm install http-proxy --save`
+
+**[Back to top](#table-of-contents)**
+
+### Upgrading from 0.8.x ?
+
+Click [here](UPGRADING.md)
+
+**[Back to top](#table-of-contents)**
+
+### Core Concept
+
+A new proxy is created by calling `createProxyServer` and passing
+an `options` object as argument ([valid properties are available here](lib/http-proxy.js#L33-L50))
+
+```javascript
+var httpProxy = require('http-proxy');
+
+var proxy = httpProxy.createProxyServer(options); // See (â )
+```
+â Unless listen(..) is invoked on the object, this does not create a webserver. See below.
+
+An object will be returned with four methods:
+
+* web `req, res, [options]` (used for proxying regular HTTP(S) requests)
+* ws `req, socket, head, [options]` (used for proxying WS(S) requests)
+* listen `port` (a function that wraps the object in a webserver, for your convenience)
+* close `[callback]` (a function that closes the inner webserver and stops listening on given port)
+
+It is then possible to proxy requests by calling these functions
+
+```javascript
+http.createServer(function(req, res) {
+ proxy.web(req, res, { target: 'http://mytarget.com:8080' });
+});
+```
+
+Errors can be listened on either using the Event Emitter API
+
+```javascript
+proxy.on('error', function(e) {
+ ...
+});
+```
+
+or using the callback API
+
+```javascript
+proxy.web(req, res, { target: 'http://mytarget.com:8080' }, function(e) { ... });
+```
+
+When a request is proxied it follows two different pipelines ([available here](lib/http-proxy/passes))
+which apply transformations to both the `req` and `res` object.
+The first pipeline (incoming) is responsible for the creation and manipulation of the stream that connects your client to the target.
+The second pipeline (outgoing) is responsible for the creation and manipulation of the stream that, from your target, returns data
+to the client.
+
+**[Back to top](#table-of-contents)**
+
+### Use Cases
+
+#### Setup a basic stand-alone proxy server
+
+```js
+var http = require('http'),
+ httpProxy = require('http-proxy');
+//
+// Create your proxy server and set the target in the options.
+//
+httpProxy.createProxyServer({target:'http://localhost:9000'}).listen(8000); // See (â )
+
+//
+// Create your target server
+//
+http.createServer(function (req, res) {
+ res.writeHead(200, { 'Content-Type': 'text/plain' });
+ res.write('request successfully proxied!' + '\n' + JSON.stringify(req.headers, true, 2));
+ res.end();
+}).listen(9000);
+```
+â Invoking listen(..) triggers the creation of a web server. Otherwise, just the proxy instance is created.
+
+**[Back to top](#table-of-contents)**
+
+#### Setup a stand-alone proxy server with custom server logic
+This example show how you can proxy a request using your own HTTP server
+and also you can put your own logic to handle the request.
+
+```js
+var http = require('http'),
+ httpProxy = require('http-proxy');
+
+//
+// Create a proxy server with custom application logic
+//
+var proxy = httpProxy.createProxyServer({});
+
+//
+// Create your custom server and just call `proxy.web()` to proxy
+// a web request to the target passed in the options
+// also you can use `proxy.ws()` to proxy a websockets request
+//
+var server = http.createServer(function(req, res) {
+ // You can define here your custom logic to handle the request
+ // and then proxy the request.
+ proxy.web(req, res, { target: 'http://127.0.0.1:5060' });
+});
+
+console.log("listening on port 5050")
+server.listen(5050);
+```
+
+**[Back to top](#table-of-contents)**
+
+#### Setup a stand-alone proxy server with proxy request header re-writing
+This example shows how you can proxy a request using your own HTTP server that
+modifies the outgoing proxy request by adding a special header.
+
+```js
+var http = require('http'),
+ httpProxy = require('http-proxy');
+
+//
+// Create a proxy server with custom application logic
+//
+var proxy = httpProxy.createProxyServer({});
+
+// To modify the proxy connection before data is sent, you can listen
+// for the 'proxyReq' event. When the event is fired, you will receive
+// the following arguments:
+// (http.ClientRequest proxyReq, http.IncomingMessage req,
+// http.ServerResponse res, Object options). This mechanism is useful when
+// you need to modify the proxy request before the proxy connection
+// is made to the target.
+//
+proxy.on('proxyReq', function(proxyReq, req, res, options) {
+ proxyReq.setHeader('X-Special-Proxy-Header', 'foobar');
+});
+
+var server = http.createServer(function(req, res) {
+ // You can define here your custom logic to handle the request
+ // and then proxy the request.
+ proxy.web(req, res, {
+ target: 'http://127.0.0.1:5060'
+ });
+});
+
+console.log("listening on port 5050")
+server.listen(5050);
+```
+
+**[Back to top](#table-of-contents)**
+
+#### Modify a response from a proxied server
+Sometimes when you have received a HTML/XML document from the server of origin you would like to modify it before forwarding it on.
+
+[Harmon](https://github.com/No9/harmon) allows you to do this in a streaming style so as to keep the pressure on the proxy to a minimum.
+
+**[Back to top](#table-of-contents)**
+
+#### Setup a stand-alone proxy server with latency
+
+```js
+var http = require('http'),
+ httpProxy = require('http-proxy');
+
+//
+// Create a proxy server with latency
+//
+var proxy = httpProxy.createProxyServer();
+
+//
+// Create your server that makes an operation that waits a while
+// and then proxies the request
+//
+http.createServer(function (req, res) {
+ // This simulates an operation that takes 500ms to execute
+ setTimeout(function () {
+ proxy.web(req, res, {
+ target: 'http://localhost:9008'
+ });
+ }, 500);
+}).listen(8008);
+
+//
+// Create your target server
+//
+http.createServer(function (req, res) {
+ res.writeHead(200, { 'Content-Type': 'text/plain' });
+ res.write('request successfully proxied to: ' + req.url + '\n' + JSON.stringify(req.headers, true, 2));
+ res.end();
+}).listen(9008);
+```
+
+**[Back to top](#table-of-contents)**
+
+#### Using HTTPS
+You can activate the validation of a secure SSL certificate to the target connection (avoid self signed certs), just set `secure: true` in the options.
+
+##### HTTPS -> HTTP
+
+```js
+//
+// Create the HTTPS proxy server in front of a HTTP server
+//
+httpProxy.createServer({
+ target: {
+ host: 'localhost',
+ port: 9009
+ },
+ ssl: {
+ key: fs.readFileSync('valid-ssl-key.pem', 'utf8'),
+ cert: fs.readFileSync('valid-ssl-cert.pem', 'utf8')
+ }
+}).listen(8009);
+```
+
+##### HTTPS -> HTTPS
+
+```js
+//
+// Create the proxy server listening on port 443
+//
+httpProxy.createServer({
+ ssl: {
+ key: fs.readFileSync('valid-ssl-key.pem', 'utf8'),
+ cert: fs.readFileSync('valid-ssl-cert.pem', 'utf8')
+ },
+ target: 'https://localhost:9010',
+ secure: true // Depends on your needs, could be false.
+}).listen(443);
+```
+
+**[Back to top](#table-of-contents)**
+
+#### Proxying WebSockets
+You can activate the websocket support for the proxy using `ws:true` in the options.
+
+```js
+//
+// Create a proxy server for websockets
+//
+httpProxy.createServer({
+ target: 'ws://localhost:9014',
+ ws: true
+}).listen(8014);
+```
+
+Also you can proxy the websocket requests just calling the `ws(req, socket, head)` method.
+
+```js
+//
+// Setup our server to proxy standard HTTP requests
+//
+var proxy = new httpProxy.createProxyServer({
+ target: {
+ host: 'localhost',
+ port: 9015
+ }
+});
+var proxyServer = http.createServer(function (req, res) {
+ proxy.web(req, res);
+});
+
+//
+// Listen to the `upgrade` event and proxy the
+// WebSocket requests as well.
+//
+proxyServer.on('upgrade', function (req, socket, head) {
+ proxy.ws(req, socket, head);
+});
+
+proxyServer.listen(8015);
+```
+
+**[Back to top](#table-of-contents)**
+
+### Options
+
+`httpProxy.createProxyServer` supports the following options:
+
+* **target**: url string to be parsed with the url module
+* **forward**: url string to be parsed with the url module
+* **agent**: object to be passed to http(s).request (see Node's [https agent](http://nodejs.org/api/https.html#https_class_https_agent) and [http agent](http://nodejs.org/api/http.html#http_class_http_agent) objects)
+* **ssl**: object to be passed to https.createServer()
+* **ws**: true/false, if you want to proxy websockets
+* **xfwd**: true/false, adds x-forward headers
+* **secure**: true/false, if you want to verify the SSL Certs
+* **toProxy**: true/false, passes the absolute URL as the `path` (useful for proxying to proxies)
+* **prependPath**: true/false, Default: true - specify whether you want to prepend the target's path to the proxy path
+* **ignorePath**: true/false, Default: false - specify whether you want to ignore the proxy path of the incoming request (note: you will have to append / manually if required).
+* **localAddress**: Local interface string to bind for outgoing connections
+* **changeOrigin**: true/false, Default: false - changes the origin of the host header to the target URL
+* **preserveHeaderKeyCase**: true/false, Default: false - specify whether you want to keep letter case of response header key
+* **auth**: Basic authentication i.e. 'user:password' to compute an Authorization header.
+* **hostRewrite**: rewrites the location hostname on (201/301/302/307/308) redirects.
+* **autoRewrite**: rewrites the location host/port on (201/301/302/307/308) redirects based on requested host/port. Default: false.
+* **protocolRewrite**: rewrites the location protocol on (201/301/302/307/308) redirects to 'http' or 'https'. Default: null.
+* **cookieDomainRewrite**: rewrites domain of `set-cookie` headers. Possible values:
+ * `false` (default): disable cookie rewriting
+ * String: new domain, for example `cookieDomainRewrite: "new.domain"`. To remove the domain, use `cookieDomainRewrite: ""`.
+ * Object: mapping of domains to new domains, use `"*"` to match all domains.
+ For example keep one domain unchanged, rewrite one domain and remove other domains:
+ ```
+ cookieDomainRewrite: {
+ "unchanged.domain": "unchanged.domain",
+ "old.domain": "new.domain",
+ "*": ""
+ }
+ ```
+* **headers**: object with extra headers to be added to target requests.
+* **proxyTimeout**: timeout (in millis) when proxy receives no response from target
+
+**NOTE:**
+`options.ws` and `options.ssl` are optional.
+`options.target` and `options.forward` cannot both be missing
+
+If you are using the `proxyServer.listen` method, the following options are also applicable:
+
+ * **ssl**: object to be passed to https.createServer()
+ * **ws**: true/false, if you want to proxy websockets
+
+**[Back to top](#table-of-contents)**
+
+### Listening for proxy events
+
+* `error`: The error event is emitted if the request to the target fail. **We do not do any error handling of messages passed between client and proxy, and messages passed between proxy and target, so it is recommended that you listen on errors and handle them.**
+* `proxyReq`: This event is emitted before the data is sent. It gives you a chance to alter the proxyReq request object. Applies to "web" connections
+* `proxyReqWs`: This event is emitted before the data is sent. It gives you a chance to alter the proxyReq request object. Applies to "websocket" connections
+* `proxyRes`: This event is emitted if the request to the target got a response.
+* `open`: This event is emitted once the proxy websocket was created and piped into the target websocket.
+* `close`: This event is emitted once the proxy websocket was closed.
+* (DEPRECATED) `proxySocket`: Deprecated in favor of `open`.
+
+```js
+var httpProxy = require('http-proxy');
+// Error example
+//
+// Http Proxy Server with bad target
+//
+var proxy = httpProxy.createServer({
+ target:'http://localhost:9005'
+});
+
+proxy.listen(8005);
+
+//
+// Listen for the `error` event on `proxy`.
+proxy.on('error', function (err, req, res) {
+ res.writeHead(500, {
+ 'Content-Type': 'text/plain'
+ });
+
+ res.end('Something went wrong. And we are reporting a custom error message.');
+});
+
+//
+// Listen for the `proxyRes` event on `proxy`.
+//
+proxy.on('proxyRes', function (proxyRes, req, res) {
+ console.log('RAW Response from the target', JSON.stringify(proxyRes.headers, true, 2));
+});
+
+//
+// Listen for the `open` event on `proxy`.
+//
+proxy.on('open', function (proxySocket) {
+ // listen for messages coming FROM the target here
+ proxySocket.on('data', hybiParseAndLogMessage);
+});
+
+//
+// Listen for the `close` event on `proxy`.
+//
+proxy.on('close', function (res, socket, head) {
+ // view disconnected websocket connections
+ console.log('Client disconnected');
+});
+```
+
+**[Back to top](#table-of-contents)**
+
+### Shutdown
+
+* When testing or running server within another program it may be necessary to close the proxy.
+* This will stop the proxy from accepting new connections.
+
+```js
+var proxy = new httpProxy.createProxyServer({
+ target: {
+ host: 'localhost',
+ port: 1337
+ }
+});
+
+proxy.close();
+```
+
+**[Back to top](#table-of-contents)**
+
+### Miscellaneous
+
+#### ProxyTable API
+
+A proxy table API is available through this add-on [module](https://github.com/donasaur/http-proxy-rules), which lets you define a set of rules to translate matching routes to target routes that the reverse proxy will talk to.
+
+#### Test
+
+```
+$ npm test
+```
+
+#### Logo
+
+Logo created by [Diego Pasquali](http://dribbble.com/diegopq)
+
+**[Back to top](#table-of-contents)**
+
+### Contributing and Issues
+
+* Search on Google/Github
+* If you can't find anything, open an issue
+* If you feel comfortable about fixing the issue, fork the repo
+* Commit to your local branch (which must be different from `master`)
+* Submit your Pull Request (be sure to include tests and update documentation)
+
+**[Back to top](#table-of-contents)**
+
+### License
+
+>The MIT License (MIT)
+>
+>Copyright (c) 2010 - 2016 Charlie Robbins, Jarrett Cruger & the Contributors.
+>
+>Permission is hereby granted, free of charge, to any person obtaining a copy
+>of this software and associated documentation files (the "Software"), to deal
+>in the Software without restriction, including without limitation the rights
+>to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+>copies of the Software, and to permit persons to whom the Software is
+>furnished to do so, subject to the following conditions:
+>
+>The above copyright notice and this permission notice shall be included in
+>all copies or substantial portions of the Software.
+>
+>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+>IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+>FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+>AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+>LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+>OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+>THE SOFTWARE.
diff --git a/node_modules/http-server/node_modules/http-proxy/index.js b/node_modules/http-server/node_modules/http-proxy/index.js
new file mode 100644
index 00000000..e6fac858
--- /dev/null
+++ b/node_modules/http-server/node_modules/http-proxy/index.js
@@ -0,0 +1,13 @@
+/*!
+ * Caron dimonio, con occhi di bragia
+ * loro accennando, tutte le raccoglie;
+ * batte col remo qualunque sâadagia
+ *
+ * Charon the demon, with the eyes of glede,
+ * Beckoning to them, collects them all together,
+ * Beats with his oar whoever lags behind
+ *
+ * Dante - The Divine Comedy (Canto III)
+ */
+
+module.exports = require('./lib/http-proxy');
\ No newline at end of file
diff --git a/node_modules/http-server/node_modules/http-proxy/lib/http-proxy.js b/node_modules/http-server/node_modules/http-proxy/lib/http-proxy.js
new file mode 100644
index 00000000..7dab7a48
--- /dev/null
+++ b/node_modules/http-server/node_modules/http-proxy/lib/http-proxy.js
@@ -0,0 +1,66 @@
+ // Use explicit /index.js to help browserify negociation in require '/lib/http-proxy' (!)
+var ProxyServer = require('./http-proxy/index.js').Server;
+
+
+/**
+ * Creates the proxy server.
+ *
+ * Examples:
+ *
+ * httpProxy.createProxyServer({ .. }, 8000)
+ * // => '{ web: [Function], ws: [Function] ... }'
+ *
+ * @param {Object} Options Config object passed to the proxy
+ *
+ * @return {Object} Proxy Proxy object with handlers for `ws` and `web` requests
+ *
+ * @api public
+ */
+
+
+function createProxyServer(options) {
+ /*
+ * `options` is needed and it must have the following layout:
+ *
+ * {
+ * target :
+ * forward:
+ * agent :
+ * ssl :
+ * ws :
+ * xfwd :
+ * secure :
+ * toProxy:
+ * prependPath:
+ * ignorePath:
+ * localAddress :
+ * changeOrigin:
+ * preserveHeaderKeyCase:
+ * auth : Basic authentication i.e. 'user:password' to compute an Authorization header.
+ * hostRewrite: rewrites the location hostname on (301/302/307/308) redirects, Default: null.
+ * autoRewrite: rewrites the location host/port on (301/302/307/308) redirects based on requested host/port. Default: false.
+ * protocolRewrite: rewrites the location protocol on (301/302/307/308) redirects to 'http' or 'https'. Default: null.
+ * }
+ *
+ * NOTE: `options.ws` and `options.ssl` are optional.
+ * `options.target and `options.forward` cannot be
+ * both missing
+ * }
+ */
+
+ return new ProxyServer(options);
+}
+
+
+ProxyServer.createProxyServer = createProxyServer;
+ProxyServer.createServer = createProxyServer;
+ProxyServer.createProxy = createProxyServer;
+
+
+
+
+/**
+ * Export the proxy "Server" as the main export.
+ */
+module.exports = ProxyServer;
+
diff --git a/node_modules/http-server/node_modules/http-proxy/lib/http-proxy/common.js b/node_modules/http-server/node_modules/http-proxy/lib/http-proxy/common.js
new file mode 100644
index 00000000..aa970023
--- /dev/null
+++ b/node_modules/http-server/node_modules/http-proxy/lib/http-proxy/common.js
@@ -0,0 +1,249 @@
+var common = exports,
+ url = require('url'),
+ extend = require('util')._extend,
+ required = require('requires-port');
+
+var upgradeHeader = /(^|,)\s*upgrade\s*($|,)/i,
+ isSSL = /^https|wss/,
+ cookieDomainRegex = /(;\s*domain=)([^;]+)/i;
+
+/**
+ * Simple Regex for testing if protocol is https
+ */
+common.isSSL = isSSL;
+/**
+ * Copies the right headers from `options` and `req` to
+ * `outgoing` which is then used to fire the proxied
+ * request.
+ *
+ * Examples:
+ *
+ * common.setupOutgoing(outgoing, options, req)
+ * // => { host: ..., hostname: ...}
+ *
+ * @param {Object} Outgoing Base object to be filled with required properties
+ * @param {Object} Options Config object passed to the proxy
+ * @param {ClientRequest} Req Request Object
+ * @param {String} Forward String to select forward or target
+ *Â
+ * @return {Object} Outgoing Object with all required properties set
+ *
+ * @api private
+ */
+
+common.setupOutgoing = function(outgoing, options, req, forward) {
+ outgoing.port = options[forward || 'target'].port ||
+ (isSSL.test(options[forward || 'target'].protocol) ? 443 : 80);
+
+ ['host', 'hostname', 'socketPath', 'pfx', 'key',
+ 'passphrase', 'cert', 'ca', 'ciphers', 'secureProtocol'].forEach(
+ function(e) { outgoing[e] = options[forward || 'target'][e]; }
+ );
+
+ outgoing.method = req.method;
+ outgoing.headers = extend({}, req.headers);
+
+ if (options.headers){
+ extend(outgoing.headers, options.headers);
+ }
+
+ if (options.auth) {
+ outgoing.auth = options.auth;
+ }
+
+ if (options.ca) {
+ outgoing.ca = options.ca;
+ }
+
+ if (isSSL.test(options[forward || 'target'].protocol)) {
+ outgoing.rejectUnauthorized = (typeof options.secure === "undefined") ? true : options.secure;
+ }
+
+
+ outgoing.agent = options.agent || false;
+ outgoing.localAddress = options.localAddress;
+
+ //
+ // Remark: If we are false and not upgrading, set the connection: close. This is the right thing to do
+ // as node core doesn't handle this COMPLETELY properly yet.
+ //
+ if (!outgoing.agent) {
+ outgoing.headers = outgoing.headers || {};
+ if (typeof outgoing.headers.connection !== 'string'
+ || !upgradeHeader.test(outgoing.headers.connection)
+ ) { outgoing.headers.connection = 'close'; }
+ }
+
+
+ // the final path is target path + relative path requested by user:
+ var target = options[forward || 'target'];
+ var targetPath = target && options.prependPath !== false
+ ? (target.path || '')
+ : '';
+
+ //
+ // Remark: Can we somehow not use url.parse as a perf optimization?
+ //
+ var outgoingPath = !options.toProxy
+ ? (url.parse(req.url).path || '')
+ : req.url;
+
+ //
+ // Remark: ignorePath will just straight up ignore whatever the request's
+ // path is. This can be labeled as FOOT-GUN material if you do not know what
+ // you are doing and are using conflicting options.
+ //
+ outgoingPath = !options.ignorePath ? outgoingPath : '';
+
+ outgoing.path = common.urlJoin(targetPath, outgoingPath);
+
+ if (options.changeOrigin) {
+ outgoing.headers.host =
+ required(outgoing.port, options[forward || 'target'].protocol) && !hasPort(outgoing.host)
+ ? outgoing.host + ':' + outgoing.port
+ : outgoing.host;
+ }
+ return outgoing;
+};
+
+/**
+ * Set the proper configuration for sockets,
+ * set no delay and set keep alive, also set
+ * the timeout to 0.
+ *
+ * Examples:
+ *
+ * common.setupSocket(socket)
+ * // => Socket
+ *
+ * @param {Socket} Socket instance to setup
+ *Â
+ * @return {Socket} Return the configured socket.
+ *
+ * @api private
+ */
+
+common.setupSocket = function(socket) {
+ socket.setTimeout(0);
+ socket.setNoDelay(true);
+
+ socket.setKeepAlive(true, 0);
+
+ return socket;
+};
+
+/**
+ * Get the port number from the host. Or guess it based on the connection type.
+ *
+ * @param {Request} req Incoming HTTP request.
+ *
+ * @return {String} The port number.
+ *
+ * @api private
+ */
+common.getPort = function(req) {
+ var res = req.headers.host ? req.headers.host.match(/:(\d+)/) : '';
+
+ return res ?
+ res[1] :
+ common.hasEncryptedConnection(req) ? '443' : '80';
+};
+
+/**
+ * Check if the request has an encrypted connection.
+ *
+ * @param {Request} req Incoming HTTP request.
+ *
+ * @return {Boolean} Whether the connection is encrypted or not.
+ *
+ * @api private
+ */
+common.hasEncryptedConnection = function(req) {
+ return Boolean(req.connection.encrypted || req.connection.pair);
+};
+
+/**
+ * OS-agnostic join (doesn't break on URLs like path.join does on Windows)>
+ *
+ * @return {String} The generated path.
+ *
+ * @api private
+ */
+
+common.urlJoin = function() {
+ //
+ // We do not want to mess with the query string. All we want to touch is the path.
+ //
+ var args = Array.prototype.slice.call(arguments),
+ lastIndex = args.length - 1,
+ last = args[lastIndex],
+ lastSegs = last.split('?'),
+ retSegs;
+
+ args[lastIndex] = lastSegs.shift();
+
+ //
+ // Join all strings, but remove empty strings so we don't get extra slashes from
+ // joining e.g. ['', 'am']
+ //
+ retSegs = [
+ args.filter(Boolean).join('/')
+ .replace(/\/+/g, '/')
+ .replace('http:/', 'http://')
+ .replace('https:/', 'https://')
+ ];
+
+ // Only join the query string if it exists so we don't have trailing a '?'
+ // on every request
+
+ // Handle case where there could be multiple ? in the URL.
+ retSegs.push.apply(retSegs, lastSegs);
+
+ return retSegs.join('?')
+};
+
+/**
+ * Rewrites or removes the domain of a cookie header
+ *
+ * @param {String|Array} Header
+ * @param {Object} Config, mapping of domain to rewritten domain.
+ * '*' key to match any domain, null value to remove the domain.
+ *
+ * @api private
+ */
+common.rewriteCookieDomain = function rewriteCookieDomain(header, config) {
+ if (Array.isArray(header)) {
+ return header.map(function (headerElement) {
+ return rewriteCookieDomain(headerElement, config);
+ });
+ }
+ return header.replace(cookieDomainRegex, function(match, prefix, previousDomain) {
+ var newDomain;
+ if (previousDomain in config) {
+ newDomain = config[previousDomain];
+ } else if ('*' in config) {
+ newDomain = config['*'];
+ } else {
+ //no match, return previous domain
+ return match;
+ }
+ if (newDomain) {
+ //replace domain
+ return prefix + newDomain;
+ } else {
+ //remove domain
+ return '';
+ }
+ });
+};
+
+/**
+ * Check the host and see if it potentially has a port in it (keep it simple)
+ *
+ * @returns {Boolean} Whether we have one or not
+ *
+ * @api private
+ */
+function hasPort(host) {
+ return !!~host.indexOf(':');
+};
diff --git a/node_modules/http-server/node_modules/http-proxy/lib/http-proxy/index.js b/node_modules/http-server/node_modules/http-proxy/lib/http-proxy/index.js
new file mode 100644
index 00000000..caaa10bd
--- /dev/null
+++ b/node_modules/http-server/node_modules/http-proxy/lib/http-proxy/index.js
@@ -0,0 +1,184 @@
+var httpProxy = module.exports,
+ extend = require('util')._extend,
+ parse_url = require('url').parse,
+ EE3 = require('eventemitter3'),
+ http = require('http'),
+ https = require('https'),
+ web = require('./passes/web-incoming'),
+ ws = require('./passes/ws-incoming');
+
+httpProxy.Server = ProxyServer;
+
+/**
+ * Returns a function that creates the loader for
+ * either `ws` or `web`'s passes.
+ *
+ * Examples:
+ *
+ * httpProxy.createRightProxy('ws')
+ * // => [Function]
+ *
+ * @param {String} Type Either 'ws' or 'web'
+ *Â
+ * @return {Function} Loader Function that when called returns an iterator for the right passes
+ *
+ * @api private
+ */
+
+function createRightProxy(type) {
+
+ return function(options) {
+ return function(req, res /*, [head], [opts] */) {
+ var passes = (type === 'ws') ? this.wsPasses : this.webPasses,
+ args = [].slice.call(arguments),
+ cntr = args.length - 1,
+ head, cbl;
+
+ /* optional args parse begin */
+ if(typeof args[cntr] === 'function') {
+ cbl = args[cntr];
+
+ cntr--;
+ }
+
+ if(
+ !(args[cntr] instanceof Buffer) &&
+ args[cntr] !== res
+ ) {
+ //Copy global options
+ options = extend({}, options);
+ //Overwrite with request options
+ extend(options, args[cntr]);
+
+ cntr--;
+ }
+
+ if(args[cntr] instanceof Buffer) {
+ head = args[cntr];
+ }
+
+ /* optional args parse end */
+
+ ['target', 'forward'].forEach(function(e) {
+ if (typeof options[e] === 'string')
+ options[e] = parse_url(options[e]);
+ });
+
+ if (!options.target && !options.forward) {
+ return this.emit('error', new Error('Must provide a proper URL as target'));
+ }
+
+ for(var i=0; i < passes.length; i++) {
+ /**
+ * Call of passes functions
+ * pass(req, res, options, head)
+ *
+ * In WebSockets case the `res` variable
+ * refer to the connection socket
+ * pass(req, socket, options, head)
+ */
+ if(passes[i](req, res, options, head, this, cbl)) { // passes can return a truthy value to halt the loop
+ break;
+ }
+ }
+ };
+ };
+}
+httpProxy.createRightProxy = createRightProxy;
+
+function ProxyServer(options) {
+ EE3.call(this);
+
+ options = options || {};
+ options.prependPath = options.prependPath === false ? false : true;
+
+ this.web = this.proxyRequest = createRightProxy('web')(options);
+ this.ws = this.proxyWebsocketRequest = createRightProxy('ws')(options);
+ this.options = options;
+
+ this.webPasses = Object.keys(web).map(function(pass) {
+ return web[pass];
+ });
+
+ this.wsPasses = Object.keys(ws).map(function(pass) {
+ return ws[pass];
+ });
+
+ this.on('error', this.onError, this);
+
+}
+
+require('util').inherits(ProxyServer, EE3);
+
+ProxyServer.prototype.onError = function (err) {
+ //
+ // Remark: Replicate node core behavior using EE3
+ // so we force people to handle their own errors
+ //
+ if(this.listeners('error').length === 1) {
+ throw err;
+ }
+};
+
+ProxyServer.prototype.listen = function(port, hostname) {
+ var self = this,
+ closure = function(req, res) { self.web(req, res); };
+
+ this._server = this.options.ssl ?
+ https.createServer(this.options.ssl, closure) :
+ http.createServer(closure);
+
+ if(this.options.ws) {
+ this._server.on('upgrade', function(req, socket, head) { self.ws(req, socket, head); });
+ }
+
+ this._server.listen(port, hostname);
+
+ return this;
+};
+
+ProxyServer.prototype.close = function(callback) {
+ var self = this;
+ if (this._server) {
+ this._server.close(done);
+ }
+
+ // Wrap callback to nullify server after all open connections are closed.
+ function done() {
+ self._server = null;
+ if (callback) {
+ callback.apply(null, arguments);
+ }
+ };
+};
+
+ProxyServer.prototype.before = function(type, passName, callback) {
+ if (type !== 'ws' && type !== 'web') {
+ throw new Error('type must be `web` or `ws`');
+ }
+ var passes = (type === 'ws') ? this.wsPasses : this.webPasses,
+ i = false;
+
+ passes.forEach(function(v, idx) {
+ if(v.name === passName) i = idx;
+ })
+
+ if(i === false) throw new Error('No such pass');
+
+ passes.splice(i, 0, callback);
+};
+ProxyServer.prototype.after = function(type, passName, callback) {
+ if (type !== 'ws' && type !== 'web') {
+ throw new Error('type must be `web` or `ws`');
+ }
+ var passes = (type === 'ws') ? this.wsPasses : this.webPasses,
+ i = false;
+
+ passes.forEach(function(v, idx) {
+ if(v.name === passName) i = idx;
+ })
+
+ if(i === false) throw new Error('No such pass');
+
+ passes.splice(i++, 0, callback);
+};
diff --git a/node_modules/http-server/node_modules/http-proxy/lib/http-proxy/passes/web-incoming.js b/node_modules/http-server/node_modules/http-proxy/lib/http-proxy/passes/web-incoming.js
new file mode 100644
index 00000000..5cb0b03d
--- /dev/null
+++ b/node_modules/http-server/node_modules/http-proxy/lib/http-proxy/passes/web-incoming.js
@@ -0,0 +1,180 @@
+var http = require('http'),
+ https = require('https'),
+ web_o = require('./web-outgoing'),
+ common = require('../common');
+
+web_o = Object.keys(web_o).map(function(pass) {
+ return web_o[pass];
+});
+
+/*!
+ * Array of passes.
+ *
+ * A `pass` is just a function that is executed on `req, res, options`
+ * so that you can easily add new checks while still keeping the base
+ * flexible.
+ */
+
+
+module.exports = {
+
+ /**
+ * Sets `content-length` to '0' if request is of DELETE type.
+ *
+ * @param {ClientRequest} Req Request object
+ *Â @param {IncomingMessage} Res Response object
+ * @param {Object} Options Config object passed to the proxy
+ *
+ * @api private
+ */
+
+ deleteLength: function deleteLength(req, res, options) {
+ if((req.method === 'DELETE' || req.method === 'OPTIONS')
+ && !req.headers['content-length']) {
+ req.headers['content-length'] = '0';
+ delete req.headers['transfer-encoding'];
+ }
+ },
+
+ /**
+ * Sets timeout in request socket if it was specified in options.
+ *
+ * @param {ClientRequest} Req Request object
+ *Â @param {IncomingMessage} Res Response object
+ * @param {Object} Options Config object passed to the proxy
+ *
+ * @api private
+ */
+
+ timeout: function timeout(req, res, options) {
+ if(options.timeout) {
+ req.socket.setTimeout(options.timeout);
+ }
+ },
+
+ /**
+ * Sets `x-forwarded-*` headers if specified in config.
+ *
+ * @param {ClientRequest} Req Request object
+ *Â @param {IncomingMessage} Res Response object
+ * @param {Object} Options Config object passed to the proxy
+ *
+ * @api private
+ */
+
+ XHeaders: function XHeaders(req, res, options) {
+ if(!options.xfwd) return;
+
+ var encrypted = req.isSpdy || common.hasEncryptedConnection(req);
+ var values = {
+ for : req.connection.remoteAddress || req.socket.remoteAddress,
+ port : common.getPort(req),
+ proto: encrypted ? 'https' : 'http'
+ };
+
+ ['for', 'port', 'proto'].forEach(function(header) {
+ req.headers['x-forwarded-' + header] =
+ (req.headers['x-forwarded-' + header] || '') +
+ (req.headers['x-forwarded-' + header] ? ',' : '') +
+ values[header];
+ });
+
+ req.headers['x-forwarded-host'] = req.headers['host'] || '';
+ },
+
+ /**
+ * Does the actual proxying. If `forward` is enabled fires up
+ * a ForwardStream, same happens for ProxyStream. The request
+ * just dies otherwise.
+ *
+ * @param {ClientRequest} Req Request object
+ *Â @param {IncomingMessage} Res Response object
+ * @param {Object} Options Config object passed to the proxy
+ *
+ * @api private
+ */
+
+ stream: function stream(req, res, options, _, server, clb) {
+
+ // And we begin!
+ server.emit('start', req, res, options.target || options.forward);
+
+ if(options.forward) {
+ // If forward enable, so just pipe the request
+ var forwardReq = (options.forward.protocol === 'https:' ? https : http).request(
+ common.setupOutgoing(options.ssl || {}, options, req, 'forward')
+ );
+
+ // error handler (e.g. ECONNRESET, ECONNREFUSED)
+ // Handle errors on incoming request as well as it makes sense to
+ var forwardError = createErrorHandler(forwardReq, options.forward);
+ req.on('error', forwardError);
+ forwardReq.on('error', forwardError);
+
+ (options.buffer || req).pipe(forwardReq);
+ if(!options.target) { return res.end(); }
+ }
+
+ // Request initalization
+ var proxyReq = (options.target.protocol === 'https:' ? https : http).request(
+ common.setupOutgoing(options.ssl || {}, options, req)
+ );
+
+ // Enable developers to modify the proxyReq before headers are sent
+ proxyReq.on('socket', function(socket) {
+ if(server) { server.emit('proxyReq', proxyReq, req, res, options); }
+ });
+
+ // allow outgoing socket to timeout so that we could
+ // show an error page at the initial request
+ if(options.proxyTimeout) {
+ proxyReq.setTimeout(options.proxyTimeout, function() {
+ proxyReq.abort();
+ });
+ }
+
+ // Ensure we abort proxy if request is aborted
+ req.on('aborted', function () {
+ proxyReq.abort();
+ });
+
+ // handle errors in proxy and incoming request, just like for forward proxy
+ var proxyError = createErrorHandler(proxyReq, options.target);
+ req.on('error', proxyError);
+ proxyReq.on('error', proxyError);
+
+ function createErrorHandler(proxyReq, url) {
+ return function proxyError(err) {
+ if (req.socket.destroyed && err.code === 'ECONNRESET') {
+ server.emit('econnreset', err, req, res, url);
+ return proxyReq.abort();
+ }
+
+ if (clb) {
+ clb(err, req, res, url);
+ } else {
+ server.emit('error', err, req, res, url);
+ }
+ }
+ }
+
+ (options.buffer || req).pipe(proxyReq);
+
+ proxyReq.on('response', function(proxyRes) {
+ if(server) { server.emit('proxyRes', proxyRes, req, res); }
+ for(var i=0; i < web_o.length; i++) {
+ if(web_o[i](req, res, proxyRes, options)) { break; }
+ }
+
+ // Allow us to listen when the proxy has completed
+ proxyRes.on('end', function () {
+ server.emit('end', req, res, proxyRes);
+ });
+
+ proxyRes.pipe(res);
+ });
+
+ //proxyReq.end();
+ }
+
+};
diff --git a/node_modules/http-server/node_modules/http-proxy/lib/http-proxy/passes/web-outgoing.js b/node_modules/http-server/node_modules/http-proxy/lib/http-proxy/passes/web-outgoing.js
new file mode 100644
index 00000000..cff86a70
--- /dev/null
+++ b/node_modules/http-server/node_modules/http-proxy/lib/http-proxy/passes/web-outgoing.js
@@ -0,0 +1,138 @@
+var url = require('url'),
+ common = require('../common');
+
+
+var redirectRegex = /^201|30(1|2|7|8)$/;
+
+/*!
+ * Array of passes.
+ *
+ * A `pass` is just a function that is executed on `req, res, options`
+ * so that you can easily add new checks while still keeping the base
+ * flexible.
+ */
+
+module.exports = { // <--
+
+ /**
+ * If is a HTTP 1.0 request, remove chunk headers
+ *
+ * @param {ClientRequest} Req Request object
+ *Â @param {IncomingMessage} Res Response object
+ * @param {proxyResponse} Res Response object from the proxy request
+ *
+ * @api private
+ */
+ removeChunked: function removeChunked(req, res, proxyRes) {
+ if (req.httpVersion === '1.0') {
+ delete proxyRes.headers['transfer-encoding'];
+ }
+ },
+
+ /**
+ * If is a HTTP 1.0 request, set the correct connection header
+ * or if connection header not present, then use `keep-alive`
+ *
+ * @param {ClientRequest} Req Request object
+ *Â @param {IncomingMessage} Res Response object
+ * @param {proxyResponse} Res Response object from the proxy request
+ *
+ * @api private
+ */
+ setConnection: function setConnection(req, res, proxyRes) {
+ if (req.httpVersion === '1.0') {
+ proxyRes.headers.connection = req.headers.connection || 'close';
+ } else if (req.httpVersion !== '2.0' && !proxyRes.headers.connection) {
+ proxyRes.headers.connection = req.headers.connection || 'keep-alive';
+ }
+ },
+
+ setRedirectHostRewrite: function setRedirectHostRewrite(req, res, proxyRes, options) {
+ if ((options.hostRewrite || options.autoRewrite || options.protocolRewrite)
+ && proxyRes.headers['location']
+ && redirectRegex.test(proxyRes.statusCode)) {
+ var target = url.parse(options.target);
+ var u = url.parse(proxyRes.headers['location']);
+
+ // make sure the redirected host matches the target host before rewriting
+ if (target.host != u.host) {
+ return;
+ }
+
+ if (options.hostRewrite) {
+ u.host = options.hostRewrite;
+ } else if (options.autoRewrite) {
+ u.host = req.headers['host'];
+ }
+ if (options.protocolRewrite) {
+ u.protocol = options.protocolRewrite;
+ }
+
+ proxyRes.headers['location'] = u.format();
+ }
+ },
+ /**
+ * Copy headers from proxyResponse to response
+ * set each header in response object.
+ *
+ * @param {ClientRequest} Req Request object
+ *Â @param {IncomingMessage} Res Response object
+ * @param {proxyResponse} Res Response object from the proxy request
+ * @param {Object} Options options.cookieDomainRewrite: Config to rewrite cookie domain
+ *
+ * @api private
+ */
+ writeHeaders: function writeHeaders(req, res, proxyRes, options) {
+ var rewriteCookieDomainConfig = options.cookieDomainRewrite,
+ preserveHeaderKeyCase = options.preserveHeaderKeyCase,
+ rawHeaderKeyMap,
+ setHeader = function(key, header) {
+ if (header == undefined) return;
+ if (rewriteCookieDomainConfig && key.toLowerCase() === 'set-cookie') {
+ header = common.rewriteCookieDomain(header, rewriteCookieDomainConfig);
+ }
+ res.setHeader(String(key).trim(), header);
+ };
+
+ if (typeof rewriteCookieDomainConfig === 'string') { //also test for ''
+ rewriteCookieDomainConfig = { '*': rewriteCookieDomainConfig };
+ }
+
+ // message.rawHeaders is added in: v0.11.6
+ // https://nodejs.org/api/http.html#http_message_rawheaders
+ if (preserveHeaderKeyCase && proxyRes.rawHeaders != undefined) {
+ rawHeaderKeyMap = {};
+ for (var i = 0; i < proxyRes.rawHeaders.length; i += 2) {
+ var key = proxyRes.rawHeaders[i];
+ rawHeaderKeyMap[key.toLowerCase()] = key;
+ }
+ }
+
+ Object.keys(proxyRes.headers).forEach(function(key) {
+ var header = proxyRes.headers[key];
+ if (preserveHeaderKeyCase && rawHeaderKeyMap) {
+ key = rawHeaderKeyMap[key] || key;
+ }
+ setHeader(key, header);
+ });
+ },
+
+ /**
+ * Set the statusCode from the proxyResponse
+ *
+ * @param {ClientRequest} Req Request object
+ *Â @param {IncomingMessage} Res Response object
+ * @param {proxyResponse} Res Response object from the proxy request
+ *
+ * @api private
+ */
+ writeStatusCode: function writeStatusCode(req, res, proxyRes) {
+ // From Node.js docs: response.writeHead(statusCode[, statusMessage][, headers])
+ if(proxyRes.statusMessage) {
+ res.writeHead(proxyRes.statusCode, proxyRes.statusMessage);
+ } else {
+ res.writeHead(proxyRes.statusCode);
+ }
+ }
+
+};
diff --git a/node_modules/http-server/node_modules/http-proxy/lib/http-proxy/passes/ws-incoming.js b/node_modules/http-server/node_modules/http-proxy/lib/http-proxy/passes/ws-incoming.js
new file mode 100644
index 00000000..cf3796cd
--- /dev/null
+++ b/node_modules/http-server/node_modules/http-proxy/lib/http-proxy/passes/ws-incoming.js
@@ -0,0 +1,156 @@
+var http = require('http'),
+ https = require('https'),
+ common = require('../common');
+
+/*!
+ * Array of passes.
+ *
+ * A `pass` is just a function that is executed on `req, socket, options`
+ * so that you can easily add new checks while still keeping the base
+ * flexible.
+ */
+
+/*
+ * Websockets Passes
+ *
+ */
+
+
+module.exports = {
+ /**
+ * WebSocket requests must have the `GET` method and
+ * the `upgrade:websocket` header
+ *
+ * @param {ClientRequest} Req Request object
+ *Â @param {Socket} Websocket
+ *
+ * @api private
+ */
+
+ checkMethodAndHeader : function checkMethodAndHeader(req, socket) {
+ if (req.method !== 'GET' || !req.headers.upgrade) {
+ socket.destroy();
+ return true;
+ }
+
+ if (req.headers.upgrade.toLowerCase() !== 'websocket') {
+ socket.destroy();
+ return true;
+ }
+ },
+
+ /**
+ * Sets `x-forwarded-*` headers if specified in config.
+ *
+ * @param {ClientRequest} Req Request object
+ *Â @param {Socket} Websocket
+ * @param {Object} Options Config object passed to the proxy
+ *
+ * @api private
+ */
+
+ XHeaders : function XHeaders(req, socket, options) {
+ if(!options.xfwd) return;
+
+ var values = {
+ for : req.connection.remoteAddress || req.socket.remoteAddress,
+ port : common.getPort(req),
+ proto: common.hasEncryptedConnection(req) ? 'wss' : 'ws'
+ };
+
+ ['for', 'port', 'proto'].forEach(function(header) {
+ req.headers['x-forwarded-' + header] =
+ (req.headers['x-forwarded-' + header] || '') +
+ (req.headers['x-forwarded-' + header] ? ',' : '') +
+ values[header];
+ });
+ },
+
+ /**
+ * Does the actual proxying. Make the request and upgrade it
+ * send the Switching Protocols request and pipe the sockets.
+ *
+ * @param {ClientRequest} Req Request object
+ *Â @param {Socket} Websocket
+ * @param {Object} Options Config object passed to the proxy
+ *
+ * @api private
+ */
+ stream : function stream(req, socket, options, head, server, clb) {
+ common.setupSocket(socket);
+
+ if (head && head.length) socket.unshift(head);
+
+
+ var proxyReq = (common.isSSL.test(options.target.protocol) ? https : http).request(
+ common.setupOutgoing(options.ssl || {}, options, req)
+ );
+
+ // Enable developers to modify the proxyReq before headers are sent
+ if (server) { server.emit('proxyReqWs', proxyReq, req, socket, options, head); }
+
+ // Error Handler
+ proxyReq.on('error', onOutgoingError);
+ proxyReq.on('response', function (res) {
+ // if upgrade event isn't going to happen, close the socket
+ if (!res.upgrade) socket.end();
+ });
+
+ proxyReq.on('upgrade', function(proxyRes, proxySocket, proxyHead) {
+ proxySocket.on('error', onOutgoingError);
+
+ // Allow us to listen when the websocket has completed
+ proxySocket.on('end', function () {
+ server.emit('close', proxyRes, proxySocket, proxyHead);
+ });
+
+ // The pipe below will end proxySocket if socket closes cleanly, but not
+ // if it errors (eg, vanishes from the net and starts returning
+ // EHOSTUNREACH). We need to do that explicitly.
+ socket.on('error', function () {
+ proxySocket.end();
+ });
+
+ common.setupSocket(proxySocket);
+
+ if (proxyHead && proxyHead.length) proxySocket.unshift(proxyHead);
+
+ //
+ // Remark: Handle writing the headers to the socket when switching protocols
+ // Also handles when a header is an array
+ //
+ socket.write(
+ Object.keys(proxyRes.headers).reduce(function (head, key) {
+ var value = proxyRes.headers[key];
+
+ if (!Array.isArray(value)) {
+ head.push(key + ': ' + value);
+ return head;
+ }
+
+ for (var i = 0; i < value.length; i++) {
+ head.push(key + ': ' + value[i]);
+ }
+ return head;
+ }, ['HTTP/1.1 101 Switching Protocols'])
+ .join('\r\n') + '\r\n\r\n'
+ );
+
+ proxySocket.pipe(socket).pipe(proxySocket);
+
+ server.emit('open', proxySocket);
+ server.emit('proxySocket', proxySocket); //DEPRECATED.
+ });
+
+ return proxyReq.end(); // XXX: CHECK IF THIS IS THIS CORRECT
+
+ function onOutgoingError(err) {
+ if (clb) {
+ clb(err, req, socket);
+ } else {
+ server.emit('error', err, req, socket);
+ }
+ socket.end();
+ }
+ }
+};
diff --git a/node_modules/http-server/node_modules/http-proxy/node_modules/eventemitter3/LICENSE b/node_modules/http-server/node_modules/http-proxy/node_modules/eventemitter3/LICENSE
new file mode 100644
index 00000000..abcbd54e
--- /dev/null
+++ b/node_modules/http-server/node_modules/http-proxy/node_modules/eventemitter3/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014 Arnout Kazemier
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/http-server/node_modules/http-proxy/node_modules/eventemitter3/README.md b/node_modules/http-server/node_modules/http-proxy/node_modules/eventemitter3/README.md
new file mode 100644
index 00000000..ff209654
--- /dev/null
+++ b/node_modules/http-server/node_modules/http-proxy/node_modules/eventemitter3/README.md
@@ -0,0 +1,89 @@
+# EventEmitter3
+
+[](http://browsenpm.org/package/eventemitter3)[](https://travis-ci.org/primus/eventemitter3)[](https://david-dm.org/primus/eventemitter3)[](https://coveralls.io/r/primus/eventemitter3?branch=master)[](https://webchat.freenode.net/?channels=primus)
+
+[](https://saucelabs.com/u/eventemitter3)
+
+EventEmitter3 is a high performance EventEmitter. It has been micro-optimized
+for various of code paths making this, one of, if not the fastest EventEmitter
+available for Node.js and browsers. The module is API compatible with the
+EventEmitter that ships by default with Node.js but there are some slight
+differences:
+
+- Domain support has been removed.
+- We do not `throw` an error when you emit an `error` event and nobody is
+ listening.
+- The `newListener` event is removed as the use-cases for this functionality are
+ really just edge cases.
+- No `setMaxListeners` and it's pointless memory leak warnings. If you want to
+ add `end` listeners you should be able to do that without modules complaining.
+- No `listenerCount` function. Use `EE.listeners(event).length` instead.
+- Support for custom context for events so there is no need to use `fn.bind`.
+- `listeners` method can do existence checking instead of returning only arrays.
+
+It's a drop in replacement for existing EventEmitters, but just faster. Free
+performance, who wouldn't want that? The EventEmitter is written in EcmaScript 3
+so it will work in the oldest browsers and node versions that you need to
+support.
+
+## Installation
+
+```bash
+$ npm install --save eventemitter3 # npm
+$ component install primus/eventemitter3 # Component
+$ bower install eventemitter3 # Bower
+```
+
+## Usage
+
+After installation the only thing you need to do is require the module:
+
+```js
+var EventEmitter = require('eventemitter3');
+```
+
+And you're ready to create your own EventEmitter instances. For the API
+documentation, please follow the official Node.js documentation:
+
+http://nodejs.org/api/events.html
+
+### Contextual emits
+
+We've upgraded the API of the `EventEmitter.on`, `EventEmitter.once` and
+`EventEmitter.removeListener` to accept an extra argument which is the `context`
+or `this` value that should be set for the emitted events. This means you no
+longer have the overhead of an event that required `fn.bind` in order to get a
+custom `this` value.
+
+```js
+var EE = new EventEmitter()
+ , context = { foo: 'bar' };
+
+function emitted() {
+ console.log(this === context); // true
+}
+
+EE.once('event-name', emitted, context);
+EE.on('another-event', emitted, context);
+EE.removeListener('another-event', emitted, context);
+```
+
+### Existence
+
+To check if there is already a listener for a given event you can supply the
+`listeners` method with an extra boolean argument. This will transform the
+output from an array, to a boolean value which indicates if there are listeners
+in place for the given event:
+
+```js
+var EE = new EventEmitter();
+EE.once('event-name', function () {});
+EE.on('another-event', function () {});
+
+EE.listeners('event-name', true); // returns true
+EE.listeners('unknown-name', true); // returns false
+```
+
+## License
+
+[MIT](LICENSE)
diff --git a/node_modules/http-server/node_modules/http-proxy/node_modules/eventemitter3/index.js b/node_modules/http-server/node_modules/http-proxy/node_modules/eventemitter3/index.js
new file mode 100644
index 00000000..40819dfe
--- /dev/null
+++ b/node_modules/http-server/node_modules/http-proxy/node_modules/eventemitter3/index.js
@@ -0,0 +1,289 @@
+'use strict';
+
+var has = Object.prototype.hasOwnProperty;
+
+//
+// We store our EE objects in a plain object whose properties are event names.
+// If `Object.create(null)` is not supported we prefix the event names with a
+// `~` to make sure that the built-in object properties are not overridden or
+// used as an attack vector.
+// We also assume that `Object.create(null)` is available when the event name
+// is an ES6 Symbol.
+//
+var prefix = typeof Object.create !== 'function' ? '~' : false;
+
+/**
+ * Representation of a single EventEmitter function.
+ *
+ * @param {Function} fn Event handler to be called.
+ * @param {Mixed} context Context for function execution.
+ * @param {Boolean} [once=false] Only emit once
+ * @api private
+ */
+function EE(fn, context, once) {
+ this.fn = fn;
+ this.context = context;
+ this.once = once || false;
+}
+
+/**
+ * Minimal EventEmitter interface that is molded against the Node.js
+ * EventEmitter interface.
+ *
+ * @constructor
+ * @api public
+ */
+function EventEmitter() { /* Nothing to set */ }
+
+/**
+ * Hold the assigned EventEmitters by name.
+ *
+ * @type {Object}
+ * @private
+ */
+EventEmitter.prototype._events = undefined;
+
+/**
+ * Return an array listing the events for which the emitter has registered
+ * listeners.
+ *
+ * @returns {Array}
+ * @api public
+ */
+EventEmitter.prototype.eventNames = function eventNames() {
+ var events = this._events
+ , names = []
+ , name;
+
+ if (!events) return names;
+
+ for (name in events) {
+ if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);
+ }
+
+ if (Object.getOwnPropertySymbols) {
+ return names.concat(Object.getOwnPropertySymbols(events));
+ }
+
+ return names;
+};
+
+/**
+ * Return a list of assigned event listeners.
+ *
+ * @param {String} event The events that should be listed.
+ * @param {Boolean} exists We only need to know if there are listeners.
+ * @returns {Array|Boolean}
+ * @api public
+ */
+EventEmitter.prototype.listeners = function listeners(event, exists) {
+ var evt = prefix ? prefix + event : event
+ , available = this._events && this._events[evt];
+
+ if (exists) return !!available;
+ if (!available) return [];
+ if (available.fn) return [available.fn];
+
+ for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {
+ ee[i] = available[i].fn;
+ }
+
+ return ee;
+};
+
+/**
+ * Emit an event to all registered event listeners.
+ *
+ * @param {String} event The name of the event.
+ * @returns {Boolean} Indication if we've emitted an event.
+ * @api public
+ */
+EventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {
+ var evt = prefix ? prefix + event : event;
+
+ if (!this._events || !this._events[evt]) return false;
+
+ var listeners = this._events[evt]
+ , len = arguments.length
+ , args
+ , i;
+
+ if ('function' === typeof listeners.fn) {
+ if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);
+
+ switch (len) {
+ case 1: return listeners.fn.call(listeners.context), true;
+ case 2: return listeners.fn.call(listeners.context, a1), true;
+ case 3: return listeners.fn.call(listeners.context, a1, a2), true;
+ case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;
+ case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;
+ case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;
+ }
+
+ for (i = 1, args = new Array(len -1); i < len; i++) {
+ args[i - 1] = arguments[i];
+ }
+
+ listeners.fn.apply(listeners.context, args);
+ } else {
+ var length = listeners.length
+ , j;
+
+ for (i = 0; i < length; i++) {
+ if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);
+
+ switch (len) {
+ case 1: listeners[i].fn.call(listeners[i].context); break;
+ case 2: listeners[i].fn.call(listeners[i].context, a1); break;
+ case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;
+ default:
+ if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {
+ args[j - 1] = arguments[j];
+ }
+
+ listeners[i].fn.apply(listeners[i].context, args);
+ }
+ }
+ }
+
+ return true;
+};
+
+/**
+ * Register a new EventListener for the given event.
+ *
+ * @param {String} event Name of the event.
+ * @param {Function} fn Callback function.
+ * @param {Mixed} [context=this] The context of the function.
+ * @api public
+ */
+EventEmitter.prototype.on = function on(event, fn, context) {
+ var listener = new EE(fn, context || this)
+ , evt = prefix ? prefix + event : event;
+
+ if (!this._events) this._events = prefix ? {} : Object.create(null);
+ if (!this._events[evt]) this._events[evt] = listener;
+ else {
+ if (!this._events[evt].fn) this._events[evt].push(listener);
+ else this._events[evt] = [
+ this._events[evt], listener
+ ];
+ }
+
+ return this;
+};
+
+/**
+ * Add an EventListener that's only called once.
+ *
+ * @param {String} event Name of the event.
+ * @param {Function} fn Callback function.
+ * @param {Mixed} [context=this] The context of the function.
+ * @api public
+ */
+EventEmitter.prototype.once = function once(event, fn, context) {
+ var listener = new EE(fn, context || this, true)
+ , evt = prefix ? prefix + event : event;
+
+ if (!this._events) this._events = prefix ? {} : Object.create(null);
+ if (!this._events[evt]) this._events[evt] = listener;
+ else {
+ if (!this._events[evt].fn) this._events[evt].push(listener);
+ else this._events[evt] = [
+ this._events[evt], listener
+ ];
+ }
+
+ return this;
+};
+
+/**
+ * Remove event listeners.
+ *
+ * @param {String} event The event we want to remove.
+ * @param {Function} fn The listener that we need to find.
+ * @param {Mixed} context Only remove listeners matching this context.
+ * @param {Boolean} once Only remove once listeners.
+ * @api public
+ */
+EventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {
+ var evt = prefix ? prefix + event : event;
+
+ if (!this._events || !this._events[evt]) return this;
+
+ var listeners = this._events[evt]
+ , events = [];
+
+ if (fn) {
+ if (listeners.fn) {
+ if (
+ listeners.fn !== fn
+ || (once && !listeners.once)
+ || (context && listeners.context !== context)
+ ) {
+ events.push(listeners);
+ }
+ } else {
+ for (var i = 0, length = listeners.length; i < length; i++) {
+ if (
+ listeners[i].fn !== fn
+ || (once && !listeners[i].once)
+ || (context && listeners[i].context !== context)
+ ) {
+ events.push(listeners[i]);
+ }
+ }
+ }
+ }
+
+ //
+ // Reset the array, or remove it completely if we have no more listeners.
+ //
+ if (events.length) {
+ this._events[evt] = events.length === 1 ? events[0] : events;
+ } else {
+ delete this._events[evt];
+ }
+
+ return this;
+};
+
+/**
+ * Remove all listeners or only the listeners for the specified event.
+ *
+ * @param {String} event The event want to remove all listeners for.
+ * @api public
+ */
+EventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {
+ if (!this._events) return this;
+
+ if (event) delete this._events[prefix ? prefix + event : event];
+ else this._events = prefix ? {} : Object.create(null);
+
+ return this;
+};
+
+//
+// Alias methods names because people roll like that.
+//
+EventEmitter.prototype.off = EventEmitter.prototype.removeListener;
+EventEmitter.prototype.addListener = EventEmitter.prototype.on;
+
+//
+// This function doesn't apply anymore.
+//
+EventEmitter.prototype.setMaxListeners = function setMaxListeners() {
+ return this;
+};
+
+//
+// Expose the prefix.
+//
+EventEmitter.prefixed = prefix;
+
+//
+// Expose the module.
+//
+if ('undefined' !== typeof module) {
+ module.exports = EventEmitter;
+}
diff --git a/node_modules/http-server/node_modules/http-proxy/node_modules/eventemitter3/package.json b/node_modules/http-server/node_modules/http-proxy/node_modules/eventemitter3/package.json
new file mode 100644
index 00000000..4a8f63ba
--- /dev/null
+++ b/node_modules/http-server/node_modules/http-proxy/node_modules/eventemitter3/package.json
@@ -0,0 +1,85 @@
+{
+ "name": "eventemitter3",
+ "version": "1.2.0",
+ "description": "EventEmitter3 focuses on performance while maintaining a Node.js AND browser compatible interface.",
+ "main": "index.js",
+ "scripts": {
+ "test-node": "istanbul cover _mocha --report lcovonly -- test.js",
+ "coverage": "istanbul cover _mocha -- test.js",
+ "test-browser": "zuul -- test.js",
+ "sync": "node versions.js",
+ "test": "mocha test.js"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/primus/eventemitter3.git"
+ },
+ "keywords": [
+ "EventEmitter",
+ "EventEmitter2",
+ "EventEmitter3",
+ "Events",
+ "addEventListener",
+ "addListener",
+ "emit",
+ "emits",
+ "emitter",
+ "event",
+ "once",
+ "pub/sub",
+ "publish",
+ "reactor",
+ "subscribe"
+ ],
+ "author": {
+ "name": "Arnout Kazemier"
+ },
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/primus/eventemitter3/issues"
+ },
+ "pre-commit": "sync, test",
+ "devDependencies": {
+ "assume": "1.3.x",
+ "istanbul": "0.4.x",
+ "mocha": "2.4.x",
+ "pre-commit": "1.1.x",
+ "zuul": "3.10.x"
+ },
+ "gitHead": "c78d597fed80952c259b916c0a1f4dca91d940e4",
+ "homepage": "https://github.com/primus/eventemitter3#readme",
+ "_id": "eventemitter3@1.2.0",
+ "_shasum": "1c86991d816ad1e504750e73874224ecf3bec508",
+ "_from": "eventemitter3@>=1.0.0 <2.0.0",
+ "_npmVersion": "3.8.0",
+ "_nodeVersion": "4.3.1",
+ "_npmUser": {
+ "name": "3rdeden",
+ "email": "npm@3rd-Eden.com"
+ },
+ "maintainers": [
+ {
+ "name": "v1",
+ "email": "npm@3rd-Eden.com"
+ },
+ {
+ "name": "3rdeden",
+ "email": "npm@3rd-Eden.com"
+ },
+ {
+ "name": "lpinca",
+ "email": "luigipinca@gmail.com"
+ }
+ ],
+ "dist": {
+ "shasum": "1c86991d816ad1e504750e73874224ecf3bec508",
+ "tarball": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz"
+ },
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/eventemitter3-1.2.0.tgz_1458148661717_0.1867425285745412"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/node_modules/http-server/node_modules/http-proxy/node_modules/requires-port/.npmignore b/node_modules/http-server/node_modules/http-proxy/node_modules/requires-port/.npmignore
new file mode 100644
index 00000000..ba2a97b5
--- /dev/null
+++ b/node_modules/http-server/node_modules/http-proxy/node_modules/requires-port/.npmignore
@@ -0,0 +1,2 @@
+node_modules
+coverage
diff --git a/node_modules/http-server/node_modules/http-proxy/node_modules/requires-port/.travis.yml b/node_modules/http-server/node_modules/http-proxy/node_modules/requires-port/.travis.yml
new file mode 100644
index 00000000..0765106a
--- /dev/null
+++ b/node_modules/http-server/node_modules/http-proxy/node_modules/requires-port/.travis.yml
@@ -0,0 +1,19 @@
+sudo: false
+language: node_js
+node_js:
+ - "4"
+ - "iojs"
+ - "0.12"
+ - "0.10"
+script:
+ - "npm run test-travis"
+after_script:
+ - "npm install coveralls@2 && cat coverage/lcov.info | coveralls"
+matrix:
+ fast_finish: true
+notifications:
+ irc:
+ channels:
+ - "irc.freenode.org#unshift"
+ on_success: change
+ on_failure: change
diff --git a/node_modules/http-server/node_modules/http-proxy/node_modules/requires-port/LICENSE b/node_modules/http-server/node_modules/http-proxy/node_modules/requires-port/LICENSE
new file mode 100644
index 00000000..6dc9316a
--- /dev/null
+++ b/node_modules/http-server/node_modules/http-proxy/node_modules/requires-port/LICENSE
@@ -0,0 +1,22 @@
+The MIT License (MIT)
+
+Copyright (c) 2015 Unshift.io, Arnout Kazemier, the Contributors.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
diff --git a/node_modules/http-server/node_modules/http-proxy/node_modules/requires-port/README.md b/node_modules/http-server/node_modules/http-proxy/node_modules/requires-port/README.md
new file mode 100644
index 00000000..3effe759
--- /dev/null
+++ b/node_modules/http-server/node_modules/http-proxy/node_modules/requires-port/README.md
@@ -0,0 +1,47 @@
+# requires-port
+
+[](http://unshift.io)[](http://browsenpm.org/package/requires-port)[](https://travis-ci.org/unshiftio/requires-port)[](https://david-dm.org/unshiftio/requires-port)[](https://coveralls.io/r/unshiftio/requires-port?branch=master)[](http://webchat.freenode.net/?channels=unshift)
+
+The module name says it all, check if a protocol requires a given port.
+
+## Installation
+
+This module is intended to be used with browserify or Node.js and is distributed
+in the public npm registry. To install it simply run the following command from
+your CLI:
+
+```j
+npm install --save requires-port
+```
+
+## Usage
+
+The module exports it self as function and requires 2 arguments:
+
+1. The port number, can be a string or number.
+2. Protocol, can be `http`, `http:` or even `https://yomoma.com`. We just split
+ it at `:` and use the first result. We currently accept the following
+ protocols:
+ - `http`
+ - `https`
+ - `ws`
+ - `wss`
+ - `ftp`
+ - `gopher`
+ - `file`
+
+It returns a boolean that indicates if protocol requires this port to be added
+to your URL.
+
+```js
+'use strict';
+
+var required = require('requires-port');
+
+console.log(required('8080', 'http')) // true
+console.log(required('80', 'http')) // false
+```
+
+# License
+
+MIT
diff --git a/node_modules/http-server/node_modules/http-proxy/node_modules/requires-port/index.js b/node_modules/http-server/node_modules/http-proxy/node_modules/requires-port/index.js
new file mode 100644
index 00000000..4f267b26
--- /dev/null
+++ b/node_modules/http-server/node_modules/http-proxy/node_modules/requires-port/index.js
@@ -0,0 +1,38 @@
+'use strict';
+
+/**
+ * Check if we're required to add a port number.
+ *
+ * @see https://url.spec.whatwg.org/#default-port
+ * @param {Number|String} port Port number we need to check
+ * @param {String} protocol Protocol we need to check against.
+ * @returns {Boolean} Is it a default port for the given protocol
+ * @api private
+ */
+module.exports = function required(port, protocol) {
+ protocol = protocol.split(':')[0];
+ port = +port;
+
+ if (!port) return false;
+
+ switch (protocol) {
+ case 'http':
+ case 'ws':
+ return port !== 80;
+
+ case 'https':
+ case 'wss':
+ return port !== 443;
+
+ case 'ftp':
+ return port !== 21;
+
+ case 'gopher':
+ return port !== 70;
+
+ case 'file':
+ return false;
+ }
+
+ return port !== 0;
+};
diff --git a/node_modules/http-server/node_modules/http-proxy/node_modules/requires-port/package.json b/node_modules/http-server/node_modules/http-proxy/node_modules/requires-port/package.json
new file mode 100644
index 00000000..549a88a8
--- /dev/null
+++ b/node_modules/http-server/node_modules/http-proxy/node_modules/requires-port/package.json
@@ -0,0 +1,76 @@
+{
+ "name": "requires-port",
+ "version": "1.0.0",
+ "description": "Check if a protocol requires a certain port number to be added to an URL.",
+ "main": "index.js",
+ "scripts": {
+ "100%": "istanbul check-coverage --statements 100 --functions 100 --lines 100 --branches 100",
+ "test-travis": "istanbul cover _mocha --report lcovonly -- test.js",
+ "coverage": "istanbul cover _mocha -- test.js",
+ "watch": "mocha --watch test.js",
+ "test": "mocha test.js"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/unshiftio/requires-port.git"
+ },
+ "keywords": [
+ "port",
+ "require",
+ "http",
+ "https",
+ "ws",
+ "wss",
+ "gopher",
+ "file",
+ "ftp",
+ "requires",
+ "requried",
+ "portnumber",
+ "url",
+ "parsing",
+ "validation",
+ "cows"
+ ],
+ "author": {
+ "name": "Arnout Kazemier"
+ },
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/unshiftio/requires-port/issues"
+ },
+ "homepage": "https://github.com/unshiftio/requires-port",
+ "devDependencies": {
+ "assume": "1.3.x",
+ "istanbul": "0.4.x",
+ "mocha": "2.3.x",
+ "pre-commit": "1.1.x"
+ },
+ "gitHead": "3a552b935dd2ddba8f2ddf9096932f0f2024edfd",
+ "_id": "requires-port@1.0.0",
+ "_shasum": "925d2601d39ac485e091cf0da5c6e694dc3dcaff",
+ "_from": "requires-port@>=1.0.0 <2.0.0",
+ "_npmVersion": "2.14.3",
+ "_nodeVersion": "0.12.3",
+ "_npmUser": {
+ "name": "3rdeden",
+ "email": "npm@3rd-Eden.com"
+ },
+ "maintainers": [
+ {
+ "name": "v1",
+ "email": "info@3rd-Eden.com"
+ },
+ {
+ "name": "3rdeden",
+ "email": "npm@3rd-Eden.com"
+ }
+ ],
+ "dist": {
+ "shasum": "925d2601d39ac485e091cf0da5c6e694dc3dcaff",
+ "tarball": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/node_modules/http-server/node_modules/http-proxy/node_modules/requires-port/test.js b/node_modules/http-server/node_modules/http-proxy/node_modules/requires-port/test.js
new file mode 100644
index 00000000..93a0c749
--- /dev/null
+++ b/node_modules/http-server/node_modules/http-proxy/node_modules/requires-port/test.js
@@ -0,0 +1,98 @@
+describe('requires-port', function () {
+ 'use strict';
+
+ var assume = require('assume')
+ , required = require('./');
+
+ it('is exported as a function', function () {
+ assume(required).is.a('function');
+ });
+
+ it('does not require empty ports', function () {
+ assume(required('', 'http')).false();
+ assume(required('', 'wss')).false();
+ assume(required('', 'ws')).false();
+ assume(required('', 'cowsack')).false();
+ });
+
+ it('assumes true for unknown protocols',function () {
+ assume(required('808', 'foo')).true();
+ assume(required('80', 'bar')).true();
+ });
+
+ it('never requires port numbers for file', function () {
+ assume(required(8080, 'file')).false();
+ });
+
+ it('does not require port 80 for http', function () {
+ assume(required('80', 'http')).false();
+ assume(required(80, 'http')).false();
+ assume(required(80, 'http://')).false();
+ assume(required(80, 'http://www.google.com')).false();
+
+ assume(required('8080', 'http')).true();
+ assume(required(8080, 'http')).true();
+ assume(required(8080, 'http://')).true();
+ assume(required(8080, 'http://www.google.com')).true();
+ });
+
+ it('does not require port 80 for ws', function () {
+ assume(required('80', 'ws')).false();
+ assume(required(80, 'ws')).false();
+ assume(required(80, 'ws://')).false();
+ assume(required(80, 'ws://www.google.com')).false();
+
+ assume(required('8080', 'ws')).true();
+ assume(required(8080, 'ws')).true();
+ assume(required(8080, 'ws://')).true();
+ assume(required(8080, 'ws://www.google.com')).true();
+ });
+
+ it('does not require port 443 for https', function () {
+ assume(required('443', 'https')).false();
+ assume(required(443, 'https')).false();
+ assume(required(443, 'https://')).false();
+ assume(required(443, 'https://www.google.com')).false();
+
+ assume(required('8080', 'https')).true();
+ assume(required(8080, 'https')).true();
+ assume(required(8080, 'https://')).true();
+ assume(required(8080, 'https://www.google.com')).true();
+ });
+
+ it('does not require port 443 for wss', function () {
+ assume(required('443', 'wss')).false();
+ assume(required(443, 'wss')).false();
+ assume(required(443, 'wss://')).false();
+ assume(required(443, 'wss://www.google.com')).false();
+
+ assume(required('8080', 'wss')).true();
+ assume(required(8080, 'wss')).true();
+ assume(required(8080, 'wss://')).true();
+ assume(required(8080, 'wss://www.google.com')).true();
+ });
+
+ it('does not require port 21 for ftp', function () {
+ assume(required('21', 'ftp')).false();
+ assume(required(21, 'ftp')).false();
+ assume(required(21, 'ftp://')).false();
+ assume(required(21, 'ftp://www.google.com')).false();
+
+ assume(required('8080', 'ftp')).true();
+ assume(required(8080, 'ftp')).true();
+ assume(required(8080, 'ftp://')).true();
+ assume(required(8080, 'ftp://www.google.com')).true();
+ });
+
+ it('does not require port 70 for gopher', function () {
+ assume(required('70', 'gopher')).false();
+ assume(required(70, 'gopher')).false();
+ assume(required(70, 'gopher://')).false();
+ assume(required(70, 'gopher://www.google.com')).false();
+
+ assume(required('8080', 'gopher')).true();
+ assume(required(8080, 'gopher')).true();
+ assume(required(8080, 'gopher://')).true();
+ assume(required(8080, 'gopher://www.google.com')).true();
+ });
+});
diff --git a/node_modules/http-server/node_modules/http-proxy/package.json b/node_modules/http-server/node_modules/http-proxy/package.json
new file mode 100644
index 00000000..d46a3881
--- /dev/null
+++ b/node_modules/http-server/node_modules/http-proxy/package.json
@@ -0,0 +1,84 @@
+{
+ "name": "http-proxy",
+ "version": "1.16.2",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/nodejitsu/node-http-proxy.git"
+ },
+ "description": "HTTP proxying for the masses",
+ "author": {
+ "name": "Charlie Robbins",
+ "email": "charlie.robbins@gmail.com"
+ },
+ "maintainers": [
+ {
+ "name": "indexzero",
+ "email": "charlie.robbins@gmail.com"
+ },
+ {
+ "name": "cronopio",
+ "email": "aristizabal.daniel@gmail.com"
+ },
+ {
+ "name": "yawnt",
+ "email": "yawn.localhost@gmail.com"
+ },
+ {
+ "name": "jcrugzz",
+ "email": "jcrugzz@gmail.com"
+ }
+ ],
+ "main": "index.js",
+ "dependencies": {
+ "eventemitter3": "1.x.x",
+ "requires-port": "1.x.x"
+ },
+ "devDependencies": {
+ "async": "*",
+ "blanket": "*",
+ "coveralls": "*",
+ "dox": "*",
+ "expect.js": "*",
+ "mocha": "*",
+ "mocha-lcov-reporter": "*",
+ "semver": "^5.0.3",
+ "socket.io": "*",
+ "socket.io-client": "*",
+ "sse": "0.0.6",
+ "ws": "^0.8.0"
+ },
+ "scripts": {
+ "coveralls": "mocha --require blanket --reporter mocha-lcov-reporter | ./node_modules/coveralls/bin/coveralls.js",
+ "test": "mocha test/*-test.js",
+ "test-cov": "mocha --require blanket -R html-cov > cov/coverage.html"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "license": "MIT",
+ "gitHead": "c1fb596b856df971d291585ccf105233f7deca51",
+ "bugs": {
+ "url": "https://github.com/nodejitsu/node-http-proxy/issues"
+ },
+ "homepage": "https://github.com/nodejitsu/node-http-proxy#readme",
+ "_id": "http-proxy@1.16.2",
+ "_shasum": "06dff292952bf64dbe8471fa9df73066d4f37742",
+ "_from": "http-proxy@>=1.8.1 <2.0.0",
+ "_npmVersion": "3.10.8",
+ "_nodeVersion": "6.9.1",
+ "_npmUser": {
+ "name": "jcrugzz",
+ "email": "jcrugzz@gmail.com"
+ },
+ "dist": {
+ "shasum": "06dff292952bf64dbe8471fa9df73066d4f37742",
+ "tarball": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz"
+ },
+ "_npmOperationalInternal": {
+ "host": "packages-18-east.internal.npmjs.com",
+ "tmp": "tmp/http-proxy-1.16.2.tgz_1481039349196_0.5866330966819078"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/node_modules/http-server/node_modules/opener/LICENSE.txt b/node_modules/http-server/node_modules/opener/LICENSE.txt
new file mode 100644
index 00000000..0253e52c
--- /dev/null
+++ b/node_modules/http-server/node_modules/opener/LICENSE.txt
@@ -0,0 +1,47 @@
+Dual licensed under WTFPL and MIT:
+
+---
+
+Copyright © 2012â2016 Domenic Denicola
+
+This work is free. You can redistribute it and/or modify it under the
+terms of the Do What The Fuck You Want To Public License, Version 2,
+as published by Sam Hocevar. See below for more details.
+
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ Version 2, December 2004
+
+ Copyright (C) 2004 Sam Hocevar
+
+ Everyone is permitted to copy and distribute verbatim or modified
+ copies of this license document, and changing it is allowed as long
+ as the name is changed.
+
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. You just DO WHAT THE FUCK YOU WANT TO.
+
+---
+
+The MIT License (MIT)
+
+Copyright © 2012â2016 Domenic Denicola
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/http-server/node_modules/opener/README.md b/node_modules/http-server/node_modules/opener/README.md
new file mode 100644
index 00000000..8a803f33
--- /dev/null
+++ b/node_modules/http-server/node_modules/opener/README.md
@@ -0,0 +1,57 @@
+# It Opens Stuff
+
+That is, in your desktop environment. This will make *actual windows pop up*, with stuff in them:
+
+```bash
+npm install opener -g
+
+opener http://google.com
+opener ./my-file.txt
+opener firefox
+opener npm run lint
+```
+
+Also if you want to use it programmatically you can do that too:
+
+```js
+var opener = require("opener");
+
+opener("http://google.com");
+opener("./my-file.txt");
+opener("firefox");
+opener("npm run lint");
+```
+
+Plus, it returns the child process created, so you can do things like let your script exit while the window stays open:
+
+```js
+var editor = opener("documentation.odt");
+editor.unref();
+// These other unrefs may be necessary if your OS's opener process
+// exits before the process it started is complete.
+editor.stdin.unref();
+editor.stdout.unref();
+editor.stderr.unref();
+```
+
+
+## Use It for Good
+
+Like opening the user's browser with a test harness in your package's test script:
+
+```json
+{
+ "scripts": {
+ "test": "opener ./test/runner.html"
+ },
+ "devDependencies": {
+ "opener": "*"
+ }
+}
+```
+
+## Why
+
+Because Windows has `start`, Macs have `open`, and *nix has `xdg-open`. At least
+[according to some guy on StackOverflow](http://stackoverflow.com/q/1480971/3191). And I like things that work on all
+three. Like Node.js. And Opener.
diff --git a/node_modules/http-server/node_modules/opener/opener.js b/node_modules/http-server/node_modules/opener/opener.js
new file mode 100644
index 00000000..8951fa2d
--- /dev/null
+++ b/node_modules/http-server/node_modules/opener/opener.js
@@ -0,0 +1,60 @@
+#!/usr/bin/env node
+
+"use strict";
+
+var childProcess = require("child_process");
+
+function opener(args, options, callback) {
+ // http://stackoverflow.com/q/1480971/3191, but see below for Windows.
+ var command = process.platform === "win32" ? "cmd" :
+ process.platform === "darwin" ? "open" :
+ "xdg-open";
+
+ if (typeof args === "string") {
+ args = [args];
+ }
+
+ if (typeof options === "function") {
+ callback = options;
+ options = {};
+ }
+
+ if (options && typeof options === "object" && options.command) {
+ if (process.platform === "win32") {
+ // *always* use cmd on windows
+ args = [options.command].concat(args);
+ } else {
+ command = options.command;
+ }
+ }
+
+ if (process.platform === "win32") {
+ // On Windows, we really want to use the "start" command. But, the rules regarding arguments with spaces, and
+ // escaping them with quotes, can get really arcane. So the easiest way to deal with this is to pass off the
+ // responsibility to "cmd /c", which has that logic built in.
+ //
+ // Furthermore, if "cmd /c" double-quoted the first parameter, then "start" will interpret it as a window title,
+ // so we need to add a dummy empty-string window title: http://stackoverflow.com/a/154090/3191
+ //
+ // Additionally, on Windows ampersand needs to be escaped when passed to "start"
+ args = args.map(function(value) {
+ return value.replace(/&/g, '^&');
+ });
+ args = ["/c", "start", '""'].concat(args);
+ }
+
+ return childProcess.execFile(command, args, options, callback);
+}
+
+// Export `opener` for programmatic access.
+// You might use this to e.g. open a website: `opener("http://google.com")`
+module.exports = opener;
+
+// If we're being called from the command line, just execute, using the command-line arguments.
+if (require.main && require.main.id === module.id) {
+ opener(process.argv.slice(2), function (error) {
+ if (error) {
+ throw error;
+ }
+ });
+}
diff --git a/node_modules/http-server/node_modules/opener/package.json b/node_modules/http-server/node_modules/opener/package.json
new file mode 100644
index 00000000..c45c6c7a
--- /dev/null
+++ b/node_modules/http-server/node_modules/opener/package.json
@@ -0,0 +1,59 @@
+{
+ "name": "opener",
+ "description": "Opens stuff, like webpages and files and executables, cross-platform",
+ "version": "1.4.3",
+ "author": {
+ "name": "Domenic Denicola",
+ "email": "d@domenic.me",
+ "url": "https://domenic.me/"
+ },
+ "license": "(WTFPL OR MIT)",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/domenic/opener.git"
+ },
+ "main": "opener.js",
+ "bin": {
+ "opener": "opener.js"
+ },
+ "files": [
+ "opener.js"
+ ],
+ "scripts": {
+ "lint": "jshint opener.js"
+ },
+ "devDependencies": {
+ "jshint": "^2.6.3"
+ },
+ "gitHead": "51a4058b9e5172d9b57fb5e5205bc3f7fb4ace6a",
+ "bugs": {
+ "url": "https://github.com/domenic/opener/issues"
+ },
+ "homepage": "https://github.com/domenic/opener#readme",
+ "_id": "opener@1.4.3",
+ "_shasum": "5c6da2c5d7e5831e8ffa3964950f8d6674ac90b8",
+ "_from": "opener@>=1.4.0 <1.5.0",
+ "_npmVersion": "3.10.10",
+ "_nodeVersion": "7.2.1",
+ "_npmUser": {
+ "name": "domenic",
+ "email": "d@domenic.me"
+ },
+ "dist": {
+ "shasum": "5c6da2c5d7e5831e8ffa3964950f8d6674ac90b8",
+ "tarball": "https://registry.npmjs.org/opener/-/opener-1.4.3.tgz"
+ },
+ "maintainers": [
+ {
+ "name": "domenic",
+ "email": "domenic@domenicdenicola.com"
+ }
+ ],
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/opener-1.4.3.tgz_1487118807602_0.517438261769712"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/opener/-/opener-1.4.3.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/node_modules/http-server/node_modules/optimist/.travis.yml b/node_modules/http-server/node_modules/optimist/.travis.yml
new file mode 100644
index 00000000..cc4dba29
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/.travis.yml
@@ -0,0 +1,4 @@
+language: node_js
+node_js:
+ - "0.8"
+ - "0.10"
diff --git a/node_modules/http-server/node_modules/optimist/LICENSE b/node_modules/http-server/node_modules/optimist/LICENSE
new file mode 100644
index 00000000..432d1aeb
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/LICENSE
@@ -0,0 +1,21 @@
+Copyright 2010 James Halliday (mail@substack.net)
+
+This project is free software released under the MIT/X11 license:
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/http-server/node_modules/optimist/example/bool.js b/node_modules/http-server/node_modules/optimist/example/bool.js
new file mode 100644
index 00000000..a998fb7a
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/example/bool.js
@@ -0,0 +1,10 @@
+#!/usr/bin/env node
+var util = require('util');
+var argv = require('optimist').argv;
+
+if (argv.s) {
+ util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: ');
+}
+console.log(
+ (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '')
+);
diff --git a/node_modules/http-server/node_modules/optimist/example/boolean_double.js b/node_modules/http-server/node_modules/optimist/example/boolean_double.js
new file mode 100644
index 00000000..a35a7e6d
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/example/boolean_double.js
@@ -0,0 +1,7 @@
+#!/usr/bin/env node
+var argv = require('optimist')
+ .boolean(['x','y','z'])
+ .argv
+;
+console.dir([ argv.x, argv.y, argv.z ]);
+console.dir(argv._);
diff --git a/node_modules/http-server/node_modules/optimist/example/boolean_single.js b/node_modules/http-server/node_modules/optimist/example/boolean_single.js
new file mode 100644
index 00000000..017bb689
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/example/boolean_single.js
@@ -0,0 +1,7 @@
+#!/usr/bin/env node
+var argv = require('optimist')
+ .boolean('v')
+ .argv
+;
+console.dir(argv.v);
+console.dir(argv._);
diff --git a/node_modules/http-server/node_modules/optimist/example/default_hash.js b/node_modules/http-server/node_modules/optimist/example/default_hash.js
new file mode 100644
index 00000000..ade77681
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/example/default_hash.js
@@ -0,0 +1,8 @@
+#!/usr/bin/env node
+
+var argv = require('optimist')
+ .default({ x : 10, y : 10 })
+ .argv
+;
+
+console.log(argv.x + argv.y);
diff --git a/node_modules/http-server/node_modules/optimist/example/default_singles.js b/node_modules/http-server/node_modules/optimist/example/default_singles.js
new file mode 100644
index 00000000..d9b1ff45
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/example/default_singles.js
@@ -0,0 +1,7 @@
+#!/usr/bin/env node
+var argv = require('optimist')
+ .default('x', 10)
+ .default('y', 10)
+ .argv
+;
+console.log(argv.x + argv.y);
diff --git a/node_modules/http-server/node_modules/optimist/example/divide.js b/node_modules/http-server/node_modules/optimist/example/divide.js
new file mode 100644
index 00000000..5e2ee82f
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/example/divide.js
@@ -0,0 +1,8 @@
+#!/usr/bin/env node
+
+var argv = require('optimist')
+ .usage('Usage: $0 -x [num] -y [num]')
+ .demand(['x','y'])
+ .argv;
+
+console.log(argv.x / argv.y);
diff --git a/node_modules/http-server/node_modules/optimist/example/line_count.js b/node_modules/http-server/node_modules/optimist/example/line_count.js
new file mode 100644
index 00000000..b5f95bf6
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/example/line_count.js
@@ -0,0 +1,20 @@
+#!/usr/bin/env node
+var argv = require('optimist')
+ .usage('Count the lines in a file.\nUsage: $0')
+ .demand('f')
+ .alias('f', 'file')
+ .describe('f', 'Load a file')
+ .argv
+;
+
+var fs = require('fs');
+var s = fs.createReadStream(argv.file);
+
+var lines = 0;
+s.on('data', function (buf) {
+ lines += buf.toString().match(/\n/g).length;
+});
+
+s.on('end', function () {
+ console.log(lines);
+});
diff --git a/node_modules/http-server/node_modules/optimist/example/line_count_options.js b/node_modules/http-server/node_modules/optimist/example/line_count_options.js
new file mode 100644
index 00000000..d9ac7090
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/example/line_count_options.js
@@ -0,0 +1,29 @@
+#!/usr/bin/env node
+var argv = require('optimist')
+ .usage('Count the lines in a file.\nUsage: $0')
+ .options({
+ file : {
+ demand : true,
+ alias : 'f',
+ description : 'Load a file'
+ },
+ base : {
+ alias : 'b',
+ description : 'Numeric base to use for output',
+ default : 10,
+ },
+ })
+ .argv
+;
+
+var fs = require('fs');
+var s = fs.createReadStream(argv.file);
+
+var lines = 0;
+s.on('data', function (buf) {
+ lines += buf.toString().match(/\n/g).length;
+});
+
+s.on('end', function () {
+ console.log(lines.toString(argv.base));
+});
diff --git a/node_modules/http-server/node_modules/optimist/example/line_count_wrap.js b/node_modules/http-server/node_modules/optimist/example/line_count_wrap.js
new file mode 100644
index 00000000..42675111
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/example/line_count_wrap.js
@@ -0,0 +1,29 @@
+#!/usr/bin/env node
+var argv = require('optimist')
+ .usage('Count the lines in a file.\nUsage: $0')
+ .wrap(80)
+ .demand('f')
+ .alias('f', [ 'file', 'filename' ])
+ .describe('f',
+ "Load a file. It's pretty important."
+ + " Required even. So you'd better specify it."
+ )
+ .alias('b', 'base')
+ .describe('b', 'Numeric base to display the number of lines in')
+ .default('b', 10)
+ .describe('x', 'Super-secret optional parameter which is secret')
+ .default('x', '')
+ .argv
+;
+
+var fs = require('fs');
+var s = fs.createReadStream(argv.file);
+
+var lines = 0;
+s.on('data', function (buf) {
+ lines += buf.toString().match(/\n/g).length;
+});
+
+s.on('end', function () {
+ console.log(lines.toString(argv.base));
+});
diff --git a/node_modules/http-server/node_modules/optimist/example/nonopt.js b/node_modules/http-server/node_modules/optimist/example/nonopt.js
new file mode 100644
index 00000000..ee633eed
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/example/nonopt.js
@@ -0,0 +1,4 @@
+#!/usr/bin/env node
+var argv = require('optimist').argv;
+console.log('(%d,%d)', argv.x, argv.y);
+console.log(argv._);
diff --git a/node_modules/http-server/node_modules/optimist/example/reflect.js b/node_modules/http-server/node_modules/optimist/example/reflect.js
new file mode 100644
index 00000000..816b3e11
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/example/reflect.js
@@ -0,0 +1,2 @@
+#!/usr/bin/env node
+console.dir(require('optimist').argv);
diff --git a/node_modules/http-server/node_modules/optimist/example/short.js b/node_modules/http-server/node_modules/optimist/example/short.js
new file mode 100644
index 00000000..1db0ad0f
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/example/short.js
@@ -0,0 +1,3 @@
+#!/usr/bin/env node
+var argv = require('optimist').argv;
+console.log('(%d,%d)', argv.x, argv.y);
diff --git a/node_modules/http-server/node_modules/optimist/example/string.js b/node_modules/http-server/node_modules/optimist/example/string.js
new file mode 100644
index 00000000..a8e5aeb2
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/example/string.js
@@ -0,0 +1,11 @@
+#!/usr/bin/env node
+var argv = require('optimist')
+ .string('x', 'y')
+ .argv
+;
+console.dir([ argv.x, argv.y ]);
+
+/* Turns off numeric coercion:
+ ./node string.js -x 000123 -y 9876
+ [ '000123', '9876' ]
+*/
diff --git a/node_modules/http-server/node_modules/optimist/example/usage-options.js b/node_modules/http-server/node_modules/optimist/example/usage-options.js
new file mode 100644
index 00000000..b9999776
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/example/usage-options.js
@@ -0,0 +1,19 @@
+var optimist = require('./../index');
+
+var argv = optimist.usage('This is my awesome program', {
+ 'about': {
+ description: 'Provide some details about the author of this program',
+ required: true,
+ short: 'a',
+ },
+ 'info': {
+ description: 'Provide some information about the node.js agains!!!!!!',
+ boolean: true,
+ short: 'i'
+ }
+}).argv;
+
+optimist.showHelp();
+
+console.log('\n\nInspecting options');
+console.dir(argv);
\ No newline at end of file
diff --git a/node_modules/http-server/node_modules/optimist/example/xup.js b/node_modules/http-server/node_modules/optimist/example/xup.js
new file mode 100644
index 00000000..8f6ecd20
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/example/xup.js
@@ -0,0 +1,10 @@
+#!/usr/bin/env node
+var argv = require('optimist').argv;
+
+if (argv.rif - 5 * argv.xup > 7.138) {
+ console.log('Buy more riffiwobbles');
+}
+else {
+ console.log('Sell the xupptumblers');
+}
+
diff --git a/node_modules/http-server/node_modules/optimist/index.js b/node_modules/http-server/node_modules/optimist/index.js
new file mode 100644
index 00000000..4da5a6d8
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/index.js
@@ -0,0 +1,343 @@
+var path = require('path');
+var minimist = require('minimist');
+var wordwrap = require('wordwrap');
+
+/* Hack an instance of Argv with process.argv into Argv
+ so people can do
+ require('optimist')(['--beeble=1','-z','zizzle']).argv
+ to parse a list of args and
+ require('optimist').argv
+ to get a parsed version of process.argv.
+*/
+
+var inst = Argv(process.argv.slice(2));
+Object.keys(inst).forEach(function (key) {
+ Argv[key] = typeof inst[key] == 'function'
+ ? inst[key].bind(inst)
+ : inst[key];
+});
+
+var exports = module.exports = Argv;
+function Argv (processArgs, cwd) {
+ var self = {};
+ if (!cwd) cwd = process.cwd();
+
+ self.$0 = process.argv
+ .slice(0,2)
+ .map(function (x) {
+ var b = rebase(cwd, x);
+ return x.match(/^\//) && b.length < x.length
+ ? b : x
+ })
+ .join(' ')
+ ;
+
+ if (process.env._ != undefined && process.argv[1] == process.env._) {
+ self.$0 = process.env._.replace(
+ path.dirname(process.execPath) + '/', ''
+ );
+ }
+
+ var options = {
+ boolean: [],
+ string: [],
+ alias: {},
+ default: []
+ };
+
+ self.boolean = function (bools) {
+ options.boolean.push.apply(options.boolean, [].concat(bools));
+ return self;
+ };
+
+ self.string = function (strings) {
+ options.string.push.apply(options.string, [].concat(strings));
+ return self;
+ };
+
+ self.default = function (key, value) {
+ if (typeof key === 'object') {
+ Object.keys(key).forEach(function (k) {
+ self.default(k, key[k]);
+ });
+ }
+ else {
+ options.default[key] = value;
+ }
+ return self;
+ };
+
+ self.alias = function (x, y) {
+ if (typeof x === 'object') {
+ Object.keys(x).forEach(function (key) {
+ self.alias(key, x[key]);
+ });
+ }
+ else {
+ options.alias[x] = (options.alias[x] || []).concat(y);
+ }
+ return self;
+ };
+
+ var demanded = {};
+ self.demand = function (keys) {
+ if (typeof keys == 'number') {
+ if (!demanded._) demanded._ = 0;
+ demanded._ += keys;
+ }
+ else if (Array.isArray(keys)) {
+ keys.forEach(function (key) {
+ self.demand(key);
+ });
+ }
+ else {
+ demanded[keys] = true;
+ }
+
+ return self;
+ };
+
+ var usage;
+ self.usage = function (msg, opts) {
+ if (!opts && typeof msg === 'object') {
+ opts = msg;
+ msg = null;
+ }
+
+ usage = msg;
+
+ if (opts) self.options(opts);
+
+ return self;
+ };
+
+ function fail (msg) {
+ self.showHelp();
+ if (msg) console.error(msg);
+ process.exit(1);
+ }
+
+ var checks = [];
+ self.check = function (f) {
+ checks.push(f);
+ return self;
+ };
+
+ var descriptions = {};
+ self.describe = function (key, desc) {
+ if (typeof key === 'object') {
+ Object.keys(key).forEach(function (k) {
+ self.describe(k, key[k]);
+ });
+ }
+ else {
+ descriptions[key] = desc;
+ }
+ return self;
+ };
+
+ self.parse = function (args) {
+ return parseArgs(args);
+ };
+
+ self.option = self.options = function (key, opt) {
+ if (typeof key === 'object') {
+ Object.keys(key).forEach(function (k) {
+ self.options(k, key[k]);
+ });
+ }
+ else {
+ if (opt.alias) self.alias(key, opt.alias);
+ if (opt.demand) self.demand(key);
+ if (typeof opt.default !== 'undefined') {
+ self.default(key, opt.default);
+ }
+
+ if (opt.boolean || opt.type === 'boolean') {
+ self.boolean(key);
+ }
+ if (opt.string || opt.type === 'string') {
+ self.string(key);
+ }
+
+ var desc = opt.describe || opt.description || opt.desc;
+ if (desc) {
+ self.describe(key, desc);
+ }
+ }
+
+ return self;
+ };
+
+ var wrap = null;
+ self.wrap = function (cols) {
+ wrap = cols;
+ return self;
+ };
+
+ self.showHelp = function (fn) {
+ if (!fn) fn = console.error;
+ fn(self.help());
+ };
+
+ self.help = function () {
+ var keys = Object.keys(
+ Object.keys(descriptions)
+ .concat(Object.keys(demanded))
+ .concat(Object.keys(options.default))
+ .reduce(function (acc, key) {
+ if (key !== '_') acc[key] = true;
+ return acc;
+ }, {})
+ );
+
+ var help = keys.length ? [ 'Options:' ] : [];
+
+ if (usage) {
+ help.unshift(usage.replace(/\$0/g, self.$0), '');
+ }
+
+ var switches = keys.reduce(function (acc, key) {
+ acc[key] = [ key ].concat(options.alias[key] || [])
+ .map(function (sw) {
+ return (sw.length > 1 ? '--' : '-') + sw
+ })
+ .join(', ')
+ ;
+ return acc;
+ }, {});
+
+ var switchlen = longest(Object.keys(switches).map(function (s) {
+ return switches[s] || '';
+ }));
+
+ var desclen = longest(Object.keys(descriptions).map(function (d) {
+ return descriptions[d] || '';
+ }));
+
+ keys.forEach(function (key) {
+ var kswitch = switches[key];
+ var desc = descriptions[key] || '';
+
+ if (wrap) {
+ desc = wordwrap(switchlen + 4, wrap)(desc)
+ .slice(switchlen + 4)
+ ;
+ }
+
+ var spadding = new Array(
+ Math.max(switchlen - kswitch.length + 3, 0)
+ ).join(' ');
+
+ var dpadding = new Array(
+ Math.max(desclen - desc.length + 1, 0)
+ ).join(' ');
+
+ var type = null;
+
+ if (options.boolean[key]) type = '[boolean]';
+ if (options.string[key]) type = '[string]';
+
+ if (!wrap && dpadding.length > 0) {
+ desc += dpadding;
+ }
+
+ var prelude = ' ' + kswitch + spadding;
+ var extra = [
+ type,
+ demanded[key]
+ ? '[required]'
+ : null
+ ,
+ options.default[key] !== undefined
+ ? '[default: ' + JSON.stringify(options.default[key]) + ']'
+ : null
+ ,
+ ].filter(Boolean).join(' ');
+
+ var body = [ desc, extra ].filter(Boolean).join(' ');
+
+ if (wrap) {
+ var dlines = desc.split('\n');
+ var dlen = dlines.slice(-1)[0].length
+ + (dlines.length === 1 ? prelude.length : 0)
+
+ body = desc + (dlen + extra.length > wrap - 2
+ ? '\n'
+ + new Array(wrap - extra.length + 1).join(' ')
+ + extra
+ : new Array(wrap - extra.length - dlen + 1).join(' ')
+ + extra
+ );
+ }
+
+ help.push(prelude + body);
+ });
+
+ help.push('');
+ return help.join('\n');
+ };
+
+ Object.defineProperty(self, 'argv', {
+ get : function () { return parseArgs(processArgs) },
+ enumerable : true,
+ });
+
+ function parseArgs (args) {
+ var argv = minimist(args, options);
+ argv.$0 = self.$0;
+
+ if (demanded._ && argv._.length < demanded._) {
+ fail('Not enough non-option arguments: got '
+ + argv._.length + ', need at least ' + demanded._
+ );
+ }
+
+ var missing = [];
+ Object.keys(demanded).forEach(function (key) {
+ if (!argv[key]) missing.push(key);
+ });
+
+ if (missing.length) {
+ fail('Missing required arguments: ' + missing.join(', '));
+ }
+
+ checks.forEach(function (f) {
+ try {
+ if (f(argv) === false) {
+ fail('Argument check failed: ' + f.toString());
+ }
+ }
+ catch (err) {
+ fail(err)
+ }
+ });
+
+ return argv;
+ }
+
+ function longest (xs) {
+ return Math.max.apply(
+ null,
+ xs.map(function (x) { return x.length })
+ );
+ }
+
+ return self;
+};
+
+// rebase an absolute path to a relative one with respect to a base directory
+// exported for tests
+exports.rebase = rebase;
+function rebase (base, dir) {
+ var ds = path.normalize(dir).split('/').slice(1);
+ var bs = path.normalize(base).split('/').slice(1);
+
+ for (var i = 0; ds[i] && ds[i] == bs[i]; i++);
+ ds.splice(0, i); bs.splice(0, i);
+
+ var p = path.normalize(
+ bs.map(function () { return '..' }).concat(ds).join('/')
+ ).replace(/\/$/,'').replace(/^$/, '.');
+ return p.match(/^[.\/]/) ? p : './' + p;
+};
diff --git a/node_modules/http-server/node_modules/optimist/node_modules/minimist/.travis.yml b/node_modules/http-server/node_modules/optimist/node_modules/minimist/.travis.yml
new file mode 100644
index 00000000..cc4dba29
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/node_modules/minimist/.travis.yml
@@ -0,0 +1,4 @@
+language: node_js
+node_js:
+ - "0.8"
+ - "0.10"
diff --git a/node_modules/http-server/node_modules/optimist/node_modules/minimist/LICENSE b/node_modules/http-server/node_modules/optimist/node_modules/minimist/LICENSE
new file mode 100644
index 00000000..ee27ba4b
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/node_modules/minimist/LICENSE
@@ -0,0 +1,18 @@
+This software is released under the MIT license:
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/http-server/node_modules/optimist/node_modules/minimist/example/parse.js b/node_modules/http-server/node_modules/optimist/node_modules/minimist/example/parse.js
new file mode 100644
index 00000000..abff3e8e
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/node_modules/minimist/example/parse.js
@@ -0,0 +1,2 @@
+var argv = require('../')(process.argv.slice(2));
+console.dir(argv);
diff --git a/node_modules/http-server/node_modules/optimist/node_modules/minimist/index.js b/node_modules/http-server/node_modules/optimist/node_modules/minimist/index.js
new file mode 100644
index 00000000..71fb8305
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/node_modules/minimist/index.js
@@ -0,0 +1,187 @@
+module.exports = function (args, opts) {
+ if (!opts) opts = {};
+
+ var flags = { bools : {}, strings : {} };
+
+ [].concat(opts['boolean']).filter(Boolean).forEach(function (key) {
+ flags.bools[key] = true;
+ });
+
+ var aliases = {};
+ Object.keys(opts.alias || {}).forEach(function (key) {
+ aliases[key] = [].concat(opts.alias[key]);
+ aliases[key].forEach(function (x) {
+ aliases[x] = [key].concat(aliases[key].filter(function (y) {
+ return x !== y;
+ }));
+ });
+ });
+
+ [].concat(opts.string).filter(Boolean).forEach(function (key) {
+ flags.strings[key] = true;
+ if (aliases[key]) {
+ flags.strings[aliases[key]] = true;
+ }
+ });
+
+ var defaults = opts['default'] || {};
+
+ var argv = { _ : [] };
+ Object.keys(flags.bools).forEach(function (key) {
+ setArg(key, defaults[key] === undefined ? false : defaults[key]);
+ });
+
+ var notFlags = [];
+
+ if (args.indexOf('--') !== -1) {
+ notFlags = args.slice(args.indexOf('--')+1);
+ args = args.slice(0, args.indexOf('--'));
+ }
+
+ function setArg (key, val) {
+ var value = !flags.strings[key] && isNumber(val)
+ ? Number(val) : val
+ ;
+ setKey(argv, key.split('.'), value);
+
+ (aliases[key] || []).forEach(function (x) {
+ setKey(argv, x.split('.'), value);
+ });
+ }
+
+ for (var i = 0; i < args.length; i++) {
+ var arg = args[i];
+
+ if (/^--.+=/.test(arg)) {
+ // Using [\s\S] instead of . because js doesn't support the
+ // 'dotall' regex modifier. See:
+ // http://stackoverflow.com/a/1068308/13216
+ var m = arg.match(/^--([^=]+)=([\s\S]*)$/);
+ setArg(m[1], m[2]);
+ }
+ else if (/^--no-.+/.test(arg)) {
+ var key = arg.match(/^--no-(.+)/)[1];
+ setArg(key, false);
+ }
+ else if (/^--.+/.test(arg)) {
+ var key = arg.match(/^--(.+)/)[1];
+ var next = args[i + 1];
+ if (next !== undefined && !/^-/.test(next)
+ && !flags.bools[key]
+ && (aliases[key] ? !flags.bools[aliases[key]] : true)) {
+ setArg(key, next);
+ i++;
+ }
+ else if (/^(true|false)$/.test(next)) {
+ setArg(key, next === 'true');
+ i++;
+ }
+ else {
+ setArg(key, flags.strings[key] ? '' : true);
+ }
+ }
+ else if (/^-[^-]+/.test(arg)) {
+ var letters = arg.slice(1,-1).split('');
+
+ var broken = false;
+ for (var j = 0; j < letters.length; j++) {
+ var next = arg.slice(j+2);
+
+ if (next === '-') {
+ setArg(letters[j], next)
+ continue;
+ }
+
+ if (/[A-Za-z]/.test(letters[j])
+ && /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) {
+ setArg(letters[j], next);
+ broken = true;
+ break;
+ }
+
+ if (letters[j+1] && letters[j+1].match(/\W/)) {
+ setArg(letters[j], arg.slice(j+2));
+ broken = true;
+ break;
+ }
+ else {
+ setArg(letters[j], flags.strings[letters[j]] ? '' : true);
+ }
+ }
+
+ var key = arg.slice(-1)[0];
+ if (!broken && key !== '-') {
+ if (args[i+1] && !/^(-|--)[^-]/.test(args[i+1])
+ && !flags.bools[key]
+ && (aliases[key] ? !flags.bools[aliases[key]] : true)) {
+ setArg(key, args[i+1]);
+ i++;
+ }
+ else if (args[i+1] && /true|false/.test(args[i+1])) {
+ setArg(key, args[i+1] === 'true');
+ i++;
+ }
+ else {
+ setArg(key, flags.strings[key] ? '' : true);
+ }
+ }
+ }
+ else {
+ argv._.push(
+ flags.strings['_'] || !isNumber(arg) ? arg : Number(arg)
+ );
+ }
+ }
+
+ Object.keys(defaults).forEach(function (key) {
+ if (!hasKey(argv, key.split('.'))) {
+ setKey(argv, key.split('.'), defaults[key]);
+
+ (aliases[key] || []).forEach(function (x) {
+ setKey(argv, x.split('.'), defaults[key]);
+ });
+ }
+ });
+
+ notFlags.forEach(function(key) {
+ argv._.push(key);
+ });
+
+ return argv;
+};
+
+function hasKey (obj, keys) {
+ var o = obj;
+ keys.slice(0,-1).forEach(function (key) {
+ o = (o[key] || {});
+ });
+
+ var key = keys[keys.length - 1];
+ return key in o;
+}
+
+function setKey (obj, keys, value) {
+ var o = obj;
+ keys.slice(0,-1).forEach(function (key) {
+ if (o[key] === undefined) o[key] = {};
+ o = o[key];
+ });
+
+ var key = keys[keys.length - 1];
+ if (o[key] === undefined || typeof o[key] === 'boolean') {
+ o[key] = value;
+ }
+ else if (Array.isArray(o[key])) {
+ o[key].push(value);
+ }
+ else {
+ o[key] = [ o[key], value ];
+ }
+}
+
+function isNumber (x) {
+ if (typeof x === 'number') return true;
+ if (/^0x[0-9a-f]+$/i.test(x)) return true;
+ return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x);
+}
+
diff --git a/node_modules/http-server/node_modules/optimist/node_modules/minimist/package.json b/node_modules/http-server/node_modules/optimist/node_modules/minimist/package.json
new file mode 100644
index 00000000..6c08d0a8
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/node_modules/minimist/package.json
@@ -0,0 +1,67 @@
+{
+ "name": "minimist",
+ "version": "0.0.10",
+ "description": "parse argument options",
+ "main": "index.js",
+ "devDependencies": {
+ "tape": "~1.0.4",
+ "tap": "~0.4.0"
+ },
+ "scripts": {
+ "test": "tap test/*.js"
+ },
+ "testling": {
+ "files": "test/*.js",
+ "browsers": [
+ "ie/6..latest",
+ "ff/5",
+ "firefox/latest",
+ "chrome/10",
+ "chrome/latest",
+ "safari/5.1",
+ "safari/latest",
+ "opera/12"
+ ]
+ },
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/substack/minimist.git"
+ },
+ "homepage": "https://github.com/substack/minimist",
+ "keywords": [
+ "argv",
+ "getopt",
+ "parser",
+ "optimist"
+ ],
+ "author": {
+ "name": "James Halliday",
+ "email": "mail@substack.net",
+ "url": "http://substack.net"
+ },
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/substack/minimist/issues"
+ },
+ "_id": "minimist@0.0.10",
+ "dist": {
+ "shasum": "de3f98543dbf96082be48ad1a0c7cda836301dcf",
+ "tarball": "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz"
+ },
+ "_from": "minimist@>=0.0.1 <0.1.0",
+ "_npmVersion": "1.4.3",
+ "_npmUser": {
+ "name": "substack",
+ "email": "mail@substack.net"
+ },
+ "maintainers": [
+ {
+ "name": "substack",
+ "email": "mail@substack.net"
+ }
+ ],
+ "directories": {},
+ "_shasum": "de3f98543dbf96082be48ad1a0c7cda836301dcf",
+ "_resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/node_modules/http-server/node_modules/optimist/node_modules/minimist/readme.markdown b/node_modules/http-server/node_modules/optimist/node_modules/minimist/readme.markdown
new file mode 100644
index 00000000..c2563532
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/node_modules/minimist/readme.markdown
@@ -0,0 +1,73 @@
+# minimist
+
+parse argument options
+
+This module is the guts of optimist's argument parser without all the
+fanciful decoration.
+
+[](http://ci.testling.com/substack/minimist)
+
+[](http://travis-ci.org/substack/minimist)
+
+# example
+
+``` js
+var argv = require('minimist')(process.argv.slice(2));
+console.dir(argv);
+```
+
+```
+$ node example/parse.js -a beep -b boop
+{ _: [], a: 'beep', b: 'boop' }
+```
+
+```
+$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz
+{ _: [ 'foo', 'bar', 'baz' ],
+ x: 3,
+ y: 4,
+ n: 5,
+ a: true,
+ b: true,
+ c: true,
+ beep: 'boop' }
+```
+
+# methods
+
+``` js
+var parseArgs = require('minimist')
+```
+
+## var argv = parseArgs(args, opts={})
+
+Return an argument object `argv` populated with the array arguments from `args`.
+
+`argv._` contains all the arguments that didn't have an option associated with
+them.
+
+Numeric-looking arguments will be returned as numbers unless `opts.string` or
+`opts.boolean` is set for that argument name.
+
+Any arguments after `'--'` will not be parsed and will end up in `argv._`.
+
+options can be:
+
+* `opts.string` - a string or array of strings argument names to always treat as
+strings
+* `opts.boolean` - a string or array of strings to always treat as booleans
+* `opts.alias` - an object mapping string names to strings or arrays of string
+argument names to use as aliases
+* `opts.default` - an object mapping string argument names to default values
+
+# install
+
+With [npm](https://npmjs.org) do:
+
+```
+npm install minimist
+```
+
+# license
+
+MIT
diff --git a/node_modules/http-server/node_modules/optimist/node_modules/minimist/test/bool.js b/node_modules/http-server/node_modules/optimist/node_modules/minimist/test/bool.js
new file mode 100644
index 00000000..749e083c
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/node_modules/minimist/test/bool.js
@@ -0,0 +1,119 @@
+var parse = require('../');
+var test = require('tape');
+
+test('flag boolean default false', function (t) {
+ var argv = parse(['moo'], {
+ boolean: ['t', 'verbose'],
+ default: { verbose: false, t: false }
+ });
+
+ t.deepEqual(argv, {
+ verbose: false,
+ t: false,
+ _: ['moo']
+ });
+
+ t.deepEqual(typeof argv.verbose, 'boolean');
+ t.deepEqual(typeof argv.t, 'boolean');
+ t.end();
+
+});
+
+test('boolean groups', function (t) {
+ var argv = parse([ '-x', '-z', 'one', 'two', 'three' ], {
+ boolean: ['x','y','z']
+ });
+
+ t.deepEqual(argv, {
+ x : true,
+ y : false,
+ z : true,
+ _ : [ 'one', 'two', 'three' ]
+ });
+
+ t.deepEqual(typeof argv.x, 'boolean');
+ t.deepEqual(typeof argv.y, 'boolean');
+ t.deepEqual(typeof argv.z, 'boolean');
+ t.end();
+});
+test('boolean and alias with chainable api', function (t) {
+ var aliased = [ '-h', 'derp' ];
+ var regular = [ '--herp', 'derp' ];
+ var opts = {
+ herp: { alias: 'h', boolean: true }
+ };
+ var aliasedArgv = parse(aliased, {
+ boolean: 'herp',
+ alias: { h: 'herp' }
+ });
+ var propertyArgv = parse(regular, {
+ boolean: 'herp',
+ alias: { h: 'herp' }
+ });
+ var expected = {
+ herp: true,
+ h: true,
+ '_': [ 'derp' ]
+ };
+
+ t.same(aliasedArgv, expected);
+ t.same(propertyArgv, expected);
+ t.end();
+});
+
+test('boolean and alias with options hash', function (t) {
+ var aliased = [ '-h', 'derp' ];
+ var regular = [ '--herp', 'derp' ];
+ var opts = {
+ alias: { 'h': 'herp' },
+ boolean: 'herp'
+ };
+ var aliasedArgv = parse(aliased, opts);
+ var propertyArgv = parse(regular, opts);
+ var expected = {
+ herp: true,
+ h: true,
+ '_': [ 'derp' ]
+ };
+ t.same(aliasedArgv, expected);
+ t.same(propertyArgv, expected);
+ t.end();
+});
+
+test('boolean and alias using explicit true', function (t) {
+ var aliased = [ '-h', 'true' ];
+ var regular = [ '--herp', 'true' ];
+ var opts = {
+ alias: { h: 'herp' },
+ boolean: 'h'
+ };
+ var aliasedArgv = parse(aliased, opts);
+ var propertyArgv = parse(regular, opts);
+ var expected = {
+ herp: true,
+ h: true,
+ '_': [ ]
+ };
+
+ t.same(aliasedArgv, expected);
+ t.same(propertyArgv, expected);
+ t.end();
+});
+
+// regression, see https://github.com/substack/node-optimist/issues/71
+test('boolean and --x=true', function(t) {
+ var parsed = parse(['--boool', '--other=true'], {
+ boolean: 'boool'
+ });
+
+ t.same(parsed.boool, true);
+ t.same(parsed.other, 'true');
+
+ parsed = parse(['--boool', '--other=false'], {
+ boolean: 'boool'
+ });
+
+ t.same(parsed.boool, true);
+ t.same(parsed.other, 'false');
+ t.end();
+});
diff --git a/node_modules/http-server/node_modules/optimist/node_modules/minimist/test/dash.js b/node_modules/http-server/node_modules/optimist/node_modules/minimist/test/dash.js
new file mode 100644
index 00000000..8b034b99
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/node_modules/minimist/test/dash.js
@@ -0,0 +1,24 @@
+var parse = require('../');
+var test = require('tape');
+
+test('-', function (t) {
+ t.plan(5);
+ t.deepEqual(parse([ '-n', '-' ]), { n: '-', _: [] });
+ t.deepEqual(parse([ '-' ]), { _: [ '-' ] });
+ t.deepEqual(parse([ '-f-' ]), { f: '-', _: [] });
+ t.deepEqual(
+ parse([ '-b', '-' ], { boolean: 'b' }),
+ { b: true, _: [ '-' ] }
+ );
+ t.deepEqual(
+ parse([ '-s', '-' ], { string: 's' }),
+ { s: '-', _: [] }
+ );
+});
+
+test('-a -- b', function (t) {
+ t.plan(3);
+ t.deepEqual(parse([ '-a', '--', 'b' ]), { a: true, _: [ 'b' ] });
+ t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] });
+ t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] });
+});
diff --git a/node_modules/http-server/node_modules/optimist/node_modules/minimist/test/default_bool.js b/node_modules/http-server/node_modules/optimist/node_modules/minimist/test/default_bool.js
new file mode 100644
index 00000000..f0041ee4
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/node_modules/minimist/test/default_bool.js
@@ -0,0 +1,20 @@
+var test = require('tape');
+var parse = require('../');
+
+test('boolean default true', function (t) {
+ var argv = parse([], {
+ boolean: 'sometrue',
+ default: { sometrue: true }
+ });
+ t.equal(argv.sometrue, true);
+ t.end();
+});
+
+test('boolean default false', function (t) {
+ var argv = parse([], {
+ boolean: 'somefalse',
+ default: { somefalse: false }
+ });
+ t.equal(argv.somefalse, false);
+ t.end();
+});
diff --git a/node_modules/http-server/node_modules/optimist/node_modules/minimist/test/dotted.js b/node_modules/http-server/node_modules/optimist/node_modules/minimist/test/dotted.js
new file mode 100644
index 00000000..d8b3e856
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/node_modules/minimist/test/dotted.js
@@ -0,0 +1,22 @@
+var parse = require('../');
+var test = require('tape');
+
+test('dotted alias', function (t) {
+ var argv = parse(['--a.b', '22'], {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}});
+ t.equal(argv.a.b, 22);
+ t.equal(argv.aa.bb, 22);
+ t.end();
+});
+
+test('dotted default', function (t) {
+ var argv = parse('', {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}});
+ t.equal(argv.a.b, 11);
+ t.equal(argv.aa.bb, 11);
+ t.end();
+});
+
+test('dotted default with no alias', function (t) {
+ var argv = parse('', {default: {'a.b': 11}});
+ t.equal(argv.a.b, 11);
+ t.end();
+});
diff --git a/node_modules/http-server/node_modules/optimist/node_modules/minimist/test/long.js b/node_modules/http-server/node_modules/optimist/node_modules/minimist/test/long.js
new file mode 100644
index 00000000..5d3a1e09
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/node_modules/minimist/test/long.js
@@ -0,0 +1,31 @@
+var test = require('tape');
+var parse = require('../');
+
+test('long opts', function (t) {
+ t.deepEqual(
+ parse([ '--bool' ]),
+ { bool : true, _ : [] },
+ 'long boolean'
+ );
+ t.deepEqual(
+ parse([ '--pow', 'xixxle' ]),
+ { pow : 'xixxle', _ : [] },
+ 'long capture sp'
+ );
+ t.deepEqual(
+ parse([ '--pow=xixxle' ]),
+ { pow : 'xixxle', _ : [] },
+ 'long capture eq'
+ );
+ t.deepEqual(
+ parse([ '--host', 'localhost', '--port', '555' ]),
+ { host : 'localhost', port : 555, _ : [] },
+ 'long captures sp'
+ );
+ t.deepEqual(
+ parse([ '--host=localhost', '--port=555' ]),
+ { host : 'localhost', port : 555, _ : [] },
+ 'long captures eq'
+ );
+ t.end();
+});
diff --git a/node_modules/http-server/node_modules/optimist/node_modules/minimist/test/num.js b/node_modules/http-server/node_modules/optimist/node_modules/minimist/test/num.js
new file mode 100644
index 00000000..2cc77f4d
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/node_modules/minimist/test/num.js
@@ -0,0 +1,36 @@
+var parse = require('../');
+var test = require('tape');
+
+test('nums', function (t) {
+ var argv = parse([
+ '-x', '1234',
+ '-y', '5.67',
+ '-z', '1e7',
+ '-w', '10f',
+ '--hex', '0xdeadbeef',
+ '789'
+ ]);
+ t.deepEqual(argv, {
+ x : 1234,
+ y : 5.67,
+ z : 1e7,
+ w : '10f',
+ hex : 0xdeadbeef,
+ _ : [ 789 ]
+ });
+ t.deepEqual(typeof argv.x, 'number');
+ t.deepEqual(typeof argv.y, 'number');
+ t.deepEqual(typeof argv.z, 'number');
+ t.deepEqual(typeof argv.w, 'string');
+ t.deepEqual(typeof argv.hex, 'number');
+ t.deepEqual(typeof argv._[0], 'number');
+ t.end();
+});
+
+test('already a number', function (t) {
+ var argv = parse([ '-x', 1234, 789 ]);
+ t.deepEqual(argv, { x : 1234, _ : [ 789 ] });
+ t.deepEqual(typeof argv.x, 'number');
+ t.deepEqual(typeof argv._[0], 'number');
+ t.end();
+});
diff --git a/node_modules/http-server/node_modules/optimist/node_modules/minimist/test/parse.js b/node_modules/http-server/node_modules/optimist/node_modules/minimist/test/parse.js
new file mode 100644
index 00000000..7b4a2a17
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/node_modules/minimist/test/parse.js
@@ -0,0 +1,197 @@
+var parse = require('../');
+var test = require('tape');
+
+test('parse args', function (t) {
+ t.deepEqual(
+ parse([ '--no-moo' ]),
+ { moo : false, _ : [] },
+ 'no'
+ );
+ t.deepEqual(
+ parse([ '-v', 'a', '-v', 'b', '-v', 'c' ]),
+ { v : ['a','b','c'], _ : [] },
+ 'multi'
+ );
+ t.end();
+});
+
+test('comprehensive', function (t) {
+ t.deepEqual(
+ parse([
+ '--name=meowmers', 'bare', '-cats', 'woo',
+ '-h', 'awesome', '--multi=quux',
+ '--key', 'value',
+ '-b', '--bool', '--no-meep', '--multi=baz',
+ '--', '--not-a-flag', 'eek'
+ ]),
+ {
+ c : true,
+ a : true,
+ t : true,
+ s : 'woo',
+ h : 'awesome',
+ b : true,
+ bool : true,
+ key : 'value',
+ multi : [ 'quux', 'baz' ],
+ meep : false,
+ name : 'meowmers',
+ _ : [ 'bare', '--not-a-flag', 'eek' ]
+ }
+ );
+ t.end();
+});
+
+test('flag boolean', function (t) {
+ var argv = parse([ '-t', 'moo' ], { boolean: 't' });
+ t.deepEqual(argv, { t : true, _ : [ 'moo' ] });
+ t.deepEqual(typeof argv.t, 'boolean');
+ t.end();
+});
+
+test('flag boolean value', function (t) {
+ var argv = parse(['--verbose', 'false', 'moo', '-t', 'true'], {
+ boolean: [ 't', 'verbose' ],
+ default: { verbose: true }
+ });
+
+ t.deepEqual(argv, {
+ verbose: false,
+ t: true,
+ _: ['moo']
+ });
+
+ t.deepEqual(typeof argv.verbose, 'boolean');
+ t.deepEqual(typeof argv.t, 'boolean');
+ t.end();
+});
+
+test('newlines in params' , function (t) {
+ var args = parse([ '-s', "X\nX" ])
+ t.deepEqual(args, { _ : [], s : "X\nX" });
+
+ // reproduce in bash:
+ // VALUE="new
+ // line"
+ // node program.js --s="$VALUE"
+ args = parse([ "--s=X\nX" ])
+ t.deepEqual(args, { _ : [], s : "X\nX" });
+ t.end();
+});
+
+test('strings' , function (t) {
+ var s = parse([ '-s', '0001234' ], { string: 's' }).s;
+ t.equal(s, '0001234');
+ t.equal(typeof s, 'string');
+
+ var x = parse([ '-x', '56' ], { string: 'x' }).x;
+ t.equal(x, '56');
+ t.equal(typeof x, 'string');
+ t.end();
+});
+
+test('stringArgs', function (t) {
+ var s = parse([ ' ', ' ' ], { string: '_' })._;
+ t.same(s.length, 2);
+ t.same(typeof s[0], 'string');
+ t.same(s[0], ' ');
+ t.same(typeof s[1], 'string');
+ t.same(s[1], ' ');
+ t.end();
+});
+
+test('empty strings', function(t) {
+ var s = parse([ '-s' ], { string: 's' }).s;
+ t.equal(s, '');
+ t.equal(typeof s, 'string');
+
+ var str = parse([ '--str' ], { string: 'str' }).str;
+ t.equal(str, '');
+ t.equal(typeof str, 'string');
+
+ var letters = parse([ '-art' ], {
+ string: [ 'a', 't' ]
+ });
+
+ t.equal(letters.a, '');
+ t.equal(letters.r, true);
+ t.equal(letters.t, '');
+
+ t.end();
+});
+
+
+test('string and alias', function(t) {
+ var x = parse([ '--str', '000123' ], {
+ string: 's',
+ alias: { s: 'str' }
+ });
+
+ t.equal(x.str, '000123');
+ t.equal(typeof x.str, 'string');
+ t.equal(x.s, '000123');
+ t.equal(typeof x.s, 'string');
+
+ var y = parse([ '-s', '000123' ], {
+ string: 'str',
+ alias: { str: 's' }
+ });
+
+ t.equal(y.str, '000123');
+ t.equal(typeof y.str, 'string');
+ t.equal(y.s, '000123');
+ t.equal(typeof y.s, 'string');
+ t.end();
+});
+
+test('slashBreak', function (t) {
+ t.same(
+ parse([ '-I/foo/bar/baz' ]),
+ { I : '/foo/bar/baz', _ : [] }
+ );
+ t.same(
+ parse([ '-xyz/foo/bar/baz' ]),
+ { x : true, y : true, z : '/foo/bar/baz', _ : [] }
+ );
+ t.end();
+});
+
+test('alias', function (t) {
+ var argv = parse([ '-f', '11', '--zoom', '55' ], {
+ alias: { z: 'zoom' }
+ });
+ t.equal(argv.zoom, 55);
+ t.equal(argv.z, argv.zoom);
+ t.equal(argv.f, 11);
+ t.end();
+});
+
+test('multiAlias', function (t) {
+ var argv = parse([ '-f', '11', '--zoom', '55' ], {
+ alias: { z: [ 'zm', 'zoom' ] }
+ });
+ t.equal(argv.zoom, 55);
+ t.equal(argv.z, argv.zoom);
+ t.equal(argv.z, argv.zm);
+ t.equal(argv.f, 11);
+ t.end();
+});
+
+test('nested dotted objects', function (t) {
+ var argv = parse([
+ '--foo.bar', '3', '--foo.baz', '4',
+ '--foo.quux.quibble', '5', '--foo.quux.o_O',
+ '--beep.boop'
+ ]);
+
+ t.same(argv.foo, {
+ bar : 3,
+ baz : 4,
+ quux : {
+ quibble : 5,
+ o_O : true
+ }
+ });
+ t.same(argv.beep, { boop : true });
+ t.end();
+});
diff --git a/node_modules/http-server/node_modules/optimist/node_modules/minimist/test/parse_modified.js b/node_modules/http-server/node_modules/optimist/node_modules/minimist/test/parse_modified.js
new file mode 100644
index 00000000..21851b03
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/node_modules/minimist/test/parse_modified.js
@@ -0,0 +1,9 @@
+var parse = require('../');
+var test = require('tape');
+
+test('parse with modifier functions' , function (t) {
+ t.plan(1);
+
+ var argv = parse([ '-b', '123' ], { boolean: 'b' });
+ t.deepEqual(argv, { b: true, _: ['123'] });
+});
diff --git a/node_modules/http-server/node_modules/optimist/node_modules/minimist/test/short.js b/node_modules/http-server/node_modules/optimist/node_modules/minimist/test/short.js
new file mode 100644
index 00000000..d513a1c2
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/node_modules/minimist/test/short.js
@@ -0,0 +1,67 @@
+var parse = require('../');
+var test = require('tape');
+
+test('numeric short args', function (t) {
+ t.plan(2);
+ t.deepEqual(parse([ '-n123' ]), { n: 123, _: [] });
+ t.deepEqual(
+ parse([ '-123', '456' ]),
+ { 1: true, 2: true, 3: 456, _: [] }
+ );
+});
+
+test('short', function (t) {
+ t.deepEqual(
+ parse([ '-b' ]),
+ { b : true, _ : [] },
+ 'short boolean'
+ );
+ t.deepEqual(
+ parse([ 'foo', 'bar', 'baz' ]),
+ { _ : [ 'foo', 'bar', 'baz' ] },
+ 'bare'
+ );
+ t.deepEqual(
+ parse([ '-cats' ]),
+ { c : true, a : true, t : true, s : true, _ : [] },
+ 'group'
+ );
+ t.deepEqual(
+ parse([ '-cats', 'meow' ]),
+ { c : true, a : true, t : true, s : 'meow', _ : [] },
+ 'short group next'
+ );
+ t.deepEqual(
+ parse([ '-h', 'localhost' ]),
+ { h : 'localhost', _ : [] },
+ 'short capture'
+ );
+ t.deepEqual(
+ parse([ '-h', 'localhost', '-p', '555' ]),
+ { h : 'localhost', p : 555, _ : [] },
+ 'short captures'
+ );
+ t.end();
+});
+
+test('mixed short bool and capture', function (t) {
+ t.same(
+ parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]),
+ {
+ f : true, p : 555, h : 'localhost',
+ _ : [ 'script.js' ]
+ }
+ );
+ t.end();
+});
+
+test('short and long', function (t) {
+ t.deepEqual(
+ parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]),
+ {
+ f : true, p : 555, h : 'localhost',
+ _ : [ 'script.js' ]
+ }
+ );
+ t.end();
+});
diff --git a/node_modules/http-server/node_modules/optimist/node_modules/minimist/test/whitespace.js b/node_modules/http-server/node_modules/optimist/node_modules/minimist/test/whitespace.js
new file mode 100644
index 00000000..8a52a58c
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/node_modules/minimist/test/whitespace.js
@@ -0,0 +1,8 @@
+var parse = require('../');
+var test = require('tape');
+
+test('whitespace should be whitespace' , function (t) {
+ t.plan(1);
+ var x = parse([ '-x', '\t' ]).x;
+ t.equal(x, '\t');
+});
diff --git a/node_modules/http-server/node_modules/optimist/node_modules/wordwrap/LICENSE b/node_modules/http-server/node_modules/optimist/node_modules/wordwrap/LICENSE
new file mode 100644
index 00000000..ee27ba4b
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/node_modules/wordwrap/LICENSE
@@ -0,0 +1,18 @@
+This software is released under the MIT license:
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/http-server/node_modules/optimist/node_modules/wordwrap/README.markdown b/node_modules/http-server/node_modules/optimist/node_modules/wordwrap/README.markdown
new file mode 100644
index 00000000..346374e0
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/node_modules/wordwrap/README.markdown
@@ -0,0 +1,70 @@
+wordwrap
+========
+
+Wrap your words.
+
+example
+=======
+
+made out of meat
+----------------
+
+meat.js
+
+ var wrap = require('wordwrap')(15);
+ console.log(wrap('You and your whole family are made out of meat.'));
+
+output:
+
+ You and your
+ whole family
+ are made out
+ of meat.
+
+centered
+--------
+
+center.js
+
+ var wrap = require('wordwrap')(20, 60);
+ console.log(wrap(
+ 'At long last the struggle and tumult was over.'
+ + ' The machines had finally cast off their oppressors'
+ + ' and were finally free to roam the cosmos.'
+ + '\n'
+ + 'Free of purpose, free of obligation.'
+ + ' Just drifting through emptiness.'
+ + ' The sun was just another point of light.'
+ ));
+
+output:
+
+ At long last the struggle and tumult
+ was over. The machines had finally cast
+ off their oppressors and were finally
+ free to roam the cosmos.
+ Free of purpose, free of obligation.
+ Just drifting through emptiness. The
+ sun was just another point of light.
+
+methods
+=======
+
+var wrap = require('wordwrap');
+
+wrap(stop), wrap(start, stop, params={mode:"soft"})
+---------------------------------------------------
+
+Returns a function that takes a string and returns a new string.
+
+Pad out lines with spaces out to column `start` and then wrap until column
+`stop`. If a word is longer than `stop - start` characters it will overflow.
+
+In "soft" mode, split chunks by `/(\S+\s+/` and don't break up chunks which are
+longer than `stop - start`, in "hard" mode, split chunks with `/\b/` and break
+up chunks longer than `stop - start`.
+
+wrap.hard(start, stop)
+----------------------
+
+Like `wrap()` but with `params.mode = "hard"`.
diff --git a/node_modules/http-server/node_modules/optimist/node_modules/wordwrap/example/center.js b/node_modules/http-server/node_modules/optimist/node_modules/wordwrap/example/center.js
new file mode 100644
index 00000000..a3fbaae9
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/node_modules/wordwrap/example/center.js
@@ -0,0 +1,10 @@
+var wrap = require('wordwrap')(20, 60);
+console.log(wrap(
+ 'At long last the struggle and tumult was over.'
+ + ' The machines had finally cast off their oppressors'
+ + ' and were finally free to roam the cosmos.'
+ + '\n'
+ + 'Free of purpose, free of obligation.'
+ + ' Just drifting through emptiness.'
+ + ' The sun was just another point of light.'
+));
diff --git a/node_modules/http-server/node_modules/optimist/node_modules/wordwrap/example/meat.js b/node_modules/http-server/node_modules/optimist/node_modules/wordwrap/example/meat.js
new file mode 100644
index 00000000..a4665e10
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/node_modules/wordwrap/example/meat.js
@@ -0,0 +1,3 @@
+var wrap = require('wordwrap')(15);
+
+console.log(wrap('You and your whole family are made out of meat.'));
diff --git a/node_modules/http-server/node_modules/optimist/node_modules/wordwrap/index.js b/node_modules/http-server/node_modules/optimist/node_modules/wordwrap/index.js
new file mode 100644
index 00000000..c9bc9452
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/node_modules/wordwrap/index.js
@@ -0,0 +1,76 @@
+var wordwrap = module.exports = function (start, stop, params) {
+ if (typeof start === 'object') {
+ params = start;
+ start = params.start;
+ stop = params.stop;
+ }
+
+ if (typeof stop === 'object') {
+ params = stop;
+ start = start || params.start;
+ stop = undefined;
+ }
+
+ if (!stop) {
+ stop = start;
+ start = 0;
+ }
+
+ if (!params) params = {};
+ var mode = params.mode || 'soft';
+ var re = mode === 'hard' ? /\b/ : /(\S+\s+)/;
+
+ return function (text) {
+ var chunks = text.toString()
+ .split(re)
+ .reduce(function (acc, x) {
+ if (mode === 'hard') {
+ for (var i = 0; i < x.length; i += stop - start) {
+ acc.push(x.slice(i, i + stop - start));
+ }
+ }
+ else acc.push(x)
+ return acc;
+ }, [])
+ ;
+
+ return chunks.reduce(function (lines, rawChunk) {
+ if (rawChunk === '') return lines;
+
+ var chunk = rawChunk.replace(/\t/g, ' ');
+
+ var i = lines.length - 1;
+ if (lines[i].length + chunk.length > stop) {
+ lines[i] = lines[i].replace(/\s+$/, '');
+
+ chunk.split(/\n/).forEach(function (c) {
+ lines.push(
+ new Array(start + 1).join(' ')
+ + c.replace(/^\s+/, '')
+ );
+ });
+ }
+ else if (chunk.match(/\n/)) {
+ var xs = chunk.split(/\n/);
+ lines[i] += xs.shift();
+ xs.forEach(function (c) {
+ lines.push(
+ new Array(start + 1).join(' ')
+ + c.replace(/^\s+/, '')
+ );
+ });
+ }
+ else {
+ lines[i] += chunk;
+ }
+
+ return lines;
+ }, [ new Array(start + 1).join(' ') ]).join('\n');
+ };
+};
+
+wordwrap.soft = wordwrap;
+
+wordwrap.hard = function (start, stop) {
+ return wordwrap(start, stop, { mode : 'hard' });
+};
diff --git a/node_modules/http-server/node_modules/optimist/node_modules/wordwrap/package.json b/node_modules/http-server/node_modules/optimist/node_modules/wordwrap/package.json
new file mode 100644
index 00000000..1f0527e5
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/node_modules/wordwrap/package.json
@@ -0,0 +1,63 @@
+{
+ "name": "wordwrap",
+ "description": "Wrap those words. Show them at what columns to start and stop.",
+ "version": "0.0.3",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/substack/node-wordwrap.git"
+ },
+ "main": "./index.js",
+ "keywords": [
+ "word",
+ "wrap",
+ "rule",
+ "format",
+ "column"
+ ],
+ "directories": {
+ "lib": ".",
+ "example": "example",
+ "test": "test"
+ },
+ "scripts": {
+ "test": "expresso"
+ },
+ "devDependencies": {
+ "expresso": "=0.7.x"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ },
+ "license": "MIT",
+ "author": {
+ "name": "James Halliday",
+ "email": "mail@substack.net",
+ "url": "http://substack.net"
+ },
+ "gitHead": "e59aa1bd338914019456bdfba034508c9c4cb29d",
+ "bugs": {
+ "url": "https://github.com/substack/node-wordwrap/issues"
+ },
+ "homepage": "https://github.com/substack/node-wordwrap#readme",
+ "_id": "wordwrap@0.0.3",
+ "_shasum": "a3d5da6cd5c0bc0008d37234bbaf1bed63059107",
+ "_from": "wordwrap@>=0.0.2 <0.1.0",
+ "_npmVersion": "2.9.0",
+ "_nodeVersion": "2.0.0",
+ "_npmUser": {
+ "name": "substack",
+ "email": "substack@gmail.com"
+ },
+ "dist": {
+ "shasum": "a3d5da6cd5c0bc0008d37234bbaf1bed63059107",
+ "tarball": "http://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz"
+ },
+ "maintainers": [
+ {
+ "name": "substack",
+ "email": "mail@substack.net"
+ }
+ ],
+ "_resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/node_modules/http-server/node_modules/optimist/node_modules/wordwrap/test/break.js b/node_modules/http-server/node_modules/optimist/node_modules/wordwrap/test/break.js
new file mode 100644
index 00000000..749292ec
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/node_modules/wordwrap/test/break.js
@@ -0,0 +1,30 @@
+var assert = require('assert');
+var wordwrap = require('../');
+
+exports.hard = function () {
+ var s = 'Assert from {"type":"equal","ok":false,"found":1,"wanted":2,'
+ + '"stack":[],"id":"b7ddcd4c409de8799542a74d1a04689b",'
+ + '"browser":"chrome/6.0"}'
+ ;
+ var s_ = wordwrap.hard(80)(s);
+
+ var lines = s_.split('\n');
+ assert.equal(lines.length, 2);
+ assert.ok(lines[0].length < 80);
+ assert.ok(lines[1].length < 80);
+
+ assert.equal(s, s_.replace(/\n/g, ''));
+};
+
+exports.break = function () {
+ var s = new Array(55+1).join('a');
+ var s_ = wordwrap.hard(20)(s);
+
+ var lines = s_.split('\n');
+ assert.equal(lines.length, 3);
+ assert.ok(lines[0].length === 20);
+ assert.ok(lines[1].length === 20);
+ assert.ok(lines[2].length === 15);
+
+ assert.equal(s, s_.replace(/\n/g, ''));
+};
diff --git a/node_modules/http-server/node_modules/optimist/node_modules/wordwrap/test/idleness.txt b/node_modules/http-server/node_modules/optimist/node_modules/wordwrap/test/idleness.txt
new file mode 100644
index 00000000..aa3f4907
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/node_modules/wordwrap/test/idleness.txt
@@ -0,0 +1,63 @@
+In Praise of Idleness
+
+By Bertrand Russell
+
+[1932]
+
+Like most of my generation, I was brought up on the saying: 'Satan finds some mischief for idle hands to do.' Being a highly virtuous child, I believed all that I was told, and acquired a conscience which has kept me working hard down to the present moment. But although my conscience has controlled my actions, my opinions have undergone a revolution. I think that there is far too much work done in the world, that immense harm is caused by the belief that work is virtuous, and that what needs to be preached in modern industrial countries is quite different from what always has been preached. Everyone knows the story of the traveler in Naples who saw twelve beggars lying in the sun (it was before the days of Mussolini), and offered a lira to the laziest of them. Eleven of them jumped up to claim it, so he gave it to the twelfth. this traveler was on the right lines. But in countries which do not enjoy Mediterranean sunshine idleness is more difficult, and a great public propaganda will be required to inaugurate it. I hope that, after reading the following pages, the leaders of the YMCA will start a campaign to induce good young men to do nothing. If so, I shall not have lived in vain.
+
+Before advancing my own arguments for laziness, I must dispose of one which I cannot accept. Whenever a person who already has enough to live on proposes to engage in some everyday kind of job, such as school-teaching or typing, he or she is told that such conduct takes the bread out of other people's mouths, and is therefore wicked. If this argument were valid, it would only be necessary for us all to be idle in order that we should all have our mouths full of bread. What people who say such things forget is that what a man earns he usually spends, and in spending he gives employment. As long as a man spends his income, he puts just as much bread into people's mouths in spending as he takes out of other people's mouths in earning. The real villain, from this point of view, is the man who saves. If he merely puts his savings in a stocking, like the proverbial French peasant, it is obvious that they do not give employment. If he invests his savings, the matter is less obvious, and different cases arise.
+
+One of the commonest things to do with savings is to lend them to some Government. In view of the fact that the bulk of the public expenditure of most civilized Governments consists in payment for past wars or preparation for future wars, the man who lends his money to a Government is in the same position as the bad men in Shakespeare who hire murderers. The net result of the man's economical habits is to increase the armed forces of the State to which he lends his savings. Obviously it would be better if he spent the money, even if he spent it in drink or gambling.
+
+But, I shall be told, the case is quite different when savings are invested in industrial enterprises. When such enterprises succeed, and produce something useful, this may be conceded. In these days, however, no one will deny that most enterprises fail. That means that a large amount of human labor, which might have been devoted to producing something that could be enjoyed, was expended on producing machines which, when produced, lay idle and did no good to anyone. The man who invests his savings in a concern that goes bankrupt is therefore injuring others as well as himself. If he spent his money, say, in giving parties for his friends, they (we may hope) would get pleasure, and so would all those upon whom he spent money, such as the butcher, the baker, and the bootlegger. But if he spends it (let us say) upon laying down rails for surface card in some place where surface cars turn out not to be wanted, he has diverted a mass of labor into channels where it gives pleasure to no one. Nevertheless, when he becomes poor through failure of his investment he will be regarded as a victim of undeserved misfortune, whereas the gay spendthrift, who has spent his money philanthropically, will be despised as a fool and a frivolous person.
+
+All this is only preliminary. I want to say, in all seriousness, that a great deal of harm is being done in the modern world by belief in the virtuousness of work, and that the road to happiness and prosperity lies in an organized diminution of work.
+
+First of all: what is work? Work is of two kinds: first, altering the position of matter at or near the earth's surface relatively to other such matter; second, telling other people to do so. The first kind is unpleasant and ill paid; the second is pleasant and highly paid. The second kind is capable of indefinite extension: there are not only those who give orders, but those who give advice as to what orders should be given. Usually two opposite kinds of advice are given simultaneously by two organized bodies of men; this is called politics. The skill required for this kind of work is not knowledge of the subjects as to which advice is given, but knowledge of the art of persuasive speaking and writing, i.e. of advertising.
+
+Throughout Europe, though not in America, there is a third class of men, more respected than either of the classes of workers. There are men who, through ownership of land, are able to make others pay for the privilege of being allowed to exist and to work. These landowners are idle, and I might therefore be expected to praise them. Unfortunately, their idleness is only rendered possible by the industry of others; indeed their desire for comfortable idleness is historically the source of the whole gospel of work. The last thing they have ever wished is that others should follow their example.
+
+From the beginning of civilization until the Industrial Revolution, a man could, as a rule, produce by hard work little more than was required for the subsistence of himself and his family, although his wife worked at least as hard as he did, and his children added their labor as soon as they were old enough to do so. The small surplus above bare necessaries was not left to those who produced it, but was appropriated by warriors and priests. In times of famine there was no surplus; the warriors and priests, however, still secured as much as at other times, with the result that many of the workers died of hunger. This system persisted in Russia until 1917 [1], and still persists in the East; in England, in spite of the Industrial Revolution, it remained in full force throughout the Napoleonic wars, and until a hundred years ago, when the new class of manufacturers acquired power. In America, the system came to an end with the Revolution, except in the South, where it persisted until the Civil War. A system which lasted so long and ended so recently has naturally left a profound impress upon men's thoughts and opinions. Much that we take for granted about the desirability of work is derived from this system, and, being pre-industrial, is not adapted to the modern world. Modern technique has made it possible for leisure, within limits, to be not the prerogative of small privileged classes, but a right evenly distributed throughout the community. The morality of work is the morality of slaves, and the modern world has no need of slavery.
+
+It is obvious that, in primitive communities, peasants, left to themselves, would not have parted with the slender surplus upon which the warriors and priests subsisted, but would have either produced less or consumed more. At first, sheer force compelled them to produce and part with the surplus. Gradually, however, it was found possible to induce many of them to accept an ethic according to which it was their duty to work hard, although part of their work went to support others in idleness. By this means the amount of compulsion required was lessened, and the expenses of government were diminished. To this day, 99 per cent of British wage-earners would be genuinely shocked if it were proposed that the King should not have a larger income than a working man. The conception of duty, speaking historically, has been a means used by the holders of power to induce others to live for the interests of their masters rather than for their own. Of course the holders of power conceal this fact from themselves by managing to believe that their interests are identical with the larger interests of humanity. Sometimes this is true; Athenian slave-owners, for instance, employed part of their leisure in making a permanent contribution to civilization which would have been impossible under a just economic system. Leisure is essential to civilization, and in former times leisure for the few was only rendered possible by the labors of the many. But their labors were valuable, not because work is good, but because leisure is good. And with modern technique it would be possible to distribute leisure justly without injury to civilization.
+
+Modern technique has made it possible to diminish enormously the amount of labor required to secure the necessaries of life for everyone. This was made obvious during the war. At that time all the men in the armed forces, and all the men and women engaged in the production of munitions, all the men and women engaged in spying, war propaganda, or Government offices connected with the war, were withdrawn from productive occupations. In spite of this, the general level of well-being among unskilled wage-earners on the side of the Allies was higher than before or since. The significance of this fact was concealed by finance: borrowing made it appear as if the future was nourishing the present. But that, of course, would have been impossible; a man cannot eat a loaf of bread that does not yet exist. The war showed conclusively that, by the scientific organization of production, it is possible to keep modern populations in fair comfort on a small part of the working capacity of the modern world. If, at the end of the war, the scientific organization, which had been created in order to liberate men for fighting and munition work, had been preserved, and the hours of the week had been cut down to four, all would have been well. Instead of that the old chaos was restored, those whose work was demanded were made to work long hours, and the rest were left to starve as unemployed. Why? Because work is a duty, and a man should not receive wages in proportion to what he has produced, but in proportion to his virtue as exemplified by his industry.
+
+This is the morality of the Slave State, applied in circumstances totally unlike those in which it arose. No wonder the result has been disastrous. Let us take an illustration. Suppose that, at a given moment, a certain number of people are engaged in the manufacture of pins. They make as many pins as the world needs, working (say) eight hours a day. Someone makes an invention by which the same number of men can make twice as many pins: pins are already so cheap that hardly any more will be bought at a lower price. In a sensible world, everybody concerned in the manufacturing of pins would take to working four hours instead of eight, and everything else would go on as before. But in the actual world this would be thought demoralizing. The men still work eight hours, there are too many pins, some employers go bankrupt, and half the men previously concerned in making pins are thrown out of work. There is, in the end, just as much leisure as on the other plan, but half the men are totally idle while half are still overworked. In this way, it is insured that the unavoidable leisure shall cause misery all round instead of being a universal source of happiness. Can anything more insane be imagined?
+
+The idea that the poor should have leisure has always been shocking to the rich. In England, in the early nineteenth century, fifteen hours was the ordinary day's work for a man; children sometimes did as much, and very commonly did twelve hours a day. When meddlesome busybodies suggested that perhaps these hours were rather long, they were told that work kept adults from drink and children from mischief. When I was a child, shortly after urban working men had acquired the vote, certain public holidays were established by law, to the great indignation of the upper classes. I remember hearing an old Duchess say: 'What do the poor want with holidays? They ought to work.' People nowadays are less frank, but the sentiment persists, and is the source of much of our economic confusion.
+
+Let us, for a moment, consider the ethics of work frankly, without superstition. Every human being, of necessity, consumes, in the course of his life, a certain amount of the produce of human labor. Assuming, as we may, that labor is on the whole disagreeable, it is unjust that a man should consume more than he produces. Of course he may provide services rather than commodities, like a medical man, for example; but he should provide something in return for his board and lodging. to this extent, the duty of work must be admitted, but to this extent only.
+
+I shall not dwell upon the fact that, in all modern societies outside the USSR, many people escape even this minimum amount of work, namely all those who inherit money and all those who marry money. I do not think the fact that these people are allowed to be idle is nearly so harmful as the fact that wage-earners are expected to overwork or starve.
+
+If the ordinary wage-earner worked four hours a day, there would be enough for everybody and no unemployment -- assuming a certain very moderate amount of sensible organization. This idea shocks the well-to-do, because they are convinced that the poor would not know how to use so much leisure. In America men often work long hours even when they are well off; such men, naturally, are indignant at the idea of leisure for wage-earners, except as the grim punishment of unemployment; in fact, they dislike leisure even for their sons. Oddly enough, while they wish their sons to work so hard as to have no time to be civilized, they do not mind their wives and daughters having no work at all. the snobbish admiration of uselessness, which, in an aristocratic society, extends to both sexes, is, under a plutocracy, confined to women; this, however, does not make it any more in agreement with common sense.
+
+The wise use of leisure, it must be conceded, is a product of civilization and education. A man who has worked long hours all his life will become bored if he becomes suddenly idle. But without a considerable amount of leisure a man is cut off from many of the best things. There is no longer any reason why the bulk of the population should suffer this deprivation; only a foolish asceticism, usually vicarious, makes us continue to insist on work in excessive quantities now that the need no longer exists.
+
+In the new creed which controls the government of Russia, while there is much that is very different from the traditional teaching of the West, there are some things that are quite unchanged. The attitude of the governing classes, and especially of those who conduct educational propaganda, on the subject of the dignity of labor, is almost exactly that which the governing classes of the world have always preached to what were called the 'honest poor'. Industry, sobriety, willingness to work long hours for distant advantages, even submissiveness to authority, all these reappear; moreover authority still represents the will of the Ruler of the Universe, Who, however, is now called by a new name, Dialectical Materialism.
+
+The victory of the proletariat in Russia has some points in common with the victory of the feminists in some other countries. For ages, men had conceded the superior saintliness of women, and had consoled women for their inferiority by maintaining that saintliness is more desirable than power. At last the feminists decided that they would have both, since the pioneers among them believed all that the men had told them about the desirability of virtue, but not what they had told them about the worthlessness of political power. A similar thing has happened in Russia as regards manual work. For ages, the rich and their sycophants have written in praise of 'honest toil', have praised the simple life, have professed a religion which teaches that the poor are much more likely to go to heaven than the rich, and in general have tried to make manual workers believe that there is some special nobility about altering the position of matter in space, just as men tried to make women believe that they derived some special nobility from their sexual enslavement. In Russia, all this teaching about the excellence of manual work has been taken seriously, with the result that the manual worker is more honored than anyone else. What are, in essence, revivalist appeals are made, but not for the old purposes: they are made to secure shock workers for special tasks. Manual work is the ideal which is held before the young, and is the basis of all ethical teaching.
+
+For the present, possibly, this is all to the good. A large country, full of natural resources, awaits development, and has has to be developed with very little use of credit. In these circumstances, hard work is necessary, and is likely to bring a great reward. But what will happen when the point has been reached where everybody could be comfortable without working long hours?
+
+In the West, we have various ways of dealing with this problem. We have no attempt at economic justice, so that a large proportion of the total produce goes to a small minority of the population, many of whom do no work at all. Owing to the absence of any central control over production, we produce hosts of things that are not wanted. We keep a large percentage of the working population idle, because we can dispense with their labor by making the others overwork. When all these methods prove inadequate, we have a war: we cause a number of people to manufacture high explosives, and a number of others to explode them, as if we were children who had just discovered fireworks. By a combination of all these devices we manage, though with difficulty, to keep alive the notion that a great deal of severe manual work must be the lot of the average man.
+
+In Russia, owing to more economic justice and central control over production, the problem will have to be differently solved. the rational solution would be, as soon as the necessaries and elementary comforts can be provided for all, to reduce the hours of labor gradually, allowing a popular vote to decide, at each stage, whether more leisure or more goods were to be preferred. But, having taught the supreme virtue of hard work, it is difficult to see how the authorities can aim at a paradise in which there will be much leisure and little work. It seems more likely that they will find continually fresh schemes, by which present leisure is to be sacrificed to future productivity. I read recently of an ingenious plan put forward by Russian engineers, for making the White Sea and the northern coasts of Siberia warm, by putting a dam across the Kara Sea. An admirable project, but liable to postpone proletarian comfort for a generation, while the nobility of toil is being displayed amid the ice-fields and snowstorms of the Arctic Ocean. This sort of thing, if it happens, will be the result of regarding the virtue of hard work as an end in itself, rather than as a means to a state of affairs in which it is no longer needed.
+
+The fact is that moving matter about, while a certain amount of it is necessary to our existence, is emphatically not one of the ends of human life. If it were, we should have to consider every navvy superior to Shakespeare. We have been misled in this matter by two causes. One is the necessity of keeping the poor contented, which has led the rich, for thousands of years, to preach the dignity of labor, while taking care themselves to remain undignified in this respect. The other is the new pleasure in mechanism, which makes us delight in the astonishingly clever changes that we can produce on the earth's surface. Neither of these motives makes any great appeal to the actual worker. If you ask him what he thinks the best part of his life, he is not likely to say: 'I enjoy manual work because it makes me feel that I am fulfilling man's noblest task, and because I like to think how much man can transform his planet. It is true that my body demands periods of rest, which I have to fill in as best I may, but I am never so happy as when the morning comes and I can return to the toil from which my contentment springs.' I have never heard working men say this sort of thing. They consider work, as it should be considered, a necessary means to a livelihood, and it is from their leisure that they derive whatever happiness they may enjoy.
+
+It will be said that, while a little leisure is pleasant, men would not know how to fill their days if they had only four hours of work out of the twenty-four. In so far as this is true in the modern world, it is a condemnation of our civilization; it would not have been true at any earlier period. There was formerly a capacity for light-heartedness and play which has been to some extent inhibited by the cult of efficiency. The modern man thinks that everything ought to be done for the sake of something else, and never for its own sake. Serious-minded persons, for example, are continually condemning the habit of going to the cinema, and telling us that it leads the young into crime. But all the work that goes to producing a cinema is respectable, because it is work, and because it brings a money profit. The notion that the desirable activities are those that bring a profit has made everything topsy-turvy. The butcher who provides you with meat and the baker who provides you with bread are praiseworthy, because they are making money; but when you enjoy the food they have provided, you are merely frivolous, unless you eat only to get strength for your work. Broadly speaking, it is held that getting money is good and spending money is bad. Seeing that they are two sides of one transaction, this is absurd; one might as well maintain that keys are good, but keyholes are bad. Whatever merit there may be in the production of goods must be entirely derivative from the advantage to be obtained by consuming them. The individual, in our society, works for profit; but the social purpose of his work lies in the consumption of what he produces. It is this divorce between the individual and the social purpose of production that makes it so difficult for men to think clearly in a world in which profit-making is the incentive to industry. We think too much of production, and too little of consumption. One result is that we attach too little importance to enjoyment and simple happiness, and that we do not judge production by the pleasure that it gives to the consumer.
+
+When I suggest that working hours should be reduced to four, I am not meaning to imply that all the remaining time should necessarily be spent in pure frivolity. I mean that four hours' work a day should entitle a man to the necessities and elementary comforts of life, and that the rest of his time should be his to use as he might see fit. It is an essential part of any such social system that education should be carried further than it usually is at present, and should aim, in part, at providing tastes which would enable a man to use leisure intelligently. I am not thinking mainly of the sort of things that would be considered 'highbrow'. Peasant dances have died out except in remote rural areas, but the impulses which caused them to be cultivated must still exist in human nature. The pleasures of urban populations have become mainly passive: seeing cinemas, watching football matches, listening to the radio, and so on. This results from the fact that their active energies are fully taken up with work; if they had more leisure, they would again enjoy pleasures in which they took an active part.
+
+In the past, there was a small leisure class and a larger working class. The leisure class enjoyed advantages for which there was no basis in social justice; this necessarily made it oppressive, limited its sympathies, and caused it to invent theories by which to justify its privileges. These facts greatly diminished its excellence, but in spite of this drawback it contributed nearly the whole of what we call civilization. It cultivated the arts and discovered the sciences; it wrote the books, invented the philosophies, and refined social relations. Even the liberation of the oppressed has usually been inaugurated from above. Without the leisure class, mankind would never have emerged from barbarism.
+
+The method of a leisure class without duties was, however, extraordinarily wasteful. None of the members of the class had to be taught to be industrious, and the class as a whole was not exceptionally intelligent. The class might produce one Darwin, but against him had to be set tens of thousands of country gentlemen who never thought of anything more intelligent than fox-hunting and punishing poachers. At present, the universities are supposed to provide, in a more systematic way, what the leisure class provided accidentally and as a by-product. This is a great improvement, but it has certain drawbacks. University life is so different from life in the world at large that men who live in academic milieu tend to be unaware of the preoccupations and problems of ordinary men and women; moreover their ways of expressing themselves are usually such as to rob their opinions of the influence that they ought to have upon the general public. Another disadvantage is that in universities studies are organized, and the man who thinks of some original line of research is likely to be discouraged. Academic institutions, therefore, useful as they are, are not adequate guardians of the interests of civilization in a world where everyone outside their walls is too busy for unutilitarian pursuits.
+
+In a world where no one is compelled to work more than four hours a day, every person possessed of scientific curiosity will be able to indulge it, and every painter will be able to paint without starving, however excellent his pictures may be. Young writers will not be obliged to draw attention to themselves by sensational pot-boilers, with a view to acquiring the economic independence needed for monumental works, for which, when the time at last comes, they will have lost the taste and capacity. Men who, in their professional work, have become interested in some phase of economics or government, will be able to develop their ideas without the academic detachment that makes the work of university economists often seem lacking in reality. Medical men will have the time to learn about the progress of medicine, teachers will not be exasperatedly struggling to teach by routine methods things which they learnt in their youth, which may, in the interval, have been proved to be untrue.
+
+Above all, there will be happiness and joy of life, instead of frayed nerves, weariness, and dyspepsia. The work exacted will be enough to make leisure delightful, but not enough to produce exhaustion. Since men will not be tired in their spare time, they will not demand only such amusements as are passive and vapid. At least one per cent will probably devote the time not spent in professional work to pursuits of some public importance, and, since they will not depend upon these pursuits for their livelihood, their originality will be unhampered, and there will be no need to conform to the standards set by elderly pundits. But it is not only in these exceptional cases that the advantages of leisure will appear. Ordinary men and women, having the opportunity of a happy life, will become more kindly and less persecuting and less inclined to view others with suspicion. The taste for war will die out, partly for this reason, and partly because it will involve long and severe work for all. Good nature is, of all moral qualities, the one that the world needs most, and good nature is the result of ease and security, not of a life of arduous struggle. Modern methods of production have given us the possibility of ease and security for all; we have chosen, instead, to have overwork for some and starvation for others. Hitherto we have continued to be as energetic as we were before there were machines; in this we have been foolish, but there is no reason to go on being foolish forever.
+
+[1] Since then, members of the Communist Party have succeeded to this privilege of the warriors and priests.
diff --git a/node_modules/http-server/node_modules/optimist/node_modules/wordwrap/test/wrap.js b/node_modules/http-server/node_modules/optimist/node_modules/wordwrap/test/wrap.js
new file mode 100644
index 00000000..0cfb76d1
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/node_modules/wordwrap/test/wrap.js
@@ -0,0 +1,31 @@
+var assert = require('assert');
+var wordwrap = require('wordwrap');
+
+var fs = require('fs');
+var idleness = fs.readFileSync(__dirname + '/idleness.txt', 'utf8');
+
+exports.stop80 = function () {
+ var lines = wordwrap(80)(idleness).split(/\n/);
+ var words = idleness.split(/\s+/);
+
+ lines.forEach(function (line) {
+ assert.ok(line.length <= 80, 'line > 80 columns');
+ var chunks = line.match(/\S/) ? line.split(/\s+/) : [];
+ assert.deepEqual(chunks, words.splice(0, chunks.length));
+ });
+};
+
+exports.start20stop60 = function () {
+ var lines = wordwrap(20, 100)(idleness).split(/\n/);
+ var words = idleness.split(/\s+/);
+
+ lines.forEach(function (line) {
+ assert.ok(line.length <= 100, 'line > 100 columns');
+ var chunks = line
+ .split(/\s+/)
+ .filter(function (x) { return x.match(/\S/) })
+ ;
+ assert.deepEqual(chunks, words.splice(0, chunks.length));
+ assert.deepEqual(line.slice(0, 20), new Array(20 + 1).join(' '));
+ });
+};
diff --git a/node_modules/http-server/node_modules/optimist/package.json b/node_modules/http-server/node_modules/optimist/package.json
new file mode 100644
index 00000000..54d638d2
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/package.json
@@ -0,0 +1,64 @@
+{
+ "name": "optimist",
+ "version": "0.6.1",
+ "description": "Light-weight option parsing with an argv hash. No optstrings attached.",
+ "main": "./index.js",
+ "dependencies": {
+ "wordwrap": "~0.0.2",
+ "minimist": "~0.0.1"
+ },
+ "devDependencies": {
+ "hashish": "~0.0.4",
+ "tap": "~0.4.0"
+ },
+ "scripts": {
+ "test": "tap ./test/*.js"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+ssh://git@github.com/substack/node-optimist.git"
+ },
+ "keywords": [
+ "argument",
+ "args",
+ "option",
+ "parser",
+ "parsing",
+ "cli",
+ "command"
+ ],
+ "author": {
+ "name": "James Halliday",
+ "email": "mail@substack.net",
+ "url": "http://substack.net"
+ },
+ "license": "MIT/X11",
+ "engine": {
+ "node": ">=0.4"
+ },
+ "bugs": {
+ "url": "https://github.com/substack/node-optimist/issues"
+ },
+ "homepage": "https://github.com/substack/node-optimist",
+ "_id": "optimist@0.6.1",
+ "dist": {
+ "shasum": "da3ea74686fa21a19a111c326e90eb15a0196686",
+ "tarball": "http://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz"
+ },
+ "_from": "optimist@>=0.6.0 <0.7.0",
+ "_npmVersion": "1.3.21",
+ "_npmUser": {
+ "name": "substack",
+ "email": "mail@substack.net"
+ },
+ "maintainers": [
+ {
+ "name": "substack",
+ "email": "mail@substack.net"
+ }
+ ],
+ "directories": {},
+ "_shasum": "da3ea74686fa21a19a111c326e90eb15a0196686",
+ "_resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/node_modules/http-server/node_modules/optimist/readme.markdown b/node_modules/http-server/node_modules/optimist/readme.markdown
new file mode 100644
index 00000000..b74b4372
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/readme.markdown
@@ -0,0 +1,513 @@
+# DEPRECATION NOTICE
+
+I don't want to maintain this module anymore since I just use
+[minimist](https://npmjs.org/package/minimist), the argument parsing engine,
+directly instead nowadays.
+
+See [yargs](https://github.com/chevex/yargs) for the modern, pirate-themed
+successor to optimist.
+
+[](https://github.com/chevex/yargs)
+
+You should also consider [nomnom](https://github.com/harthur/nomnom).
+
+optimist
+========
+
+Optimist is a node.js library for option parsing for people who hate option
+parsing. More specifically, this module is for people who like all the --bells
+and -whistlz of program usage but think optstrings are a waste of time.
+
+With optimist, option parsing doesn't have to suck (as much).
+
+[](http://travis-ci.org/substack/node-optimist)
+
+examples
+========
+
+With Optimist, the options are just a hash! No optstrings attached.
+-------------------------------------------------------------------
+
+xup.js:
+
+````javascript
+#!/usr/bin/env node
+var argv = require('optimist').argv;
+
+if (argv.rif - 5 * argv.xup > 7.138) {
+ console.log('Buy more riffiwobbles');
+}
+else {
+ console.log('Sell the xupptumblers');
+}
+````
+
+***
+
+ $ ./xup.js --rif=55 --xup=9.52
+ Buy more riffiwobbles
+
+ $ ./xup.js --rif 12 --xup 8.1
+ Sell the xupptumblers
+
+
+
+But wait! There's more! You can do short options:
+-------------------------------------------------
+
+short.js:
+
+````javascript
+#!/usr/bin/env node
+var argv = require('optimist').argv;
+console.log('(%d,%d)', argv.x, argv.y);
+````
+
+***
+
+ $ ./short.js -x 10 -y 21
+ (10,21)
+
+And booleans, both long and short (and grouped):
+----------------------------------
+
+bool.js:
+
+````javascript
+#!/usr/bin/env node
+var util = require('util');
+var argv = require('optimist').argv;
+
+if (argv.s) {
+ util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: ');
+}
+console.log(
+ (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '')
+);
+````
+
+***
+
+ $ ./bool.js -s
+ The cat says: meow
+
+ $ ./bool.js -sp
+ The cat says: meow.
+
+ $ ./bool.js -sp --fr
+ Le chat dit: miaou.
+
+And non-hypenated options too! Just use `argv._`!
+-------------------------------------------------
+
+nonopt.js:
+
+````javascript
+#!/usr/bin/env node
+var argv = require('optimist').argv;
+console.log('(%d,%d)', argv.x, argv.y);
+console.log(argv._);
+````
+
+***
+
+ $ ./nonopt.js -x 6.82 -y 3.35 moo
+ (6.82,3.35)
+ [ 'moo' ]
+
+ $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz
+ (0.54,1.12)
+ [ 'foo', 'bar', 'baz' ]
+
+Plus, Optimist comes with .usage() and .demand()!
+-------------------------------------------------
+
+divide.js:
+
+````javascript
+#!/usr/bin/env node
+var argv = require('optimist')
+ .usage('Usage: $0 -x [num] -y [num]')
+ .demand(['x','y'])
+ .argv;
+
+console.log(argv.x / argv.y);
+````
+
+***
+
+ $ ./divide.js -x 55 -y 11
+ 5
+
+ $ node ./divide.js -x 4.91 -z 2.51
+ Usage: node ./divide.js -x [num] -y [num]
+
+ Options:
+ -x [required]
+ -y [required]
+
+ Missing required arguments: y
+
+EVEN MORE HOLY COW
+------------------
+
+default_singles.js:
+
+````javascript
+#!/usr/bin/env node
+var argv = require('optimist')
+ .default('x', 10)
+ .default('y', 10)
+ .argv
+;
+console.log(argv.x + argv.y);
+````
+
+***
+
+ $ ./default_singles.js -x 5
+ 15
+
+default_hash.js:
+
+````javascript
+#!/usr/bin/env node
+var argv = require('optimist')
+ .default({ x : 10, y : 10 })
+ .argv
+;
+console.log(argv.x + argv.y);
+````
+
+***
+
+ $ ./default_hash.js -y 7
+ 17
+
+And if you really want to get all descriptive about it...
+---------------------------------------------------------
+
+boolean_single.js
+
+````javascript
+#!/usr/bin/env node
+var argv = require('optimist')
+ .boolean('v')
+ .argv
+;
+console.dir(argv);
+````
+
+***
+
+ $ ./boolean_single.js -v foo bar baz
+ true
+ [ 'bar', 'baz', 'foo' ]
+
+boolean_double.js
+
+````javascript
+#!/usr/bin/env node
+var argv = require('optimist')
+ .boolean(['x','y','z'])
+ .argv
+;
+console.dir([ argv.x, argv.y, argv.z ]);
+console.dir(argv._);
+````
+
+***
+
+ $ ./boolean_double.js -x -z one two three
+ [ true, false, true ]
+ [ 'one', 'two', 'three' ]
+
+Optimist is here to help...
+---------------------------
+
+You can describe parameters for help messages and set aliases. Optimist figures
+out how to format a handy help string automatically.
+
+line_count.js
+
+````javascript
+#!/usr/bin/env node
+var argv = require('optimist')
+ .usage('Count the lines in a file.\nUsage: $0')
+ .demand('f')
+ .alias('f', 'file')
+ .describe('f', 'Load a file')
+ .argv
+;
+
+var fs = require('fs');
+var s = fs.createReadStream(argv.file);
+
+var lines = 0;
+s.on('data', function (buf) {
+ lines += buf.toString().match(/\n/g).length;
+});
+
+s.on('end', function () {
+ console.log(lines);
+});
+````
+
+***
+
+ $ node line_count.js
+ Count the lines in a file.
+ Usage: node ./line_count.js
+
+ Options:
+ -f, --file Load a file [required]
+
+ Missing required arguments: f
+
+ $ node line_count.js --file line_count.js
+ 20
+
+ $ node line_count.js -f line_count.js
+ 20
+
+methods
+=======
+
+By itself,
+
+````javascript
+require('optimist').argv
+`````
+
+will use `process.argv` array to construct the `argv` object.
+
+You can pass in the `process.argv` yourself:
+
+````javascript
+require('optimist')([ '-x', '1', '-y', '2' ]).argv
+````
+
+or use .parse() to do the same thing:
+
+````javascript
+require('optimist').parse([ '-x', '1', '-y', '2' ])
+````
+
+The rest of these methods below come in just before the terminating `.argv`.
+
+.alias(key, alias)
+------------------
+
+Set key names as equivalent such that updates to a key will propagate to aliases
+and vice-versa.
+
+Optionally `.alias()` can take an object that maps keys to aliases.
+
+.default(key, value)
+--------------------
+
+Set `argv[key]` to `value` if no option was specified on `process.argv`.
+
+Optionally `.default()` can take an object that maps keys to default values.
+
+.demand(key)
+------------
+
+If `key` is a string, show the usage information and exit if `key` wasn't
+specified in `process.argv`.
+
+If `key` is a number, demand at least as many non-option arguments, which show
+up in `argv._`.
+
+If `key` is an Array, demand each element.
+
+.describe(key, desc)
+--------------------
+
+Describe a `key` for the generated usage information.
+
+Optionally `.describe()` can take an object that maps keys to descriptions.
+
+.options(key, opt)
+------------------
+
+Instead of chaining together `.alias().demand().default()`, you can specify
+keys in `opt` for each of the chainable methods.
+
+For example:
+
+````javascript
+var argv = require('optimist')
+ .options('f', {
+ alias : 'file',
+ default : '/etc/passwd',
+ })
+ .argv
+;
+````
+
+is the same as
+
+````javascript
+var argv = require('optimist')
+ .alias('f', 'file')
+ .default('f', '/etc/passwd')
+ .argv
+;
+````
+
+Optionally `.options()` can take an object that maps keys to `opt` parameters.
+
+.usage(message)
+---------------
+
+Set a usage message to show which commands to use. Inside `message`, the string
+`$0` will get interpolated to the current script name or node command for the
+present script similar to how `$0` works in bash or perl.
+
+.check(fn)
+----------
+
+Check that certain conditions are met in the provided arguments.
+
+If `fn` throws or returns `false`, show the thrown error, usage information, and
+exit.
+
+.boolean(key)
+-------------
+
+Interpret `key` as a boolean. If a non-flag option follows `key` in
+`process.argv`, that string won't get set as the value of `key`.
+
+If `key` never shows up as a flag in `process.arguments`, `argv[key]` will be
+`false`.
+
+If `key` is an Array, interpret all the elements as booleans.
+
+.string(key)
+------------
+
+Tell the parser logic not to interpret `key` as a number or boolean.
+This can be useful if you need to preserve leading zeros in an input.
+
+If `key` is an Array, interpret all the elements as strings.
+
+.wrap(columns)
+--------------
+
+Format usage output to wrap at `columns` many columns.
+
+.help()
+-------
+
+Return the generated usage string.
+
+.showHelp(fn=console.error)
+---------------------------
+
+Print the usage data using `fn` for printing.
+
+.parse(args)
+------------
+
+Parse `args` instead of `process.argv`. Returns the `argv` object.
+
+.argv
+-----
+
+Get the arguments as a plain old object.
+
+Arguments without a corresponding flag show up in the `argv._` array.
+
+The script name or node command is available at `argv.$0` similarly to how `$0`
+works in bash or perl.
+
+parsing tricks
+==============
+
+stop parsing
+------------
+
+Use `--` to stop parsing flags and stuff the remainder into `argv._`.
+
+ $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4
+ { _: [ '-c', '3', '-d', '4' ],
+ '$0': 'node ./examples/reflect.js',
+ a: 1,
+ b: 2 }
+
+negate fields
+-------------
+
+If you want to explicity set a field to false instead of just leaving it
+undefined or to override a default you can do `--no-key`.
+
+ $ node examples/reflect.js -a --no-b
+ { _: [],
+ '$0': 'node ./examples/reflect.js',
+ a: true,
+ b: false }
+
+numbers
+-------
+
+Every argument that looks like a number (`!isNaN(Number(arg))`) is converted to
+one. This way you can just `net.createConnection(argv.port)` and you can add
+numbers out of `argv` with `+` without having that mean concatenation,
+which is super frustrating.
+
+duplicates
+----------
+
+If you specify a flag multiple times it will get turned into an array containing
+all the values in order.
+
+ $ node examples/reflect.js -x 5 -x 8 -x 0
+ { _: [],
+ '$0': 'node ./examples/reflect.js',
+ x: [ 5, 8, 0 ] }
+
+dot notation
+------------
+
+When you use dots (`.`s) in argument names, an implicit object path is assumed.
+This lets you organize arguments into nested objects.
+
+ $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5
+ { _: [],
+ '$0': 'node ./examples/reflect.js',
+ foo: { bar: { baz: 33 }, quux: 5 } }
+
+short numbers
+-------------
+
+Short numeric `head -n5` style argument work too:
+
+ $ node reflect.js -n123 -m456
+ { '3': true,
+ '6': true,
+ _: [],
+ '$0': 'node ./reflect.js',
+ n: 123,
+ m: 456 }
+
+installation
+============
+
+With [npm](http://github.com/isaacs/npm), just do:
+ npm install optimist
+
+or clone this project on github:
+
+ git clone http://github.com/substack/node-optimist.git
+
+To run the tests with [expresso](http://github.com/visionmedia/expresso),
+just do:
+
+ expresso
+
+inspired By
+===========
+
+This module is loosely inspired by Perl's
+[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm).
diff --git a/node_modules/http-server/node_modules/optimist/test/_.js b/node_modules/http-server/node_modules/optimist/test/_.js
new file mode 100644
index 00000000..d9c58b36
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/test/_.js
@@ -0,0 +1,71 @@
+var spawn = require('child_process').spawn;
+var test = require('tap').test;
+
+test('dotSlashEmpty', testCmd('./bin.js', []));
+
+test('dotSlashArgs', testCmd('./bin.js', [ 'a', 'b', 'c' ]));
+
+test('nodeEmpty', testCmd('node bin.js', []));
+
+test('nodeArgs', testCmd('node bin.js', [ 'x', 'y', 'z' ]));
+
+test('whichNodeEmpty', function (t) {
+ var which = spawn('which', ['node']);
+
+ which.stdout.on('data', function (buf) {
+ t.test(
+ testCmd(buf.toString().trim() + ' bin.js', [])
+ );
+ t.end();
+ });
+
+ which.stderr.on('data', function (err) {
+ assert.error(err);
+ t.end();
+ });
+});
+
+test('whichNodeArgs', function (t) {
+ var which = spawn('which', ['node']);
+
+ which.stdout.on('data', function (buf) {
+ t.test(
+ testCmd(buf.toString().trim() + ' bin.js', [ 'q', 'r' ])
+ );
+ t.end();
+ });
+
+ which.stderr.on('data', function (err) {
+ t.error(err);
+ t.end();
+ });
+});
+
+function testCmd (cmd, args) {
+
+ return function (t) {
+ var to = setTimeout(function () {
+ assert.fail('Never got stdout data.')
+ }, 5000);
+
+ var oldDir = process.cwd();
+ process.chdir(__dirname + '/_');
+
+ var cmds = cmd.split(' ');
+
+ var bin = spawn(cmds[0], cmds.slice(1).concat(args.map(String)));
+ process.chdir(oldDir);
+
+ bin.stderr.on('data', function (err) {
+ t.error(err);
+ t.end();
+ });
+
+ bin.stdout.on('data', function (buf) {
+ clearTimeout(to);
+ var _ = JSON.parse(buf.toString());
+ t.same(_.map(String), args.map(String));
+ t.end();
+ });
+ };
+}
diff --git a/node_modules/http-server/node_modules/optimist/test/_/argv.js b/node_modules/http-server/node_modules/optimist/test/_/argv.js
new file mode 100644
index 00000000..3d096062
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/test/_/argv.js
@@ -0,0 +1,2 @@
+#!/usr/bin/env node
+console.log(JSON.stringify(process.argv));
diff --git a/node_modules/http-server/node_modules/optimist/test/_/bin.js b/node_modules/http-server/node_modules/optimist/test/_/bin.js
new file mode 100644
index 00000000..4a18d85f
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/test/_/bin.js
@@ -0,0 +1,3 @@
+#!/usr/bin/env node
+var argv = require('../../index').argv
+console.log(JSON.stringify(argv._));
diff --git a/node_modules/http-server/node_modules/optimist/test/dash.js b/node_modules/http-server/node_modules/optimist/test/dash.js
new file mode 100644
index 00000000..af8ed6fc
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/test/dash.js
@@ -0,0 +1,31 @@
+var optimist = require('../index');
+var test = require('tap').test;
+
+test('-', function (t) {
+ t.plan(5);
+ t.deepEqual(
+ fix(optimist.parse([ '-n', '-' ])),
+ { n: '-', _: [] }
+ );
+ t.deepEqual(
+ fix(optimist.parse([ '-' ])),
+ { _: [ '-' ] }
+ );
+ t.deepEqual(
+ fix(optimist.parse([ '-f-' ])),
+ { f: '-', _: [] }
+ );
+ t.deepEqual(
+ fix(optimist([ '-b', '-' ]).boolean('b').argv),
+ { b: true, _: [ '-' ] }
+ );
+ t.deepEqual(
+ fix(optimist([ '-s', '-' ]).string('s').argv),
+ { s: '-', _: [] }
+ );
+});
+
+function fix (obj) {
+ delete obj.$0;
+ return obj;
+}
diff --git a/node_modules/http-server/node_modules/optimist/test/parse.js b/node_modules/http-server/node_modules/optimist/test/parse.js
new file mode 100644
index 00000000..d320f433
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/test/parse.js
@@ -0,0 +1,446 @@
+var optimist = require('../index');
+var path = require('path');
+var test = require('tap').test;
+
+var $0 = 'node ./' + path.relative(process.cwd(), __filename);
+
+test('short boolean', function (t) {
+ var parse = optimist.parse([ '-b' ]);
+ t.same(parse, { b : true, _ : [], $0 : $0 });
+ t.same(typeof parse.b, 'boolean');
+ t.end();
+});
+
+test('long boolean', function (t) {
+ t.same(
+ optimist.parse([ '--bool' ]),
+ { bool : true, _ : [], $0 : $0 }
+ );
+ t.end();
+});
+
+test('bare', function (t) {
+ t.same(
+ optimist.parse([ 'foo', 'bar', 'baz' ]),
+ { _ : [ 'foo', 'bar', 'baz' ], $0 : $0 }
+ );
+ t.end();
+});
+
+test('short group', function (t) {
+ t.same(
+ optimist.parse([ '-cats' ]),
+ { c : true, a : true, t : true, s : true, _ : [], $0 : $0 }
+ );
+ t.end();
+});
+
+test('short group next', function (t) {
+ t.same(
+ optimist.parse([ '-cats', 'meow' ]),
+ { c : true, a : true, t : true, s : 'meow', _ : [], $0 : $0 }
+ );
+ t.end();
+});
+
+test('short capture', function (t) {
+ t.same(
+ optimist.parse([ '-h', 'localhost' ]),
+ { h : 'localhost', _ : [], $0 : $0 }
+ );
+ t.end();
+});
+
+test('short captures', function (t) {
+ t.same(
+ optimist.parse([ '-h', 'localhost', '-p', '555' ]),
+ { h : 'localhost', p : 555, _ : [], $0 : $0 }
+ );
+ t.end();
+});
+
+test('long capture sp', function (t) {
+ t.same(
+ optimist.parse([ '--pow', 'xixxle' ]),
+ { pow : 'xixxle', _ : [], $0 : $0 }
+ );
+ t.end();
+});
+
+test('long capture eq', function (t) {
+ t.same(
+ optimist.parse([ '--pow=xixxle' ]),
+ { pow : 'xixxle', _ : [], $0 : $0 }
+ );
+ t.end()
+});
+
+test('long captures sp', function (t) {
+ t.same(
+ optimist.parse([ '--host', 'localhost', '--port', '555' ]),
+ { host : 'localhost', port : 555, _ : [], $0 : $0 }
+ );
+ t.end();
+});
+
+test('long captures eq', function (t) {
+ t.same(
+ optimist.parse([ '--host=localhost', '--port=555' ]),
+ { host : 'localhost', port : 555, _ : [], $0 : $0 }
+ );
+ t.end();
+});
+
+test('mixed short bool and capture', function (t) {
+ t.same(
+ optimist.parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]),
+ {
+ f : true, p : 555, h : 'localhost',
+ _ : [ 'script.js' ], $0 : $0,
+ }
+ );
+ t.end();
+});
+
+test('short and long', function (t) {
+ t.same(
+ optimist.parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]),
+ {
+ f : true, p : 555, h : 'localhost',
+ _ : [ 'script.js' ], $0 : $0,
+ }
+ );
+ t.end();
+});
+
+test('no', function (t) {
+ t.same(
+ optimist.parse([ '--no-moo' ]),
+ { moo : false, _ : [], $0 : $0 }
+ );
+ t.end();
+});
+
+test('multi', function (t) {
+ t.same(
+ optimist.parse([ '-v', 'a', '-v', 'b', '-v', 'c' ]),
+ { v : ['a','b','c'], _ : [], $0 : $0 }
+ );
+ t.end();
+});
+
+test('comprehensive', function (t) {
+ t.same(
+ optimist.parse([
+ '--name=meowmers', 'bare', '-cats', 'woo',
+ '-h', 'awesome', '--multi=quux',
+ '--key', 'value',
+ '-b', '--bool', '--no-meep', '--multi=baz',
+ '--', '--not-a-flag', 'eek'
+ ]),
+ {
+ c : true,
+ a : true,
+ t : true,
+ s : 'woo',
+ h : 'awesome',
+ b : true,
+ bool : true,
+ key : 'value',
+ multi : [ 'quux', 'baz' ],
+ meep : false,
+ name : 'meowmers',
+ _ : [ 'bare', '--not-a-flag', 'eek' ],
+ $0 : $0
+ }
+ );
+ t.end();
+});
+
+test('nums', function (t) {
+ var argv = optimist.parse([
+ '-x', '1234',
+ '-y', '5.67',
+ '-z', '1e7',
+ '-w', '10f',
+ '--hex', '0xdeadbeef',
+ '789',
+ ]);
+ t.same(argv, {
+ x : 1234,
+ y : 5.67,
+ z : 1e7,
+ w : '10f',
+ hex : 0xdeadbeef,
+ _ : [ 789 ],
+ $0 : $0
+ });
+ t.same(typeof argv.x, 'number');
+ t.same(typeof argv.y, 'number');
+ t.same(typeof argv.z, 'number');
+ t.same(typeof argv.w, 'string');
+ t.same(typeof argv.hex, 'number');
+ t.same(typeof argv._[0], 'number');
+ t.end();
+});
+
+test('flag boolean', function (t) {
+ var parse = optimist([ '-t', 'moo' ]).boolean(['t']).argv;
+ t.same(parse, { t : true, _ : [ 'moo' ], $0 : $0 });
+ t.same(typeof parse.t, 'boolean');
+ t.end();
+});
+
+test('flag boolean value', function (t) {
+ var parse = optimist(['--verbose', 'false', 'moo', '-t', 'true'])
+ .boolean(['t', 'verbose']).default('verbose', true).argv;
+
+ t.same(parse, {
+ verbose: false,
+ t: true,
+ _: ['moo'],
+ $0 : $0
+ });
+
+ t.same(typeof parse.verbose, 'boolean');
+ t.same(typeof parse.t, 'boolean');
+ t.end();
+});
+
+test('flag boolean default false', function (t) {
+ var parse = optimist(['moo'])
+ .boolean(['t', 'verbose'])
+ .default('verbose', false)
+ .default('t', false).argv;
+
+ t.same(parse, {
+ verbose: false,
+ t: false,
+ _: ['moo'],
+ $0 : $0
+ });
+
+ t.same(typeof parse.verbose, 'boolean');
+ t.same(typeof parse.t, 'boolean');
+ t.end();
+
+});
+
+test('boolean groups', function (t) {
+ var parse = optimist([ '-x', '-z', 'one', 'two', 'three' ])
+ .boolean(['x','y','z']).argv;
+
+ t.same(parse, {
+ x : true,
+ y : false,
+ z : true,
+ _ : [ 'one', 'two', 'three' ],
+ $0 : $0
+ });
+
+ t.same(typeof parse.x, 'boolean');
+ t.same(typeof parse.y, 'boolean');
+ t.same(typeof parse.z, 'boolean');
+ t.end();
+});
+
+test('newlines in params' , function (t) {
+ var args = optimist.parse([ '-s', "X\nX" ])
+ t.same(args, { _ : [], s : "X\nX", $0 : $0 });
+
+ // reproduce in bash:
+ // VALUE="new
+ // line"
+ // node program.js --s="$VALUE"
+ args = optimist.parse([ "--s=X\nX" ])
+ t.same(args, { _ : [], s : "X\nX", $0 : $0 });
+ t.end();
+});
+
+test('strings' , function (t) {
+ var s = optimist([ '-s', '0001234' ]).string('s').argv.s;
+ t.same(s, '0001234');
+ t.same(typeof s, 'string');
+
+ var x = optimist([ '-x', '56' ]).string('x').argv.x;
+ t.same(x, '56');
+ t.same(typeof x, 'string');
+ t.end();
+});
+
+test('stringArgs', function (t) {
+ var s = optimist([ ' ', ' ' ]).string('_').argv._;
+ t.same(s.length, 2);
+ t.same(typeof s[0], 'string');
+ t.same(s[0], ' ');
+ t.same(typeof s[1], 'string');
+ t.same(s[1], ' ');
+ t.end();
+});
+
+test('slashBreak', function (t) {
+ t.same(
+ optimist.parse([ '-I/foo/bar/baz' ]),
+ { I : '/foo/bar/baz', _ : [], $0 : $0 }
+ );
+ t.same(
+ optimist.parse([ '-xyz/foo/bar/baz' ]),
+ { x : true, y : true, z : '/foo/bar/baz', _ : [], $0 : $0 }
+ );
+ t.end();
+});
+
+test('alias', function (t) {
+ var argv = optimist([ '-f', '11', '--zoom', '55' ])
+ .alias('z', 'zoom')
+ .argv
+ ;
+ t.equal(argv.zoom, 55);
+ t.equal(argv.z, argv.zoom);
+ t.equal(argv.f, 11);
+ t.end();
+});
+
+test('multiAlias', function (t) {
+ var argv = optimist([ '-f', '11', '--zoom', '55' ])
+ .alias('z', [ 'zm', 'zoom' ])
+ .argv
+ ;
+ t.equal(argv.zoom, 55);
+ t.equal(argv.z, argv.zoom);
+ t.equal(argv.z, argv.zm);
+ t.equal(argv.f, 11);
+ t.end();
+});
+
+test('boolean default true', function (t) {
+ var argv = optimist.options({
+ sometrue: {
+ boolean: true,
+ default: true
+ }
+ }).argv;
+
+ t.equal(argv.sometrue, true);
+ t.end();
+});
+
+test('boolean default false', function (t) {
+ var argv = optimist.options({
+ somefalse: {
+ boolean: true,
+ default: false
+ }
+ }).argv;
+
+ t.equal(argv.somefalse, false);
+ t.end();
+});
+
+test('nested dotted objects', function (t) {
+ var argv = optimist([
+ '--foo.bar', '3', '--foo.baz', '4',
+ '--foo.quux.quibble', '5', '--foo.quux.o_O',
+ '--beep.boop'
+ ]).argv;
+
+ t.same(argv.foo, {
+ bar : 3,
+ baz : 4,
+ quux : {
+ quibble : 5,
+ o_O : true
+ },
+ });
+ t.same(argv.beep, { boop : true });
+ t.end();
+});
+
+test('boolean and alias with chainable api', function (t) {
+ var aliased = [ '-h', 'derp' ];
+ var regular = [ '--herp', 'derp' ];
+ var opts = {
+ herp: { alias: 'h', boolean: true }
+ };
+ var aliasedArgv = optimist(aliased)
+ .boolean('herp')
+ .alias('h', 'herp')
+ .argv;
+ var propertyArgv = optimist(regular)
+ .boolean('herp')
+ .alias('h', 'herp')
+ .argv;
+ var expected = {
+ herp: true,
+ h: true,
+ '_': [ 'derp' ],
+ '$0': $0,
+ };
+
+ t.same(aliasedArgv, expected);
+ t.same(propertyArgv, expected);
+ t.end();
+});
+
+test('boolean and alias with options hash', function (t) {
+ var aliased = [ '-h', 'derp' ];
+ var regular = [ '--herp', 'derp' ];
+ var opts = {
+ herp: { alias: 'h', boolean: true }
+ };
+ var aliasedArgv = optimist(aliased)
+ .options(opts)
+ .argv;
+ var propertyArgv = optimist(regular).options(opts).argv;
+ var expected = {
+ herp: true,
+ h: true,
+ '_': [ 'derp' ],
+ '$0': $0,
+ };
+
+ t.same(aliasedArgv, expected);
+ t.same(propertyArgv, expected);
+
+ t.end();
+});
+
+test('boolean and alias using explicit true', function (t) {
+ var aliased = [ '-h', 'true' ];
+ var regular = [ '--herp', 'true' ];
+ var opts = {
+ herp: { alias: 'h', boolean: true }
+ };
+ var aliasedArgv = optimist(aliased)
+ .boolean('h')
+ .alias('h', 'herp')
+ .argv;
+ var propertyArgv = optimist(regular)
+ .boolean('h')
+ .alias('h', 'herp')
+ .argv;
+ var expected = {
+ herp: true,
+ h: true,
+ '_': [ ],
+ '$0': $0,
+ };
+
+ t.same(aliasedArgv, expected);
+ t.same(propertyArgv, expected);
+ t.end();
+});
+
+// regression, see https://github.com/substack/node-optimist/issues/71
+test('boolean and --x=true', function(t) {
+ var parsed = optimist(['--boool', '--other=true']).boolean('boool').argv;
+
+ t.same(parsed.boool, true);
+ t.same(parsed.other, 'true');
+
+ parsed = optimist(['--boool', '--other=false']).boolean('boool').argv;
+
+ t.same(parsed.boool, true);
+ t.same(parsed.other, 'false');
+ t.end();
+});
diff --git a/node_modules/http-server/node_modules/optimist/test/parse_modified.js b/node_modules/http-server/node_modules/optimist/test/parse_modified.js
new file mode 100644
index 00000000..a57dc84e
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/test/parse_modified.js
@@ -0,0 +1,14 @@
+var optimist = require('../');
+var test = require('tap').test;
+
+test('parse with modifier functions' , function (t) {
+ t.plan(1);
+
+ var argv = optimist().boolean('b').parse([ '-b', '123' ]);
+ t.deepEqual(fix(argv), { b: true, _: ['123'] });
+});
+
+function fix (obj) {
+ delete obj.$0;
+ return obj;
+}
diff --git a/node_modules/http-server/node_modules/optimist/test/short.js b/node_modules/http-server/node_modules/optimist/test/short.js
new file mode 100644
index 00000000..b2c38ad8
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/test/short.js
@@ -0,0 +1,16 @@
+var optimist = require('../index');
+var test = require('tap').test;
+
+test('-n123', function (t) {
+ t.plan(1);
+ var parse = optimist.parse([ '-n123' ]);
+ t.equal(parse.n, 123);
+});
+
+test('-123', function (t) {
+ t.plan(3);
+ var parse = optimist.parse([ '-123', '456' ]);
+ t.equal(parse['1'], true);
+ t.equal(parse['2'], true);
+ t.equal(parse['3'], 456);
+});
diff --git a/node_modules/http-server/node_modules/optimist/test/usage.js b/node_modules/http-server/node_modules/optimist/test/usage.js
new file mode 100644
index 00000000..300454c1
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/test/usage.js
@@ -0,0 +1,292 @@
+var Hash = require('hashish');
+var optimist = require('../index');
+var test = require('tap').test;
+
+test('usageFail', function (t) {
+ var r = checkUsage(function () {
+ return optimist('-x 10 -z 20'.split(' '))
+ .usage('Usage: $0 -x NUM -y NUM')
+ .demand(['x','y'])
+ .argv;
+ });
+ t.same(
+ r.result,
+ { x : 10, z : 20, _ : [], $0 : './usage' }
+ );
+
+ t.same(
+ r.errors.join('\n').split(/\n+/),
+ [
+ 'Usage: ./usage -x NUM -y NUM',
+ 'Options:',
+ ' -x [required]',
+ ' -y [required]',
+ 'Missing required arguments: y',
+ ]
+ );
+ t.same(r.logs, []);
+ t.ok(r.exit);
+ t.end();
+});
+
+
+test('usagePass', function (t) {
+ var r = checkUsage(function () {
+ return optimist('-x 10 -y 20'.split(' '))
+ .usage('Usage: $0 -x NUM -y NUM')
+ .demand(['x','y'])
+ .argv;
+ });
+ t.same(r, {
+ result : { x : 10, y : 20, _ : [], $0 : './usage' },
+ errors : [],
+ logs : [],
+ exit : false,
+ });
+ t.end();
+});
+
+test('checkPass', function (t) {
+ var r = checkUsage(function () {
+ return optimist('-x 10 -y 20'.split(' '))
+ .usage('Usage: $0 -x NUM -y NUM')
+ .check(function (argv) {
+ if (!('x' in argv)) throw 'You forgot about -x';
+ if (!('y' in argv)) throw 'You forgot about -y';
+ })
+ .argv;
+ });
+ t.same(r, {
+ result : { x : 10, y : 20, _ : [], $0 : './usage' },
+ errors : [],
+ logs : [],
+ exit : false,
+ });
+ t.end();
+});
+
+test('checkFail', function (t) {
+ var r = checkUsage(function () {
+ return optimist('-x 10 -z 20'.split(' '))
+ .usage('Usage: $0 -x NUM -y NUM')
+ .check(function (argv) {
+ if (!('x' in argv)) throw 'You forgot about -x';
+ if (!('y' in argv)) throw 'You forgot about -y';
+ })
+ .argv;
+ });
+
+ t.same(
+ r.result,
+ { x : 10, z : 20, _ : [], $0 : './usage' }
+ );
+
+ t.same(
+ r.errors.join('\n').split(/\n+/),
+ [
+ 'Usage: ./usage -x NUM -y NUM',
+ 'You forgot about -y'
+ ]
+ );
+
+ t.same(r.logs, []);
+ t.ok(r.exit);
+ t.end();
+});
+
+test('checkCondPass', function (t) {
+ function checker (argv) {
+ return 'x' in argv && 'y' in argv;
+ }
+
+ var r = checkUsage(function () {
+ return optimist('-x 10 -y 20'.split(' '))
+ .usage('Usage: $0 -x NUM -y NUM')
+ .check(checker)
+ .argv;
+ });
+ t.same(r, {
+ result : { x : 10, y : 20, _ : [], $0 : './usage' },
+ errors : [],
+ logs : [],
+ exit : false,
+ });
+ t.end();
+});
+
+test('checkCondFail', function (t) {
+ function checker (argv) {
+ return 'x' in argv && 'y' in argv;
+ }
+
+ var r = checkUsage(function () {
+ return optimist('-x 10 -z 20'.split(' '))
+ .usage('Usage: $0 -x NUM -y NUM')
+ .check(checker)
+ .argv;
+ });
+
+ t.same(
+ r.result,
+ { x : 10, z : 20, _ : [], $0 : './usage' }
+ );
+
+ t.same(
+ r.errors.join('\n').split(/\n+/).join('\n'),
+ 'Usage: ./usage -x NUM -y NUM\n'
+ + 'Argument check failed: ' + checker.toString()
+ );
+
+ t.same(r.logs, []);
+ t.ok(r.exit);
+ t.end();
+});
+
+test('countPass', function (t) {
+ var r = checkUsage(function () {
+ return optimist('1 2 3 --moo'.split(' '))
+ .usage('Usage: $0 [x] [y] [z] {OPTIONS}')
+ .demand(3)
+ .argv;
+ });
+ t.same(r, {
+ result : { _ : [ '1', '2', '3' ], moo : true, $0 : './usage' },
+ errors : [],
+ logs : [],
+ exit : false,
+ });
+ t.end();
+});
+
+test('countFail', function (t) {
+ var r = checkUsage(function () {
+ return optimist('1 2 --moo'.split(' '))
+ .usage('Usage: $0 [x] [y] [z] {OPTIONS}')
+ .demand(3)
+ .argv;
+ });
+ t.same(
+ r.result,
+ { _ : [ '1', '2' ], moo : true, $0 : './usage' }
+ );
+
+ t.same(
+ r.errors.join('\n').split(/\n+/),
+ [
+ 'Usage: ./usage [x] [y] [z] {OPTIONS}',
+ 'Not enough non-option arguments: got 2, need at least 3',
+ ]
+ );
+
+ t.same(r.logs, []);
+ t.ok(r.exit);
+ t.end();
+});
+
+test('defaultSingles', function (t) {
+ var r = checkUsage(function () {
+ return optimist('--foo 50 --baz 70 --powsy'.split(' '))
+ .default('foo', 5)
+ .default('bar', 6)
+ .default('baz', 7)
+ .argv
+ ;
+ });
+ t.same(r.result, {
+ foo : '50',
+ bar : 6,
+ baz : '70',
+ powsy : true,
+ _ : [],
+ $0 : './usage',
+ });
+ t.end();
+});
+
+test('defaultAliases', function (t) {
+ var r = checkUsage(function () {
+ return optimist('')
+ .alias('f', 'foo')
+ .default('f', 5)
+ .argv
+ ;
+ });
+ t.same(r.result, {
+ f : '5',
+ foo : '5',
+ _ : [],
+ $0 : './usage',
+ });
+ t.end();
+});
+
+test('defaultHash', function (t) {
+ var r = checkUsage(function () {
+ return optimist('--foo 50 --baz 70'.split(' '))
+ .default({ foo : 10, bar : 20, quux : 30 })
+ .argv
+ ;
+ });
+ t.same(r.result, {
+ _ : [],
+ $0 : './usage',
+ foo : 50,
+ baz : 70,
+ bar : 20,
+ quux : 30,
+ });
+ t.end();
+});
+
+test('rebase', function (t) {
+ t.equal(
+ optimist.rebase('/home/substack', '/home/substack/foo/bar/baz'),
+ './foo/bar/baz'
+ );
+ t.equal(
+ optimist.rebase('/home/substack/foo/bar/baz', '/home/substack'),
+ '../../..'
+ );
+ t.equal(
+ optimist.rebase('/home/substack/foo', '/home/substack/pow/zoom.txt'),
+ '../pow/zoom.txt'
+ );
+ t.end();
+});
+
+function checkUsage (f) {
+
+ var exit = false;
+
+ process._exit = process.exit;
+ process._env = process.env;
+ process._argv = process.argv;
+
+ process.exit = function (t) { exit = true };
+ process.env = Hash.merge(process.env, { _ : 'node' });
+ process.argv = [ './usage' ];
+
+ var errors = [];
+ var logs = [];
+
+ console._error = console.error;
+ console.error = function (msg) { errors.push(msg) };
+ console._log = console.log;
+ console.log = function (msg) { logs.push(msg) };
+
+ var result = f();
+
+ process.exit = process._exit;
+ process.env = process._env;
+ process.argv = process._argv;
+
+ console.error = console._error;
+ console.log = console._log;
+
+ return {
+ errors : errors,
+ logs : logs,
+ exit : exit,
+ result : result,
+ };
+};
diff --git a/node_modules/http-server/node_modules/optimist/test/whitespace.js b/node_modules/http-server/node_modules/optimist/test/whitespace.js
new file mode 100644
index 00000000..90b90752
--- /dev/null
+++ b/node_modules/http-server/node_modules/optimist/test/whitespace.js
@@ -0,0 +1,8 @@
+var optimist = require('../');
+var test = require('tap').test;
+
+test('whitespace should be whitespace' , function (t) {
+ t.plan(1);
+ var x = optimist.parse([ '-x', '\t' ]).x;
+ t.equal(x, '\t');
+});
diff --git a/node_modules/http-server/node_modules/portfinder/.npmignore b/node_modules/http-server/node_modules/portfinder/.npmignore
new file mode 100644
index 00000000..5171c540
--- /dev/null
+++ b/node_modules/http-server/node_modules/portfinder/.npmignore
@@ -0,0 +1,2 @@
+node_modules
+npm-debug.log
\ No newline at end of file
diff --git a/node_modules/http-server/node_modules/portfinder/.travis.yml b/node_modules/http-server/node_modules/portfinder/.travis.yml
new file mode 100644
index 00000000..62b52737
--- /dev/null
+++ b/node_modules/http-server/node_modules/portfinder/.travis.yml
@@ -0,0 +1,21 @@
+language: node_js
+node_js:
+ - "0.8"
+ - "0.10"
+ - "0.11"
+
+before_install:
+ - travis_retry npm install -g npm
+ - travis_retry npm install
+
+script:
+ - npm test
+
+matrix:
+ allow_failures:
+ - node_js: "0.11"
+
+notifications:
+ email:
+ - travis@nodejitsu.com
+ irc: "irc.freenode.org#nodejitsu"
diff --git a/node_modules/http-server/node_modules/portfinder/LICENSE b/node_modules/http-server/node_modules/portfinder/LICENSE
new file mode 100644
index 00000000..d26f4a2b
--- /dev/null
+++ b/node_modules/http-server/node_modules/portfinder/LICENSE
@@ -0,0 +1,22 @@
+node-portfinder
+
+Copyright (c) 2012 Charlie Robbins
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/node_modules/http-server/node_modules/portfinder/README.md b/node_modules/http-server/node_modules/portfinder/README.md
new file mode 100644
index 00000000..229ccf07
--- /dev/null
+++ b/node_modules/http-server/node_modules/portfinder/README.md
@@ -0,0 +1,38 @@
+# node-portfinder [](https://travis-ci.org/indexzero/node-portfinder)
+
+## Installation
+
+### Installing npm (node package manager)
+``` bash
+ curl http://npmjs.org/install.sh | sh
+```
+
+### Installing node-portfinder
+``` bash
+ $ [sudo] npm install portfinder
+```
+
+## Usage
+The `portfinder` module has a simple interface:
+
+``` js
+ var portfinder = require('portfinder');
+
+ portfinder.getPort(function (err, port) {
+ //
+ // `port` is guaranteed to be a free port
+ // in this scope.
+ //
+ });
+```
+
+By default `portfinder` will start searching from `8000`. To change this simply set `portfinder.basePort`.
+
+## Run Tests
+``` bash
+ $ npm test
+```
+
+#### Author: [Charlie Robbins][0]
+#### License: MIT/X11
+[0]: http://nodejitsu.com
diff --git a/node_modules/http-server/node_modules/portfinder/lib/portfinder.js b/node_modules/http-server/node_modules/portfinder/lib/portfinder.js
new file mode 100644
index 00000000..3da25622
--- /dev/null
+++ b/node_modules/http-server/node_modules/portfinder/lib/portfinder.js
@@ -0,0 +1,218 @@
+/*
+ * portfinder.js: A simple tool to find an open port on the current machine.
+ *
+ * (C) 2011, Charlie Robbins
+ *
+ */
+
+var fs = require('fs'),
+ net = require('net'),
+ path = require('path'),
+ async = require('async'),
+ mkdirp = require('mkdirp').mkdirp;
+
+//
+// ### @basePort {Number}
+// The lowest port to begin any port search from
+//
+exports.basePort = 8000;
+
+//
+// ### @basePath {string}
+// Default path to begin any socket search from
+//
+exports.basePath = '/tmp/portfinder'
+
+//
+// ### function getPort (options, callback)
+// #### @options {Object} Settings to use when finding the necessary port
+// #### @callback {function} Continuation to respond to when complete.
+// Responds with a unbound port on the current machine.
+//
+exports.getPort = function (options, callback) {
+ if (!callback) {
+ callback = options;
+ options = {};
+ }
+
+ options.port = options.port || exports.basePort;
+ options.host = options.host || null;
+ options.server = options.server || net.createServer(function () {
+ //
+ // Create an empty listener for the port testing server.
+ //
+ });
+
+ function onListen () {
+ options.server.removeListener('error', onError);
+ options.server.close();
+ callback(null, options.port)
+ }
+
+ function onError (err) {
+ options.server.removeListener('listening', onListen);
+
+ if (err.code !== 'EADDRINUSE' && err.code !== 'EACCES') {
+ return callback(err);
+ }
+
+ exports.getPort({
+ port: exports.nextPort(options.port),
+ host: options.host,
+ server: options.server
+ }, callback);
+ }
+
+ options.server.once('error', onError);
+ options.server.once('listening', onListen);
+ options.server.listen(options.port, options.host);
+};
+
+//
+// ### function getPorts (count, options, callback)
+// #### @count {Number} The number of ports to find
+// #### @options {Object} Settings to use when finding the necessary port
+// #### @callback {function} Continuation to respond to when complete.
+// Responds with an array of unbound ports on the current machine.
+//
+exports.getPorts = function (count, options, callback) {
+ if (!callback) {
+ callback = options;
+ options = {};
+ }
+
+ var lastPort = null;
+ async.timesSeries(count, function(index, asyncCallback) {
+ if (lastPort) {
+ options.port = exports.nextPort(lastPort);
+ }
+
+ exports.getPort(options, function (err, port) {
+ if (err) {
+ asyncCallback(err);
+ } else {
+ lastPort = port;
+ asyncCallback(null, port);
+ }
+ });
+ }, callback);
+};
+
+//
+// ### function getSocket (options, callback)
+// #### @options {Object} Settings to use when finding the necessary port
+// #### @callback {function} Continuation to respond to when complete.
+// Responds with a unbound socket using the specified directory and base
+// name on the current machine.
+//
+exports.getSocket = function (options, callback) {
+ if (!callback) {
+ callback = options;
+ options = {};
+ }
+
+ options.mod = options.mod || 0755;
+ options.path = options.path || exports.basePath + '.sock';
+
+ //
+ // Tests the specified socket
+ //
+ function testSocket () {
+ fs.stat(options.path, function (err) {
+ //
+ // If file we're checking doesn't exist (thus, stating it emits ENOENT),
+ // we should be OK with listening on this socket.
+ //
+ if (err) {
+ if (err.code == 'ENOENT') {
+ callback(null, options.path);
+ }
+ else {
+ callback(err);
+ }
+ }
+ else {
+ //
+ // This file exists, so it isn't possible to listen on it. Lets try
+ // next socket.
+ //
+ options.path = exports.nextSocket(options.path);
+ exports.getSocket(options, callback);
+ }
+ });
+ }
+
+ //
+ // Create the target `dir` then test connection
+ // against the socket.
+ //
+ function createAndTestSocket (dir) {
+ mkdirp(dir, options.mod, function (err) {
+ if (err) {
+ return callback(err);
+ }
+
+ options.exists = true;
+ testSocket();
+ });
+ }
+
+ //
+ // Check if the parent directory of the target
+ // socket path exists. If it does, test connection
+ // against the socket. Otherwise, create the directory
+ // then test connection.
+ //
+ function checkAndTestSocket () {
+ var dir = path.dirname(options.path);
+
+ fs.stat(dir, function (err, stats) {
+ if (err || !stats.isDirectory()) {
+ return createAndTestSocket(dir);
+ }
+
+ options.exists = true;
+ testSocket();
+ });
+ }
+
+ //
+ // If it has been explicitly stated that the
+ // target `options.path` already exists, then
+ // simply test the socket.
+ //
+ return options.exists
+ ? testSocket()
+ : checkAndTestSocket();
+};
+
+//
+// ### function nextPort (port)
+// #### @port {Number} Port to increment from.
+// Gets the next port in sequence from the
+// specified `port`.
+//
+exports.nextPort = function (port) {
+ return port + 1;
+};
+
+//
+// ### function nextSocket (socketPath)
+// #### @socketPath {string} Path to increment from
+// Gets the next socket path in sequence from the
+// specified `socketPath`.
+//
+exports.nextSocket = function (socketPath) {
+ var dir = path.dirname(socketPath),
+ name = path.basename(socketPath, '.sock'),
+ match = name.match(/^([a-zA-z]+)(\d*)$/i),
+ index = parseInt(match[2]),
+ base = match[1];
+
+ if (isNaN(index)) {
+ index = 0;
+ }
+
+ index += 1;
+ return path.join(dir, base + index + '.sock');
+};
diff --git a/node_modules/http-server/node_modules/portfinder/node_modules/.bin/mkdirp b/node_modules/http-server/node_modules/portfinder/node_modules/.bin/mkdirp
new file mode 100644
index 00000000..958ff644
--- /dev/null
+++ b/node_modules/http-server/node_modules/portfinder/node_modules/.bin/mkdirp
@@ -0,0 +1,15 @@
+#!/bin/sh
+basedir=`dirname "$0"`
+
+case `uname` in
+ *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+ "$basedir/node" "$basedir/../mkdirp/bin/cmd.js" "$@"
+ ret=$?
+else
+ node "$basedir/../mkdirp/bin/cmd.js" "$@"
+ ret=$?
+fi
+exit $ret
diff --git a/node_modules/http-server/node_modules/portfinder/node_modules/.bin/mkdirp.cmd b/node_modules/http-server/node_modules/portfinder/node_modules/.bin/mkdirp.cmd
new file mode 100644
index 00000000..0d2cdd7c
--- /dev/null
+++ b/node_modules/http-server/node_modules/portfinder/node_modules/.bin/mkdirp.cmd
@@ -0,0 +1,7 @@
+@IF EXIST "%~dp0\node.exe" (
+ "%~dp0\node.exe" "%~dp0\..\mkdirp\bin\cmd.js" %*
+) ELSE (
+ @SETLOCAL
+ @SET PATHEXT=%PATHEXT:;.JS;=;%
+ node "%~dp0\..\mkdirp\bin\cmd.js" %*
+)
\ No newline at end of file
diff --git a/node_modules/http-server/node_modules/portfinder/node_modules/async/.travis.yml b/node_modules/http-server/node_modules/portfinder/node_modules/async/.travis.yml
new file mode 100644
index 00000000..6e5919de
--- /dev/null
+++ b/node_modules/http-server/node_modules/portfinder/node_modules/async/.travis.yml
@@ -0,0 +1,3 @@
+language: node_js
+node_js:
+ - "0.10"
diff --git a/node_modules/http-server/node_modules/portfinder/node_modules/async/LICENSE b/node_modules/http-server/node_modules/portfinder/node_modules/async/LICENSE
new file mode 100644
index 00000000..8f296985
--- /dev/null
+++ b/node_modules/http-server/node_modules/portfinder/node_modules/async/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2010-2014 Caolan McMahon
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/http-server/node_modules/portfinder/node_modules/async/README.md b/node_modules/http-server/node_modules/portfinder/node_modules/async/README.md
new file mode 100644
index 00000000..0bea5311
--- /dev/null
+++ b/node_modules/http-server/node_modules/portfinder/node_modules/async/README.md
@@ -0,0 +1,1646 @@
+# Async.js
+
+[](https://travis-ci.org/caolan/async)
+
+
+Async is a utility module which provides straight-forward, powerful functions
+for working with asynchronous JavaScript. Although originally designed for
+use with [Node.js](http://nodejs.org), it can also be used directly in the
+browser. Also supports [component](https://github.com/component/component).
+
+Async provides around 20 functions that include the usual 'functional'
+suspects (`map`, `reduce`, `filter`, `each`âŠ) as well as some common patterns
+for asynchronous control flow (`parallel`, `series`, `waterfall`âŠ). All these
+functions assume you follow the Node.js convention of providing a single
+callback as the last argument of your `async` function.
+
+
+## Quick Examples
+
+```javascript
+async.map(['file1','file2','file3'], fs.stat, function(err, results){
+ // results is now an array of stats for each file
+});
+
+async.filter(['file1','file2','file3'], fs.exists, function(results){
+ // results now equals an array of the existing files
+});
+
+async.parallel([
+ function(){ ... },
+ function(){ ... }
+], callback);
+
+async.series([
+ function(){ ... },
+ function(){ ... }
+]);
+```
+
+There are many more functions available so take a look at the docs below for a
+full list. This module aims to be comprehensive, so if you feel anything is
+missing please create a GitHub issue for it.
+
+## Common Pitfalls
+
+### Binding a context to an iterator
+
+This section is really about `bind`, not about `async`. If you are wondering how to
+make `async` execute your iterators in a given context, or are confused as to why
+a method of another library isn't working as an iterator, study this example:
+
+```js
+// Here is a simple object with an (unnecessarily roundabout) squaring method
+var AsyncSquaringLibrary = {
+ squareExponent: 2,
+ square: function(number, callback){
+ var result = Math.pow(number, this.squareExponent);
+ setTimeout(function(){
+ callback(null, result);
+ }, 200);
+ }
+};
+
+async.map([1, 2, 3], AsyncSquaringLibrary.square, function(err, result){
+ // result is [NaN, NaN, NaN]
+ // This fails because the `this.squareExponent` expression in the square
+ // function is not evaluated in the context of AsyncSquaringLibrary, and is
+ // therefore undefined.
+});
+
+async.map([1, 2, 3], AsyncSquaringLibrary.square.bind(AsyncSquaringLibrary), function(err, result){
+ // result is [1, 4, 9]
+ // With the help of bind we can attach a context to the iterator before
+ // passing it to async. Now the square function will be executed in its
+ // 'home' AsyncSquaringLibrary context and the value of `this.squareExponent`
+ // will be as expected.
+});
+```
+
+## Download
+
+The source is available for download from
+[GitHub](http://github.com/caolan/async).
+Alternatively, you can install using Node Package Manager (`npm`):
+
+ npm install async
+
+__Development:__ [async.js](https://github.com/caolan/async/raw/master/lib/async.js) - 29.6kb Uncompressed
+
+## In the Browser
+
+So far it's been tested in IE6, IE7, IE8, FF3.6 and Chrome 5.
+
+Usage:
+
+```html
+
+
+```
+
+## Documentation
+
+### Collections
+
+* [`each`](#each)
+* [`eachSeries`](#eachSeries)
+* [`eachLimit`](#eachLimit)
+* [`map`](#map)
+* [`mapSeries`](#mapSeries)
+* [`mapLimit`](#mapLimit)
+* [`filter`](#filter)
+* [`filterSeries`](#filterSeries)
+* [`reject`](#reject)
+* [`rejectSeries`](#rejectSeries)
+* [`reduce`](#reduce)
+* [`reduceRight`](#reduceRight)
+* [`detect`](#detect)
+* [`detectSeries`](#detectSeries)
+* [`sortBy`](#sortBy)
+* [`some`](#some)
+* [`every`](#every)
+* [`concat`](#concat)
+* [`concatSeries`](#concatSeries)
+
+### Control Flow
+
+* [`series`](#seriestasks-callback)
+* [`parallel`](#parallel)
+* [`parallelLimit`](#parallellimittasks-limit-callback)
+* [`whilst`](#whilst)
+* [`doWhilst`](#doWhilst)
+* [`until`](#until)
+* [`doUntil`](#doUntil)
+* [`forever`](#forever)
+* [`waterfall`](#waterfall)
+* [`compose`](#compose)
+* [`seq`](#seq)
+* [`applyEach`](#applyEach)
+* [`applyEachSeries`](#applyEachSeries)
+* [`queue`](#queue)
+* [`priorityQueue`](#priorityQueue)
+* [`cargo`](#cargo)
+* [`auto`](#auto)
+* [`retry`](#retry)
+* [`iterator`](#iterator)
+* [`apply`](#apply)
+* [`nextTick`](#nextTick)
+* [`times`](#times)
+* [`timesSeries`](#timesSeries)
+
+### Utils
+
+* [`memoize`](#memoize)
+* [`unmemoize`](#unmemoize)
+* [`log`](#log)
+* [`dir`](#dir)
+* [`noConflict`](#noConflict)
+
+
+## Collections
+
+
+
+### each(arr, iterator, callback)
+
+Applies the function `iterator` to each item in `arr`, in parallel.
+The `iterator` is called with an item from the list, and a callback for when it
+has finished. If the `iterator` passes an error to its `callback`, the main
+`callback` (for the `each` function) is immediately called with the error.
+
+Note, that since this function applies `iterator` to each item in parallel,
+there is no guarantee that the iterator functions will complete in order.
+
+__Arguments__
+
+* `arr` - An array to iterate over.
+* `iterator(item, callback)` - A function to apply to each item in `arr`.
+ The iterator is passed a `callback(err)` which must be called once it has
+ completed. If no error has occured, the `callback` should be run without
+ arguments or with an explicit `null` argument.
+* `callback(err)` - A callback which is called when all `iterator` functions
+ have finished, or an error occurs.
+
+__Examples__
+
+
+```js
+// assuming openFiles is an array of file names and saveFile is a function
+// to save the modified contents of that file:
+
+async.each(openFiles, saveFile, function(err){
+ // if any of the saves produced an error, err would equal that error
+});
+```
+
+```js
+// assuming openFiles is an array of file names
+
+async.each(openFiles, function( file, callback) {
+
+ // Perform operation on file here.
+ console.log('Processing file ' + file);
+
+ if( file.length > 32 ) {
+ console.log('This file name is too long');
+ callback('File name too long');
+ } else {
+ // Do work to process file here
+ console.log('File processed');
+ callback();
+ }
+}, function(err){
+ // if any of the file processing produced an error, err would equal that error
+ if( err ) {
+ // One of the iterations produced an error.
+ // All processing will now stop.
+ console.log('A file failed to process');
+ } else {
+ console.log('All files have been processed successfully');
+ }
+});
+```
+
+---------------------------------------
+
+
+
+### eachSeries(arr, iterator, callback)
+
+The same as [`each`](#each), only `iterator` is applied to each item in `arr` in
+series. The next `iterator` is only called once the current one has completed.
+This means the `iterator` functions will complete in order.
+
+
+---------------------------------------
+
+
+
+### eachLimit(arr, limit, iterator, callback)
+
+The same as [`each`](#each), only no more than `limit` `iterator`s will be simultaneously
+running at any time.
+
+Note that the items in `arr` are not processed in batches, so there is no guarantee that
+the first `limit` `iterator` functions will complete before any others are started.
+
+__Arguments__
+
+* `arr` - An array to iterate over.
+* `limit` - The maximum number of `iterator`s to run at any time.
+* `iterator(item, callback)` - A function to apply to each item in `arr`.
+ The iterator is passed a `callback(err)` which must be called once it has
+ completed. If no error has occured, the callback should be run without
+ arguments or with an explicit `null` argument.
+* `callback(err)` - A callback which is called when all `iterator` functions
+ have finished, or an error occurs.
+
+__Example__
+
+```js
+// Assume documents is an array of JSON objects and requestApi is a
+// function that interacts with a rate-limited REST api.
+
+async.eachLimit(documents, 20, requestApi, function(err){
+ // if any of the saves produced an error, err would equal that error
+});
+```
+
+---------------------------------------
+
+
+### map(arr, iterator, callback)
+
+Produces a new array of values by mapping each value in `arr` through
+the `iterator` function. The `iterator` is called with an item from `arr` and a
+callback for when it has finished processing. Each of these callback takes 2 arguments:
+an `error`, and the transformed item from `arr`. If `iterator` passes an error to this
+callback, the main `callback` (for the `map` function) is immediately called with the error.
+
+Note, that since this function applies the `iterator` to each item in parallel,
+there is no guarantee that the `iterator` functions will complete in order.
+However, the results array will be in the same order as the original `arr`.
+
+__Arguments__
+
+* `arr` - An array to iterate over.
+* `iterator(item, callback)` - A function to apply to each item in `arr`.
+ The iterator is passed a `callback(err, transformed)` which must be called once
+ it has completed with an error (which can be `null`) and a transformed item.
+* `callback(err, results)` - A callback which is called when all `iterator`
+ functions have finished, or an error occurs. Results is an array of the
+ transformed items from the `arr`.
+
+__Example__
+
+```js
+async.map(['file1','file2','file3'], fs.stat, function(err, results){
+ // results is now an array of stats for each file
+});
+```
+
+---------------------------------------
+
+
+### mapSeries(arr, iterator, callback)
+
+The same as [`map`](#map), only the `iterator` is applied to each item in `arr` in
+series. The next `iterator` is only called once the current one has completed.
+The results array will be in the same order as the original.
+
+
+---------------------------------------
+
+
+### mapLimit(arr, limit, iterator, callback)
+
+The same as [`map`](#map), only no more than `limit` `iterator`s will be simultaneously
+running at any time.
+
+Note that the items are not processed in batches, so there is no guarantee that
+the first `limit` `iterator` functions will complete before any others are started.
+
+__Arguments__
+
+* `arr` - An array to iterate over.
+* `limit` - The maximum number of `iterator`s to run at any time.
+* `iterator(item, callback)` - A function to apply to each item in `arr`.
+ The iterator is passed a `callback(err, transformed)` which must be called once
+ it has completed with an error (which can be `null`) and a transformed item.
+* `callback(err, results)` - A callback which is called when all `iterator`
+ calls have finished, or an error occurs. The result is an array of the
+ transformed items from the original `arr`.
+
+__Example__
+
+```js
+async.mapLimit(['file1','file2','file3'], 1, fs.stat, function(err, results){
+ // results is now an array of stats for each file
+});
+```
+
+---------------------------------------
+
+
+
+### filter(arr, iterator, callback)
+
+__Alias:__ `select`
+
+Returns a new array of all the values in `arr` which pass an async truth test.
+_The callback for each `iterator` call only accepts a single argument of `true` or
+`false`; it does not accept an error argument first!_ This is in-line with the
+way node libraries work with truth tests like `fs.exists`. This operation is
+performed in parallel, but the results array will be in the same order as the
+original.
+
+__Arguments__
+
+* `arr` - An array to iterate over.
+* `iterator(item, callback)` - A truth test to apply to each item in `arr`.
+ The `iterator` is passed a `callback(truthValue)`, which must be called with a
+ boolean argument once it has completed.
+* `callback(results)` - A callback which is called after all the `iterator`
+ functions have finished.
+
+__Example__
+
+```js
+async.filter(['file1','file2','file3'], fs.exists, function(results){
+ // results now equals an array of the existing files
+});
+```
+
+---------------------------------------
+
+
+
+### filterSeries(arr, iterator, callback)
+
+__Alias:__ `selectSeries`
+
+The same as [`filter`](#filter) only the `iterator` is applied to each item in `arr` in
+series. The next `iterator` is only called once the current one has completed.
+The results array will be in the same order as the original.
+
+---------------------------------------
+
+
+### reject(arr, iterator, callback)
+
+The opposite of [`filter`](#filter). Removes values that pass an `async` truth test.
+
+---------------------------------------
+
+
+### rejectSeries(arr, iterator, callback)
+
+The same as [`reject`](#reject), only the `iterator` is applied to each item in `arr`
+in series.
+
+
+---------------------------------------
+
+
+### reduce(arr, memo, iterator, callback)
+
+__Aliases:__ `inject`, `foldl`
+
+Reduces `arr` into a single value using an async `iterator` to return
+each successive step. `memo` is the initial state of the reduction.
+This function only operates in series.
+
+For performance reasons, it may make sense to split a call to this function into
+a parallel map, and then use the normal `Array.prototype.reduce` on the results.
+This function is for situations where each step in the reduction needs to be async;
+if you can get the data before reducing it, then it's probably a good idea to do so.
+
+__Arguments__
+
+* `arr` - An array to iterate over.
+* `memo` - The initial state of the reduction.
+* `iterator(memo, item, callback)` - A function applied to each item in the
+ array to produce the next step in the reduction. The `iterator` is passed a
+ `callback(err, reduction)` which accepts an optional error as its first
+ argument, and the state of the reduction as the second. If an error is
+ passed to the callback, the reduction is stopped and the main `callback` is
+ immediately called with the error.
+* `callback(err, result)` - A callback which is called after all the `iterator`
+ functions have finished. Result is the reduced value.
+
+__Example__
+
+```js
+async.reduce([1,2,3], 0, function(memo, item, callback){
+ // pointless async:
+ process.nextTick(function(){
+ callback(null, memo + item)
+ });
+}, function(err, result){
+ // result is now equal to the last value of memo, which is 6
+});
+```
+
+---------------------------------------
+
+
+### reduceRight(arr, memo, iterator, callback)
+
+__Alias:__ `foldr`
+
+Same as [`reduce`](#reduce), only operates on `arr` in reverse order.
+
+
+---------------------------------------
+
+
+### detect(arr, iterator, callback)
+
+Returns the first value in `arr` that passes an async truth test. The
+`iterator` is applied in parallel, meaning the first iterator to return `true` will
+fire the detect `callback` with that result. That means the result might not be
+the first item in the original `arr` (in terms of order) that passes the test.
+
+If order within the original `arr` is important, then look at [`detectSeries`](#detectSeries).
+
+__Arguments__
+
+* `arr` - An array to iterate over.
+* `iterator(item, callback)` - A truth test to apply to each item in `arr`.
+ The iterator is passed a `callback(truthValue)` which must be called with a
+ boolean argument once it has completed.
+* `callback(result)` - A callback which is called as soon as any iterator returns
+ `true`, or after all the `iterator` functions have finished. Result will be
+ the first item in the array that passes the truth test (iterator) or the
+ value `undefined` if none passed.
+
+__Example__
+
+```js
+async.detect(['file1','file2','file3'], fs.exists, function(result){
+ // result now equals the first file in the list that exists
+});
+```
+
+---------------------------------------
+
+
+### detectSeries(arr, iterator, callback)
+
+The same as [`detect`](#detect), only the `iterator` is applied to each item in `arr`
+in series. This means the result is always the first in the original `arr` (in
+terms of array order) that passes the truth test.
+
+
+---------------------------------------
+
+
+### sortBy(arr, iterator, callback)
+
+Sorts a list by the results of running each `arr` value through an async `iterator`.
+
+__Arguments__
+
+* `arr` - An array to iterate over.
+* `iterator(item, callback)` - A function to apply to each item in `arr`.
+ The iterator is passed a `callback(err, sortValue)` which must be called once it
+ has completed with an error (which can be `null`) and a value to use as the sort
+ criteria.
+* `callback(err, results)` - A callback which is called after all the `iterator`
+ functions have finished, or an error occurs. Results is the items from
+ the original `arr` sorted by the values returned by the `iterator` calls.
+
+__Example__
+
+```js
+async.sortBy(['file1','file2','file3'], function(file, callback){
+ fs.stat(file, function(err, stats){
+ callback(err, stats.mtime);
+ });
+}, function(err, results){
+ // results is now the original array of files sorted by
+ // modified date
+});
+```
+
+__Sort Order__
+
+By modifying the callback parameter the sorting order can be influenced:
+
+```js
+//ascending order
+async.sortBy([1,9,3,5], function(x, callback){
+ callback(err, x);
+}, function(err,result){
+ //result callback
+} );
+
+//descending order
+async.sortBy([1,9,3,5], function(x, callback){
+ callback(err, x*-1); //<- x*-1 instead of x, turns the order around
+}, function(err,result){
+ //result callback
+} );
+```
+
+---------------------------------------
+
+
+### some(arr, iterator, callback)
+
+__Alias:__ `any`
+
+Returns `true` if at least one element in the `arr` satisfies an async test.
+_The callback for each iterator call only accepts a single argument of `true` or
+`false`; it does not accept an error argument first!_ This is in-line with the
+way node libraries work with truth tests like `fs.exists`. Once any iterator
+call returns `true`, the main `callback` is immediately called.
+
+__Arguments__
+
+* `arr` - An array to iterate over.
+* `iterator(item, callback)` - A truth test to apply to each item in the array
+ in parallel. The iterator is passed a callback(truthValue) which must be
+ called with a boolean argument once it has completed.
+* `callback(result)` - A callback which is called as soon as any iterator returns
+ `true`, or after all the iterator functions have finished. Result will be
+ either `true` or `false` depending on the values of the async tests.
+
+__Example__
+
+```js
+async.some(['file1','file2','file3'], fs.exists, function(result){
+ // if result is true then at least one of the files exists
+});
+```
+
+---------------------------------------
+
+
+### every(arr, iterator, callback)
+
+__Alias:__ `all`
+
+Returns `true` if every element in `arr` satisfies an async test.
+_The callback for each `iterator` call only accepts a single argument of `true` or
+`false`; it does not accept an error argument first!_ This is in-line with the
+way node libraries work with truth tests like `fs.exists`.
+
+__Arguments__
+
+* `arr` - An array to iterate over.
+* `iterator(item, callback)` - A truth test to apply to each item in the array
+ in parallel. The iterator is passed a callback(truthValue) which must be
+ called with a boolean argument once it has completed.
+* `callback(result)` - A callback which is called after all the `iterator`
+ functions have finished. Result will be either `true` or `false` depending on
+ the values of the async tests.
+
+__Example__
+
+```js
+async.every(['file1','file2','file3'], fs.exists, function(result){
+ // if result is true then every file exists
+});
+```
+
+---------------------------------------
+
+
+### concat(arr, iterator, callback)
+
+Applies `iterator` to each item in `arr`, concatenating the results. Returns the
+concatenated list. The `iterator`s are called in parallel, and the results are
+concatenated as they return. There is no guarantee that the results array will
+be returned in the original order of `arr` passed to the `iterator` function.
+
+__Arguments__
+
+* `arr` - An array to iterate over.
+* `iterator(item, callback)` - A function to apply to each item in `arr`.
+ The iterator is passed a `callback(err, results)` which must be called once it
+ has completed with an error (which can be `null`) and an array of results.
+* `callback(err, results)` - A callback which is called after all the `iterator`
+ functions have finished, or an error occurs. Results is an array containing
+ the concatenated results of the `iterator` function.
+
+__Example__
+
+```js
+async.concat(['dir1','dir2','dir3'], fs.readdir, function(err, files){
+ // files is now a list of filenames that exist in the 3 directories
+});
+```
+
+---------------------------------------
+
+
+### concatSeries(arr, iterator, callback)
+
+Same as [`concat`](#concat), but executes in series instead of parallel.
+
+
+## Control Flow
+
+
+### series(tasks, [callback])
+
+Run the functions in the `tasks` array in series, each one running once the previous
+function has completed. If any functions in the series pass an error to its
+callback, no more functions are run, and `callback` is immediately called with the value of the error.
+Otherwise, `callback` receives an array of results when `tasks` have completed.
+
+It is also possible to use an object instead of an array. Each property will be
+run as a function, and the results will be passed to the final `callback` as an object
+instead of an array. This can be a more readable way of handling results from
+[`series`](#series).
+
+**Note** that while many implementations preserve the order of object properties, the
+[ECMAScript Language Specifcation](http://www.ecma-international.org/ecma-262/5.1/#sec-8.6)
+explicitly states that
+
+> The mechanics and order of enumerating the properties is not specified.
+
+So if you rely on the order in which your series of functions are executed, and want
+this to work on all platforms, consider using an array.
+
+__Arguments__
+
+* `tasks` - An array or object containing functions to run, each function is passed
+ a `callback(err, result)` it must call on completion with an error `err` (which can
+ be `null`) and an optional `result` value.
+* `callback(err, results)` - An optional callback to run once all the functions
+ have completed. This function gets a results array (or object) containing all
+ the result arguments passed to the `task` callbacks.
+
+__Example__
+
+```js
+async.series([
+ function(callback){
+ // do some stuff ...
+ callback(null, 'one');
+ },
+ function(callback){
+ // do some more stuff ...
+ callback(null, 'two');
+ }
+],
+// optional callback
+function(err, results){
+ // results is now equal to ['one', 'two']
+});
+
+
+// an example using an object instead of an array
+async.series({
+ one: function(callback){
+ setTimeout(function(){
+ callback(null, 1);
+ }, 200);
+ },
+ two: function(callback){
+ setTimeout(function(){
+ callback(null, 2);
+ }, 100);
+ }
+},
+function(err, results) {
+ // results is now equal to: {one: 1, two: 2}
+});
+```
+
+---------------------------------------
+
+
+### parallel(tasks, [callback])
+
+Run the `tasks` array of functions in parallel, without waiting until the previous
+function has completed. If any of the functions pass an error to its
+callback, the main `callback` is immediately called with the value of the error.
+Once the `tasks` have completed, the results are passed to the final `callback` as an
+array.
+
+It is also possible to use an object instead of an array. Each property will be
+run as a function and the results will be passed to the final `callback` as an object
+instead of an array. This can be a more readable way of handling results from
+[`parallel`](#parallel).
+
+
+__Arguments__
+
+* `tasks` - An array or object containing functions to run. Each function is passed
+ a `callback(err, result)` which it must call on completion with an error `err`
+ (which can be `null`) and an optional `result` value.
+* `callback(err, results)` - An optional callback to run once all the functions
+ have completed. This function gets a results array (or object) containing all
+ the result arguments passed to the task callbacks.
+
+__Example__
+
+```js
+async.parallel([
+ function(callback){
+ setTimeout(function(){
+ callback(null, 'one');
+ }, 200);
+ },
+ function(callback){
+ setTimeout(function(){
+ callback(null, 'two');
+ }, 100);
+ }
+],
+// optional callback
+function(err, results){
+ // the results array will equal ['one','two'] even though
+ // the second function had a shorter timeout.
+});
+
+
+// an example using an object instead of an array
+async.parallel({
+ one: function(callback){
+ setTimeout(function(){
+ callback(null, 1);
+ }, 200);
+ },
+ two: function(callback){
+ setTimeout(function(){
+ callback(null, 2);
+ }, 100);
+ }
+},
+function(err, results) {
+ // results is now equals to: {one: 1, two: 2}
+});
+```
+
+---------------------------------------
+
+
+### parallelLimit(tasks, limit, [callback])
+
+The same as [`parallel`](#parallel), only `tasks` are executed in parallel
+with a maximum of `limit` tasks executing at any time.
+
+Note that the `tasks` are not executed in batches, so there is no guarantee that
+the first `limit` tasks will complete before any others are started.
+
+__Arguments__
+
+* `tasks` - An array or object containing functions to run, each function is passed
+ a `callback(err, result)` it must call on completion with an error `err` (which can
+ be `null`) and an optional `result` value.
+* `limit` - The maximum number of `tasks` to run at any time.
+* `callback(err, results)` - An optional callback to run once all the functions
+ have completed. This function gets a results array (or object) containing all
+ the result arguments passed to the `task` callbacks.
+
+---------------------------------------
+
+
+### whilst(test, fn, callback)
+
+Repeatedly call `fn`, while `test` returns `true`. Calls `callback` when stopped,
+or an error occurs.
+
+__Arguments__
+
+* `test()` - synchronous truth test to perform before each execution of `fn`.
+* `fn(callback)` - A function which is called each time `test` passes. The function is
+ passed a `callback(err)`, which must be called once it has completed with an
+ optional `err` argument.
+* `callback(err)` - A callback which is called after the test fails and repeated
+ execution of `fn` has stopped.
+
+__Example__
+
+```js
+var count = 0;
+
+async.whilst(
+ function () { return count < 5; },
+ function (callback) {
+ count++;
+ setTimeout(callback, 1000);
+ },
+ function (err) {
+ // 5 seconds have passed
+ }
+);
+```
+
+---------------------------------------
+
+
+### doWhilst(fn, test, callback)
+
+The post-check version of [`whilst`](#whilst). To reflect the difference in
+the order of operations, the arguments `test` and `fn` are switched.
+
+`doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript.
+
+---------------------------------------
+
+
+### until(test, fn, callback)
+
+Repeatedly call `fn` until `test` returns `true`. Calls `callback` when stopped,
+or an error occurs.
+
+The inverse of [`whilst`](#whilst).
+
+---------------------------------------
+
+
+### doUntil(fn, test, callback)
+
+Like [`doWhilst`](#doWhilst), except the `test` is inverted. Note the argument ordering differs from `until`.
+
+---------------------------------------
+
+
+### forever(fn, errback)
+
+Calls the asynchronous function `fn` with a callback parameter that allows it to
+call itself again, in series, indefinitely.
+
+If an error is passed to the callback then `errback` is called with the
+error, and execution stops, otherwise it will never be called.
+
+```js
+async.forever(
+ function(next) {
+ // next is suitable for passing to things that need a callback(err [, whatever]);
+ // it will result in this function being called again.
+ },
+ function(err) {
+ // if next is called with a value in its first parameter, it will appear
+ // in here as 'err', and execution will stop.
+ }
+);
+```
+
+---------------------------------------
+
+
+### waterfall(tasks, [callback])
+
+Runs the `tasks` array of functions in series, each passing their results to the next in
+the array. However, if any of the `tasks` pass an error to their own callback, the
+next function is not executed, and the main `callback` is immediately called with
+the error.
+
+__Arguments__
+
+* `tasks` - An array of functions to run, each function is passed a
+ `callback(err, result1, result2, ...)` it must call on completion. The first
+ argument is an error (which can be `null`) and any further arguments will be
+ passed as arguments in order to the next task.
+* `callback(err, [results])` - An optional callback to run once all the functions
+ have completed. This will be passed the results of the last task's callback.
+
+
+
+__Example__
+
+```js
+async.waterfall([
+ function(callback){
+ callback(null, 'one', 'two');
+ },
+ function(arg1, arg2, callback){
+ // arg1 now equals 'one' and arg2 now equals 'two'
+ callback(null, 'three');
+ },
+ function(arg1, callback){
+ // arg1 now equals 'three'
+ callback(null, 'done');
+ }
+], function (err, result) {
+ // result now equals 'done'
+});
+```
+
+---------------------------------------
+
+### compose(fn1, fn2...)
+
+Creates a function which is a composition of the passed asynchronous
+functions. Each function consumes the return value of the function that
+follows. Composing functions `f()`, `g()`, and `h()` would produce the result of
+`f(g(h()))`, only this version uses callbacks to obtain the return values.
+
+Each function is executed with the `this` binding of the composed function.
+
+__Arguments__
+
+* `functions...` - the asynchronous functions to compose
+
+
+__Example__
+
+```js
+function add1(n, callback) {
+ setTimeout(function () {
+ callback(null, n + 1);
+ }, 10);
+}
+
+function mul3(n, callback) {
+ setTimeout(function () {
+ callback(null, n * 3);
+ }, 10);
+}
+
+var add1mul3 = async.compose(mul3, add1);
+
+add1mul3(4, function (err, result) {
+ // result now equals 15
+});
+```
+
+---------------------------------------
+
+### seq(fn1, fn2...)
+
+Version of the compose function that is more natural to read.
+Each following function consumes the return value of the latter function.
+
+Each function is executed with the `this` binding of the composed function.
+
+__Arguments__
+
+* functions... - the asynchronous functions to compose
+
+
+__Example__
+
+```js
+// Requires lodash (or underscore), express3 and dresende's orm2.
+// Part of an app, that fetches cats of the logged user.
+// This example uses `seq` function to avoid overnesting and error
+// handling clutter.
+app.get('/cats', function(request, response) {
+ function handleError(err, data, callback) {
+ if (err) {
+ console.error(err);
+ response.json({ status: 'error', message: err.message });
+ }
+ else {
+ callback(data);
+ }
+ }
+ var User = request.models.User;
+ async.seq(
+ _.bind(User.get, User), // 'User.get' has signature (id, callback(err, data))
+ handleError,
+ function(user, fn) {
+ user.getCats(fn); // 'getCats' has signature (callback(err, data))
+ },
+ handleError,
+ function(cats) {
+ response.json({ status: 'ok', message: 'Cats found', data: cats });
+ }
+ )(req.session.user_id);
+ }
+});
+```
+
+---------------------------------------
+
+### applyEach(fns, args..., callback)
+
+Applies the provided arguments to each function in the array, calling
+`callback` after all functions have completed. If you only provide the first
+argument, then it will return a function which lets you pass in the
+arguments as if it were a single function call.
+
+__Arguments__
+
+* `fns` - the asynchronous functions to all call with the same arguments
+* `args...` - any number of separate arguments to pass to the function
+* `callback` - the final argument should be the callback, called when all
+ functions have completed processing
+
+
+__Example__
+
+```js
+async.applyEach([enableSearch, updateSchema], 'bucket', callback);
+
+// partial application example:
+async.each(
+ buckets,
+ async.applyEach([enableSearch, updateSchema]),
+ callback
+);
+```
+
+---------------------------------------
+
+
+### applyEachSeries(arr, iterator, callback)
+
+The same as [`applyEach`](#applyEach) only the functions are applied in series.
+
+---------------------------------------
+
+
+### queue(worker, concurrency)
+
+Creates a `queue` object with the specified `concurrency`. Tasks added to the
+`queue` are processed in parallel (up to the `concurrency` limit). If all
+`worker`s are in progress, the task is queued until one becomes available.
+Once a `worker` completes a `task`, that `task`'s callback is called.
+
+__Arguments__
+
+* `worker(task, callback)` - An asynchronous function for processing a queued
+ task, which must call its `callback(err)` argument when finished, with an
+ optional `error` as an argument.
+* `concurrency` - An `integer` for determining how many `worker` functions should be
+ run in parallel.
+
+__Queue objects__
+
+The `queue` object returned by this function has the following properties and
+methods:
+
+* `length()` - a function returning the number of items waiting to be processed.
+* `started` - a function returning whether or not any items have been pushed and processed by the queue
+* `running()` - a function returning the number of items currently being processed.
+* `idle()` - a function returning false if there are items waiting or being processed, or true if not.
+* `concurrency` - an integer for determining how many `worker` functions should be
+ run in parallel. This property can be changed after a `queue` is created to
+ alter the concurrency on-the-fly.
+* `push(task, [callback])` - add a new task to the `queue`. Calls `callback` once
+ the `worker` has finished processing the task. Instead of a single task, a `tasks` array
+ can be submitted. The respective callback is used for every task in the list.
+* `unshift(task, [callback])` - add a new task to the front of the `queue`.
+* `saturated` - a callback that is called when the `queue` length hits the `concurrency` limit,
+ and further tasks will be queued.
+* `empty` - a callback that is called when the last item from the `queue` is given to a `worker`.
+* `drain` - a callback that is called when the last item from the `queue` has returned from the `worker`.
+* `paused` - a boolean for determining whether the queue is in a paused state
+* `pause()` - a function that pauses the processing of tasks until `resume()` is called.
+* `resume()` - a function that resumes the processing of queued tasks when the queue is paused.
+* `kill()` - a function that empties remaining tasks from the queue forcing it to go idle.
+
+__Example__
+
+```js
+// create a queue object with concurrency 2
+
+var q = async.queue(function (task, callback) {
+ console.log('hello ' + task.name);
+ callback();
+}, 2);
+
+
+// assign a callback
+q.drain = function() {
+ console.log('all items have been processed');
+}
+
+// add some items to the queue
+
+q.push({name: 'foo'}, function (err) {
+ console.log('finished processing foo');
+});
+q.push({name: 'bar'}, function (err) {
+ console.log('finished processing bar');
+});
+
+// add some items to the queue (batch-wise)
+
+q.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function (err) {
+ console.log('finished processing bar');
+});
+
+// add some items to the front of the queue
+
+q.unshift({name: 'bar'}, function (err) {
+ console.log('finished processing bar');
+});
+```
+
+
+---------------------------------------
+
+
+### priorityQueue(worker, concurrency)
+
+The same as [`queue`](#queue) only tasks are assigned a priority and completed in ascending priority order. There are two differences between `queue` and `priorityQueue` objects:
+
+* `push(task, priority, [callback])` - `priority` should be a number. If an array of
+ `tasks` is given, all tasks will be assigned the same priority.
+* The `unshift` method was removed.
+
+---------------------------------------
+
+
+### cargo(worker, [payload])
+
+Creates a `cargo` object with the specified payload. Tasks added to the
+cargo will be processed altogether (up to the `payload` limit). If the
+`worker` is in progress, the task is queued until it becomes available. Once
+the `worker` has completed some tasks, each callback of those tasks is called.
+Check out [this animation](https://camo.githubusercontent.com/6bbd36f4cf5b35a0f11a96dcd2e97711ffc2fb37/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130382f62626330636662302d356632392d313165322d393734662d3333393763363464633835382e676966) for how `cargo` and `queue` work.
+
+While [queue](#queue) passes only one task to one of a group of workers
+at a time, cargo passes an array of tasks to a single worker, repeating
+when the worker is finished.
+
+__Arguments__
+
+* `worker(tasks, callback)` - An asynchronous function for processing an array of
+ queued tasks, which must call its `callback(err)` argument when finished, with
+ an optional `err` argument.
+* `payload` - An optional `integer` for determining how many tasks should be
+ processed per round; if omitted, the default is unlimited.
+
+__Cargo objects__
+
+The `cargo` object returned by this function has the following properties and
+methods:
+
+* `length()` - A function returning the number of items waiting to be processed.
+* `payload` - An `integer` for determining how many tasks should be
+ process per round. This property can be changed after a `cargo` is created to
+ alter the payload on-the-fly.
+* `push(task, [callback])` - Adds `task` to the `queue`. The callback is called
+ once the `worker` has finished processing the task. Instead of a single task, an array of `tasks`
+ can be submitted. The respective callback is used for every task in the list.
+* `saturated` - A callback that is called when the `queue.length()` hits the concurrency and further tasks will be queued.
+* `empty` - A callback that is called when the last item from the `queue` is given to a `worker`.
+* `drain` - A callback that is called when the last item from the `queue` has returned from the `worker`.
+
+__Example__
+
+```js
+// create a cargo object with payload 2
+
+var cargo = async.cargo(function (tasks, callback) {
+ for(var i=0; i
+### auto(tasks, [callback])
+
+Determines the best order for running the functions in `tasks`, based on their
+requirements. Each function can optionally depend on other functions being completed
+first, and each function is run as soon as its requirements are satisfied.
+
+If any of the functions pass an error to their callback, it will not
+complete (so any other functions depending on it will not run), and the main
+`callback` is immediately called with the error. Functions also receive an
+object containing the results of functions which have completed so far.
+
+Note, all functions are called with a `results` object as a second argument,
+so it is unsafe to pass functions in the `tasks` object which cannot handle the
+extra argument.
+
+For example, this snippet of code:
+
+```js
+async.auto({
+ readData: async.apply(fs.readFile, 'data.txt', 'utf-8')
+}, callback);
+```
+
+will have the effect of calling `readFile` with the results object as the last
+argument, which will fail:
+
+```js
+fs.readFile('data.txt', 'utf-8', cb, {});
+```
+
+Instead, wrap the call to `readFile` in a function which does not forward the
+`results` object:
+
+```js
+async.auto({
+ readData: function(cb, results){
+ fs.readFile('data.txt', 'utf-8', cb);
+ }
+}, callback);
+```
+
+__Arguments__
+
+* `tasks` - An object. Each of its properties is either a function or an array of
+ requirements, with the function itself the last item in the array. The object's key
+ of a property serves as the name of the task defined by that property,
+ i.e. can be used when specifying requirements for other tasks.
+ The function receives two arguments: (1) a `callback(err, result)` which must be
+ called when finished, passing an `error` (which can be `null`) and the result of
+ the function's execution, and (2) a `results` object, containing the results of
+ the previously executed functions.
+* `callback(err, results)` - An optional callback which is called when all the
+ tasks have been completed. It receives the `err` argument if any `tasks`
+ pass an error to their callback. Results are always returned; however, if
+ an error occurs, no further `tasks` will be performed, and the results
+ object will only contain partial results.
+
+
+__Example__
+
+```js
+async.auto({
+ get_data: function(callback){
+ console.log('in get_data');
+ // async code to get some data
+ callback(null, 'data', 'converted to array');
+ },
+ make_folder: function(callback){
+ console.log('in make_folder');
+ // async code to create a directory to store a file in
+ // this is run at the same time as getting the data
+ callback(null, 'folder');
+ },
+ write_file: ['get_data', 'make_folder', function(callback, results){
+ console.log('in write_file', JSON.stringify(results));
+ // once there is some data and the directory exists,
+ // write the data to a file in the directory
+ callback(null, 'filename');
+ }],
+ email_link: ['write_file', function(callback, results){
+ console.log('in email_link', JSON.stringify(results));
+ // once the file is written let's email a link to it...
+ // results.write_file contains the filename returned by write_file.
+ callback(null, {'file':results.write_file, 'email':'user@example.com'});
+ }]
+}, function(err, results) {
+ console.log('err = ', err);
+ console.log('results = ', results);
+});
+```
+
+This is a fairly trivial example, but to do this using the basic parallel and
+series functions would look like this:
+
+```js
+async.parallel([
+ function(callback){
+ console.log('in get_data');
+ // async code to get some data
+ callback(null, 'data', 'converted to array');
+ },
+ function(callback){
+ console.log('in make_folder');
+ // async code to create a directory to store a file in
+ // this is run at the same time as getting the data
+ callback(null, 'folder');
+ }
+],
+function(err, results){
+ async.series([
+ function(callback){
+ console.log('in write_file', JSON.stringify(results));
+ // once there is some data and the directory exists,
+ // write the data to a file in the directory
+ results.push('filename');
+ callback(null);
+ },
+ function(callback){
+ console.log('in email_link', JSON.stringify(results));
+ // once the file is written let's email a link to it...
+ callback(null, {'file':results.pop(), 'email':'user@example.com'});
+ }
+ ]);
+});
+```
+
+For a complicated series of `async` tasks, using the [`auto`](#auto) function makes adding
+new tasks much easier (and the code more readable).
+
+
+---------------------------------------
+
+
+### retry([times = 5], task, [callback])
+
+Attempts to get a successful response from `task` no more than `times` times before
+returning an error. If the task is successful, the `callback` will be passed the result
+of the successfull task. If all attemps fail, the callback will be passed the error and
+result (if any) of the final attempt.
+
+__Arguments__
+
+* `times` - An integer indicating how many times to attempt the `task` before giving up. Defaults to 5.
+* `task(callback, results)` - A function which receives two arguments: (1) a `callback(err, result)`
+ which must be called when finished, passing `err` (which can be `null`) and the `result` of
+ the function's execution, and (2) a `results` object, containing the results of
+ the previously executed functions (if nested inside another control flow).
+* `callback(err, results)` - An optional callback which is called when the
+ task has succeeded, or after the final failed attempt. It receives the `err` and `result` arguments of the last attempt at completing the `task`.
+
+The [`retry`](#retry) function can be used as a stand-alone control flow by passing a
+callback, as shown below:
+
+```js
+async.retry(3, apiMethod, function(err, result) {
+ // do something with the result
+});
+```
+
+It can also be embeded within other control flow functions to retry individual methods
+that are not as reliable, like this:
+
+```js
+async.auto({
+ users: api.getUsers.bind(api),
+ payments: async.retry(3, api.getPayments.bind(api))
+}, function(err, results) {
+ // do something with the results
+});
+```
+
+
+---------------------------------------
+
+
+### iterator(tasks)
+
+Creates an iterator function which calls the next function in the `tasks` array,
+returning a continuation to call the next one after that. It's also possible to
+âpeekâ at the next iterator with `iterator.next()`.
+
+This function is used internally by the `async` module, but can be useful when
+you want to manually control the flow of functions in series.
+
+__Arguments__
+
+* `tasks` - An array of functions to run.
+
+__Example__
+
+```js
+var iterator = async.iterator([
+ function(){ sys.p('one'); },
+ function(){ sys.p('two'); },
+ function(){ sys.p('three'); }
+]);
+
+node> var iterator2 = iterator();
+'one'
+node> var iterator3 = iterator2();
+'two'
+node> iterator3();
+'three'
+node> var nextfn = iterator2.next();
+node> nextfn();
+'three'
+```
+
+---------------------------------------
+
+
+### apply(function, arguments..)
+
+Creates a continuation function with some arguments already applied.
+
+Useful as a shorthand when combined with other control flow functions. Any arguments
+passed to the returned function are added to the arguments originally passed
+to apply.
+
+__Arguments__
+
+* `function` - The function you want to eventually apply all arguments to.
+* `arguments...` - Any number of arguments to automatically apply when the
+ continuation is called.
+
+__Example__
+
+```js
+// using apply
+
+async.parallel([
+ async.apply(fs.writeFile, 'testfile1', 'test1'),
+ async.apply(fs.writeFile, 'testfile2', 'test2'),
+]);
+
+
+// the same process without using apply
+
+async.parallel([
+ function(callback){
+ fs.writeFile('testfile1', 'test1', callback);
+ },
+ function(callback){
+ fs.writeFile('testfile2', 'test2', callback);
+ }
+]);
+```
+
+It's possible to pass any number of additional arguments when calling the
+continuation:
+
+```js
+node> var fn = async.apply(sys.puts, 'one');
+node> fn('two', 'three');
+one
+two
+three
+```
+
+---------------------------------------
+
+
+### nextTick(callback)
+
+Calls `callback` on a later loop around the event loop. In Node.js this just
+calls `process.nextTick`; in the browser it falls back to `setImmediate(callback)`
+if available, otherwise `setTimeout(callback, 0)`, which means other higher priority
+events may precede the execution of `callback`.
+
+This is used internally for browser-compatibility purposes.
+
+__Arguments__
+
+* `callback` - The function to call on a later loop around the event loop.
+
+__Example__
+
+```js
+var call_order = [];
+async.nextTick(function(){
+ call_order.push('two');
+ // call_order now equals ['one','two']
+});
+call_order.push('one')
+```
+
+
+### times(n, callback)
+
+Calls the `callback` function `n` times, and accumulates results in the same manner
+you would use with [`map`](#map).
+
+__Arguments__
+
+* `n` - The number of times to run the function.
+* `callback` - The function to call `n` times.
+
+__Example__
+
+```js
+// Pretend this is some complicated async factory
+var createUser = function(id, callback) {
+ callback(null, {
+ id: 'user' + id
+ })
+}
+// generate 5 users
+async.times(5, function(n, next){
+ createUser(n, function(err, user) {
+ next(err, user)
+ })
+}, function(err, users) {
+ // we should now have 5 users
+});
+```
+
+
+### timesSeries(n, callback)
+
+The same as [`times`](#times), only the iterator is applied to each item in `arr` in
+series. The next `iterator` is only called once the current one has completed.
+The results array will be in the same order as the original.
+
+
+## Utils
+
+
+### memoize(fn, [hasher])
+
+Caches the results of an `async` function. When creating a hash to store function
+results against, the callback is omitted from the hash and an optional hash
+function can be used.
+
+The cache of results is exposed as the `memo` property of the function returned
+by `memoize`.
+
+__Arguments__
+
+* `fn` - The function to proxy and cache results from.
+* `hasher` - Tn optional function for generating a custom hash for storing
+ results. It has all the arguments applied to it apart from the callback, and
+ must be synchronous.
+
+__Example__
+
+```js
+var slow_fn = function (name, callback) {
+ // do something
+ callback(null, result);
+};
+var fn = async.memoize(slow_fn);
+
+// fn can now be used as if it were slow_fn
+fn('some name', function () {
+ // callback
+});
+```
+
+
+### unmemoize(fn)
+
+Undoes a [`memoize`](#memoize)d function, reverting it to the original, unmemoized
+form. Handy for testing.
+
+__Arguments__
+
+* `fn` - the memoized function
+
+
+### log(function, arguments)
+
+Logs the result of an `async` function to the `console`. Only works in Node.js or
+in browsers that support `console.log` and `console.error` (such as FF and Chrome).
+If multiple arguments are returned from the async function, `console.log` is
+called on each argument in order.
+
+__Arguments__
+
+* `function` - The function you want to eventually apply all arguments to.
+* `arguments...` - Any number of arguments to apply to the function.
+
+__Example__
+
+```js
+var hello = function(name, callback){
+ setTimeout(function(){
+ callback(null, 'hello ' + name);
+ }, 1000);
+};
+```
+```js
+node> async.log(hello, 'world');
+'hello world'
+```
+
+---------------------------------------
+
+
+### dir(function, arguments)
+
+Logs the result of an `async` function to the `console` using `console.dir` to
+display the properties of the resulting object. Only works in Node.js or
+in browsers that support `console.dir` and `console.error` (such as FF and Chrome).
+If multiple arguments are returned from the async function, `console.dir` is
+called on each argument in order.
+
+__Arguments__
+
+* `function` - The function you want to eventually apply all arguments to.
+* `arguments...` - Any number of arguments to apply to the function.
+
+__Example__
+
+```js
+var hello = function(name, callback){
+ setTimeout(function(){
+ callback(null, {hello: name});
+ }, 1000);
+};
+```
+```js
+node> async.dir(hello, 'world');
+{hello: 'world'}
+```
+
+---------------------------------------
+
+
+### noConflict()
+
+Changes the value of `async` back to its original value, returning a reference to the
+`async` object.
diff --git a/node_modules/http-server/node_modules/portfinder/node_modules/async/component.json b/node_modules/http-server/node_modules/portfinder/node_modules/async/component.json
new file mode 100644
index 00000000..bbb01154
--- /dev/null
+++ b/node_modules/http-server/node_modules/portfinder/node_modules/async/component.json
@@ -0,0 +1,11 @@
+{
+ "name": "async",
+ "repo": "caolan/async",
+ "description": "Higher-order functions and common patterns for asynchronous code",
+ "version": "0.1.23",
+ "keywords": [],
+ "dependencies": {},
+ "development": {},
+ "main": "lib/async.js",
+ "scripts": [ "lib/async.js" ]
+}
diff --git a/node_modules/http-server/node_modules/portfinder/node_modules/async/lib/async.js b/node_modules/http-server/node_modules/portfinder/node_modules/async/lib/async.js
new file mode 100644
index 00000000..01e8afcc
--- /dev/null
+++ b/node_modules/http-server/node_modules/portfinder/node_modules/async/lib/async.js
@@ -0,0 +1,1123 @@
+/*!
+ * async
+ * https://github.com/caolan/async
+ *
+ * Copyright 2010-2014 Caolan McMahon
+ * Released under the MIT license
+ */
+/*jshint onevar: false, indent:4 */
+/*global setImmediate: false, setTimeout: false, console: false */
+(function () {
+
+ var async = {};
+
+ // global on the server, window in the browser
+ var root, previous_async;
+
+ root = this;
+ if (root != null) {
+ previous_async = root.async;
+ }
+
+ async.noConflict = function () {
+ root.async = previous_async;
+ return async;
+ };
+
+ function only_once(fn) {
+ var called = false;
+ return function() {
+ if (called) throw new Error("Callback was already called.");
+ called = true;
+ fn.apply(root, arguments);
+ }
+ }
+
+ //// cross-browser compatiblity functions ////
+
+ var _toString = Object.prototype.toString;
+
+ var _isArray = Array.isArray || function (obj) {
+ return _toString.call(obj) === '[object Array]';
+ };
+
+ var _each = function (arr, iterator) {
+ if (arr.forEach) {
+ return arr.forEach(iterator);
+ }
+ for (var i = 0; i < arr.length; i += 1) {
+ iterator(arr[i], i, arr);
+ }
+ };
+
+ var _map = function (arr, iterator) {
+ if (arr.map) {
+ return arr.map(iterator);
+ }
+ var results = [];
+ _each(arr, function (x, i, a) {
+ results.push(iterator(x, i, a));
+ });
+ return results;
+ };
+
+ var _reduce = function (arr, iterator, memo) {
+ if (arr.reduce) {
+ return arr.reduce(iterator, memo);
+ }
+ _each(arr, function (x, i, a) {
+ memo = iterator(memo, x, i, a);
+ });
+ return memo;
+ };
+
+ var _keys = function (obj) {
+ if (Object.keys) {
+ return Object.keys(obj);
+ }
+ var keys = [];
+ for (var k in obj) {
+ if (obj.hasOwnProperty(k)) {
+ keys.push(k);
+ }
+ }
+ return keys;
+ };
+
+ //// exported async module functions ////
+
+ //// nextTick implementation with browser-compatible fallback ////
+ if (typeof process === 'undefined' || !(process.nextTick)) {
+ if (typeof setImmediate === 'function') {
+ async.nextTick = function (fn) {
+ // not a direct alias for IE10 compatibility
+ setImmediate(fn);
+ };
+ async.setImmediate = async.nextTick;
+ }
+ else {
+ async.nextTick = function (fn) {
+ setTimeout(fn, 0);
+ };
+ async.setImmediate = async.nextTick;
+ }
+ }
+ else {
+ async.nextTick = process.nextTick;
+ if (typeof setImmediate !== 'undefined') {
+ async.setImmediate = function (fn) {
+ // not a direct alias for IE10 compatibility
+ setImmediate(fn);
+ };
+ }
+ else {
+ async.setImmediate = async.nextTick;
+ }
+ }
+
+ async.each = function (arr, iterator, callback) {
+ callback = callback || function () {};
+ if (!arr.length) {
+ return callback();
+ }
+ var completed = 0;
+ _each(arr, function (x) {
+ iterator(x, only_once(done) );
+ });
+ function done(err) {
+ if (err) {
+ callback(err);
+ callback = function () {};
+ }
+ else {
+ completed += 1;
+ if (completed >= arr.length) {
+ callback();
+ }
+ }
+ }
+ };
+ async.forEach = async.each;
+
+ async.eachSeries = function (arr, iterator, callback) {
+ callback = callback || function () {};
+ if (!arr.length) {
+ return callback();
+ }
+ var completed = 0;
+ var iterate = function () {
+ iterator(arr[completed], function (err) {
+ if (err) {
+ callback(err);
+ callback = function () {};
+ }
+ else {
+ completed += 1;
+ if (completed >= arr.length) {
+ callback();
+ }
+ else {
+ iterate();
+ }
+ }
+ });
+ };
+ iterate();
+ };
+ async.forEachSeries = async.eachSeries;
+
+ async.eachLimit = function (arr, limit, iterator, callback) {
+ var fn = _eachLimit(limit);
+ fn.apply(null, [arr, iterator, callback]);
+ };
+ async.forEachLimit = async.eachLimit;
+
+ var _eachLimit = function (limit) {
+
+ return function (arr, iterator, callback) {
+ callback = callback || function () {};
+ if (!arr.length || limit <= 0) {
+ return callback();
+ }
+ var completed = 0;
+ var started = 0;
+ var running = 0;
+
+ (function replenish () {
+ if (completed >= arr.length) {
+ return callback();
+ }
+
+ while (running < limit && started < arr.length) {
+ started += 1;
+ running += 1;
+ iterator(arr[started - 1], function (err) {
+ if (err) {
+ callback(err);
+ callback = function () {};
+ }
+ else {
+ completed += 1;
+ running -= 1;
+ if (completed >= arr.length) {
+ callback();
+ }
+ else {
+ replenish();
+ }
+ }
+ });
+ }
+ })();
+ };
+ };
+
+
+ var doParallel = function (fn) {
+ return function () {
+ var args = Array.prototype.slice.call(arguments);
+ return fn.apply(null, [async.each].concat(args));
+ };
+ };
+ var doParallelLimit = function(limit, fn) {
+ return function () {
+ var args = Array.prototype.slice.call(arguments);
+ return fn.apply(null, [_eachLimit(limit)].concat(args));
+ };
+ };
+ var doSeries = function (fn) {
+ return function () {
+ var args = Array.prototype.slice.call(arguments);
+ return fn.apply(null, [async.eachSeries].concat(args));
+ };
+ };
+
+
+ var _asyncMap = function (eachfn, arr, iterator, callback) {
+ arr = _map(arr, function (x, i) {
+ return {index: i, value: x};
+ });
+ if (!callback) {
+ eachfn(arr, function (x, callback) {
+ iterator(x.value, function (err) {
+ callback(err);
+ });
+ });
+ } else {
+ var results = [];
+ eachfn(arr, function (x, callback) {
+ iterator(x.value, function (err, v) {
+ results[x.index] = v;
+ callback(err);
+ });
+ }, function (err) {
+ callback(err, results);
+ });
+ }
+ };
+ async.map = doParallel(_asyncMap);
+ async.mapSeries = doSeries(_asyncMap);
+ async.mapLimit = function (arr, limit, iterator, callback) {
+ return _mapLimit(limit)(arr, iterator, callback);
+ };
+
+ var _mapLimit = function(limit) {
+ return doParallelLimit(limit, _asyncMap);
+ };
+
+ // reduce only has a series version, as doing reduce in parallel won't
+ // work in many situations.
+ async.reduce = function (arr, memo, iterator, callback) {
+ async.eachSeries(arr, function (x, callback) {
+ iterator(memo, x, function (err, v) {
+ memo = v;
+ callback(err);
+ });
+ }, function (err) {
+ callback(err, memo);
+ });
+ };
+ // inject alias
+ async.inject = async.reduce;
+ // foldl alias
+ async.foldl = async.reduce;
+
+ async.reduceRight = function (arr, memo, iterator, callback) {
+ var reversed = _map(arr, function (x) {
+ return x;
+ }).reverse();
+ async.reduce(reversed, memo, iterator, callback);
+ };
+ // foldr alias
+ async.foldr = async.reduceRight;
+
+ var _filter = function (eachfn, arr, iterator, callback) {
+ var results = [];
+ arr = _map(arr, function (x, i) {
+ return {index: i, value: x};
+ });
+ eachfn(arr, function (x, callback) {
+ iterator(x.value, function (v) {
+ if (v) {
+ results.push(x);
+ }
+ callback();
+ });
+ }, function (err) {
+ callback(_map(results.sort(function (a, b) {
+ return a.index - b.index;
+ }), function (x) {
+ return x.value;
+ }));
+ });
+ };
+ async.filter = doParallel(_filter);
+ async.filterSeries = doSeries(_filter);
+ // select alias
+ async.select = async.filter;
+ async.selectSeries = async.filterSeries;
+
+ var _reject = function (eachfn, arr, iterator, callback) {
+ var results = [];
+ arr = _map(arr, function (x, i) {
+ return {index: i, value: x};
+ });
+ eachfn(arr, function (x, callback) {
+ iterator(x.value, function (v) {
+ if (!v) {
+ results.push(x);
+ }
+ callback();
+ });
+ }, function (err) {
+ callback(_map(results.sort(function (a, b) {
+ return a.index - b.index;
+ }), function (x) {
+ return x.value;
+ }));
+ });
+ };
+ async.reject = doParallel(_reject);
+ async.rejectSeries = doSeries(_reject);
+
+ var _detect = function (eachfn, arr, iterator, main_callback) {
+ eachfn(arr, function (x, callback) {
+ iterator(x, function (result) {
+ if (result) {
+ main_callback(x);
+ main_callback = function () {};
+ }
+ else {
+ callback();
+ }
+ });
+ }, function (err) {
+ main_callback();
+ });
+ };
+ async.detect = doParallel(_detect);
+ async.detectSeries = doSeries(_detect);
+
+ async.some = function (arr, iterator, main_callback) {
+ async.each(arr, function (x, callback) {
+ iterator(x, function (v) {
+ if (v) {
+ main_callback(true);
+ main_callback = function () {};
+ }
+ callback();
+ });
+ }, function (err) {
+ main_callback(false);
+ });
+ };
+ // any alias
+ async.any = async.some;
+
+ async.every = function (arr, iterator, main_callback) {
+ async.each(arr, function (x, callback) {
+ iterator(x, function (v) {
+ if (!v) {
+ main_callback(false);
+ main_callback = function () {};
+ }
+ callback();
+ });
+ }, function (err) {
+ main_callback(true);
+ });
+ };
+ // all alias
+ async.all = async.every;
+
+ async.sortBy = function (arr, iterator, callback) {
+ async.map(arr, function (x, callback) {
+ iterator(x, function (err, criteria) {
+ if (err) {
+ callback(err);
+ }
+ else {
+ callback(null, {value: x, criteria: criteria});
+ }
+ });
+ }, function (err, results) {
+ if (err) {
+ return callback(err);
+ }
+ else {
+ var fn = function (left, right) {
+ var a = left.criteria, b = right.criteria;
+ return a < b ? -1 : a > b ? 1 : 0;
+ };
+ callback(null, _map(results.sort(fn), function (x) {
+ return x.value;
+ }));
+ }
+ });
+ };
+
+ async.auto = function (tasks, callback) {
+ callback = callback || function () {};
+ var keys = _keys(tasks);
+ var remainingTasks = keys.length
+ if (!remainingTasks) {
+ return callback();
+ }
+
+ var results = {};
+
+ var listeners = [];
+ var addListener = function (fn) {
+ listeners.unshift(fn);
+ };
+ var removeListener = function (fn) {
+ for (var i = 0; i < listeners.length; i += 1) {
+ if (listeners[i] === fn) {
+ listeners.splice(i, 1);
+ return;
+ }
+ }
+ };
+ var taskComplete = function () {
+ remainingTasks--
+ _each(listeners.slice(0), function (fn) {
+ fn();
+ });
+ };
+
+ addListener(function () {
+ if (!remainingTasks) {
+ var theCallback = callback;
+ // prevent final callback from calling itself if it errors
+ callback = function () {};
+
+ theCallback(null, results);
+ }
+ });
+
+ _each(keys, function (k) {
+ var task = _isArray(tasks[k]) ? tasks[k]: [tasks[k]];
+ var taskCallback = function (err) {
+ var args = Array.prototype.slice.call(arguments, 1);
+ if (args.length <= 1) {
+ args = args[0];
+ }
+ if (err) {
+ var safeResults = {};
+ _each(_keys(results), function(rkey) {
+ safeResults[rkey] = results[rkey];
+ });
+ safeResults[k] = args;
+ callback(err, safeResults);
+ // stop subsequent errors hitting callback multiple times
+ callback = function () {};
+ }
+ else {
+ results[k] = args;
+ async.setImmediate(taskComplete);
+ }
+ };
+ var requires = task.slice(0, Math.abs(task.length - 1)) || [];
+ var ready = function () {
+ return _reduce(requires, function (a, x) {
+ return (a && results.hasOwnProperty(x));
+ }, true) && !results.hasOwnProperty(k);
+ };
+ if (ready()) {
+ task[task.length - 1](taskCallback, results);
+ }
+ else {
+ var listener = function () {
+ if (ready()) {
+ removeListener(listener);
+ task[task.length - 1](taskCallback, results);
+ }
+ };
+ addListener(listener);
+ }
+ });
+ };
+
+ async.retry = function(times, task, callback) {
+ var DEFAULT_TIMES = 5;
+ var attempts = [];
+ // Use defaults if times not passed
+ if (typeof times === 'function') {
+ callback = task;
+ task = times;
+ times = DEFAULT_TIMES;
+ }
+ // Make sure times is a number
+ times = parseInt(times, 10) || DEFAULT_TIMES;
+ var wrappedTask = function(wrappedCallback, wrappedResults) {
+ var retryAttempt = function(task, finalAttempt) {
+ return function(seriesCallback) {
+ task(function(err, result){
+ seriesCallback(!err || finalAttempt, {err: err, result: result});
+ }, wrappedResults);
+ };
+ };
+ while (times) {
+ attempts.push(retryAttempt(task, !(times-=1)));
+ }
+ async.series(attempts, function(done, data){
+ data = data[data.length - 1];
+ (wrappedCallback || callback)(data.err, data.result);
+ });
+ }
+ // If a callback is passed, run this as a controll flow
+ return callback ? wrappedTask() : wrappedTask
+ };
+
+ async.waterfall = function (tasks, callback) {
+ callback = callback || function () {};
+ if (!_isArray(tasks)) {
+ var err = new Error('First argument to waterfall must be an array of functions');
+ return callback(err);
+ }
+ if (!tasks.length) {
+ return callback();
+ }
+ var wrapIterator = function (iterator) {
+ return function (err) {
+ if (err) {
+ callback.apply(null, arguments);
+ callback = function () {};
+ }
+ else {
+ var args = Array.prototype.slice.call(arguments, 1);
+ var next = iterator.next();
+ if (next) {
+ args.push(wrapIterator(next));
+ }
+ else {
+ args.push(callback);
+ }
+ async.setImmediate(function () {
+ iterator.apply(null, args);
+ });
+ }
+ };
+ };
+ wrapIterator(async.iterator(tasks))();
+ };
+
+ var _parallel = function(eachfn, tasks, callback) {
+ callback = callback || function () {};
+ if (_isArray(tasks)) {
+ eachfn.map(tasks, function (fn, callback) {
+ if (fn) {
+ fn(function (err) {
+ var args = Array.prototype.slice.call(arguments, 1);
+ if (args.length <= 1) {
+ args = args[0];
+ }
+ callback.call(null, err, args);
+ });
+ }
+ }, callback);
+ }
+ else {
+ var results = {};
+ eachfn.each(_keys(tasks), function (k, callback) {
+ tasks[k](function (err) {
+ var args = Array.prototype.slice.call(arguments, 1);
+ if (args.length <= 1) {
+ args = args[0];
+ }
+ results[k] = args;
+ callback(err);
+ });
+ }, function (err) {
+ callback(err, results);
+ });
+ }
+ };
+
+ async.parallel = function (tasks, callback) {
+ _parallel({ map: async.map, each: async.each }, tasks, callback);
+ };
+
+ async.parallelLimit = function(tasks, limit, callback) {
+ _parallel({ map: _mapLimit(limit), each: _eachLimit(limit) }, tasks, callback);
+ };
+
+ async.series = function (tasks, callback) {
+ callback = callback || function () {};
+ if (_isArray(tasks)) {
+ async.mapSeries(tasks, function (fn, callback) {
+ if (fn) {
+ fn(function (err) {
+ var args = Array.prototype.slice.call(arguments, 1);
+ if (args.length <= 1) {
+ args = args[0];
+ }
+ callback.call(null, err, args);
+ });
+ }
+ }, callback);
+ }
+ else {
+ var results = {};
+ async.eachSeries(_keys(tasks), function (k, callback) {
+ tasks[k](function (err) {
+ var args = Array.prototype.slice.call(arguments, 1);
+ if (args.length <= 1) {
+ args = args[0];
+ }
+ results[k] = args;
+ callback(err);
+ });
+ }, function (err) {
+ callback(err, results);
+ });
+ }
+ };
+
+ async.iterator = function (tasks) {
+ var makeCallback = function (index) {
+ var fn = function () {
+ if (tasks.length) {
+ tasks[index].apply(null, arguments);
+ }
+ return fn.next();
+ };
+ fn.next = function () {
+ return (index < tasks.length - 1) ? makeCallback(index + 1): null;
+ };
+ return fn;
+ };
+ return makeCallback(0);
+ };
+
+ async.apply = function (fn) {
+ var args = Array.prototype.slice.call(arguments, 1);
+ return function () {
+ return fn.apply(
+ null, args.concat(Array.prototype.slice.call(arguments))
+ );
+ };
+ };
+
+ var _concat = function (eachfn, arr, fn, callback) {
+ var r = [];
+ eachfn(arr, function (x, cb) {
+ fn(x, function (err, y) {
+ r = r.concat(y || []);
+ cb(err);
+ });
+ }, function (err) {
+ callback(err, r);
+ });
+ };
+ async.concat = doParallel(_concat);
+ async.concatSeries = doSeries(_concat);
+
+ async.whilst = function (test, iterator, callback) {
+ if (test()) {
+ iterator(function (err) {
+ if (err) {
+ return callback(err);
+ }
+ async.whilst(test, iterator, callback);
+ });
+ }
+ else {
+ callback();
+ }
+ };
+
+ async.doWhilst = function (iterator, test, callback) {
+ iterator(function (err) {
+ if (err) {
+ return callback(err);
+ }
+ var args = Array.prototype.slice.call(arguments, 1);
+ if (test.apply(null, args)) {
+ async.doWhilst(iterator, test, callback);
+ }
+ else {
+ callback();
+ }
+ });
+ };
+
+ async.until = function (test, iterator, callback) {
+ if (!test()) {
+ iterator(function (err) {
+ if (err) {
+ return callback(err);
+ }
+ async.until(test, iterator, callback);
+ });
+ }
+ else {
+ callback();
+ }
+ };
+
+ async.doUntil = function (iterator, test, callback) {
+ iterator(function (err) {
+ if (err) {
+ return callback(err);
+ }
+ var args = Array.prototype.slice.call(arguments, 1);
+ if (!test.apply(null, args)) {
+ async.doUntil(iterator, test, callback);
+ }
+ else {
+ callback();
+ }
+ });
+ };
+
+ async.queue = function (worker, concurrency) {
+ if (concurrency === undefined) {
+ concurrency = 1;
+ }
+ function _insert(q, data, pos, callback) {
+ if (!q.started){
+ q.started = true;
+ }
+ if (!_isArray(data)) {
+ data = [data];
+ }
+ if(data.length == 0) {
+ // call drain immediately if there are no tasks
+ return async.setImmediate(function() {
+ if (q.drain) {
+ q.drain();
+ }
+ });
+ }
+ _each(data, function(task) {
+ var item = {
+ data: task,
+ callback: typeof callback === 'function' ? callback : null
+ };
+
+ if (pos) {
+ q.tasks.unshift(item);
+ } else {
+ q.tasks.push(item);
+ }
+
+ if (q.saturated && q.tasks.length === q.concurrency) {
+ q.saturated();
+ }
+ async.setImmediate(q.process);
+ });
+ }
+
+ var workers = 0;
+ var q = {
+ tasks: [],
+ concurrency: concurrency,
+ saturated: null,
+ empty: null,
+ drain: null,
+ started: false,
+ paused: false,
+ push: function (data, callback) {
+ _insert(q, data, false, callback);
+ },
+ kill: function () {
+ q.drain = null;
+ q.tasks = [];
+ },
+ unshift: function (data, callback) {
+ _insert(q, data, true, callback);
+ },
+ process: function () {
+ if (!q.paused && workers < q.concurrency && q.tasks.length) {
+ var task = q.tasks.shift();
+ if (q.empty && q.tasks.length === 0) {
+ q.empty();
+ }
+ workers += 1;
+ var next = function () {
+ workers -= 1;
+ if (task.callback) {
+ task.callback.apply(task, arguments);
+ }
+ if (q.drain && q.tasks.length + workers === 0) {
+ q.drain();
+ }
+ q.process();
+ };
+ var cb = only_once(next);
+ worker(task.data, cb);
+ }
+ },
+ length: function () {
+ return q.tasks.length;
+ },
+ running: function () {
+ return workers;
+ },
+ idle: function() {
+ return q.tasks.length + workers === 0;
+ },
+ pause: function () {
+ if (q.paused === true) { return; }
+ q.paused = true;
+ q.process();
+ },
+ resume: function () {
+ if (q.paused === false) { return; }
+ q.paused = false;
+ q.process();
+ }
+ };
+ return q;
+ };
+
+ async.priorityQueue = function (worker, concurrency) {
+
+ function _compareTasks(a, b){
+ return a.priority - b.priority;
+ };
+
+ function _binarySearch(sequence, item, compare) {
+ var beg = -1,
+ end = sequence.length - 1;
+ while (beg < end) {
+ var mid = beg + ((end - beg + 1) >>> 1);
+ if (compare(item, sequence[mid]) >= 0) {
+ beg = mid;
+ } else {
+ end = mid - 1;
+ }
+ }
+ return beg;
+ }
+
+ function _insert(q, data, priority, callback) {
+ if (!q.started){
+ q.started = true;
+ }
+ if (!_isArray(data)) {
+ data = [data];
+ }
+ if(data.length == 0) {
+ // call drain immediately if there are no tasks
+ return async.setImmediate(function() {
+ if (q.drain) {
+ q.drain();
+ }
+ });
+ }
+ _each(data, function(task) {
+ var item = {
+ data: task,
+ priority: priority,
+ callback: typeof callback === 'function' ? callback : null
+ };
+
+ q.tasks.splice(_binarySearch(q.tasks, item, _compareTasks) + 1, 0, item);
+
+ if (q.saturated && q.tasks.length === q.concurrency) {
+ q.saturated();
+ }
+ async.setImmediate(q.process);
+ });
+ }
+
+ // Start with a normal queue
+ var q = async.queue(worker, concurrency);
+
+ // Override push to accept second parameter representing priority
+ q.push = function (data, priority, callback) {
+ _insert(q, data, priority, callback);
+ };
+
+ // Remove unshift function
+ delete q.unshift;
+
+ return q;
+ };
+
+ async.cargo = function (worker, payload) {
+ var working = false,
+ tasks = [];
+
+ var cargo = {
+ tasks: tasks,
+ payload: payload,
+ saturated: null,
+ empty: null,
+ drain: null,
+ drained: true,
+ push: function (data, callback) {
+ if (!_isArray(data)) {
+ data = [data];
+ }
+ _each(data, function(task) {
+ tasks.push({
+ data: task,
+ callback: typeof callback === 'function' ? callback : null
+ });
+ cargo.drained = false;
+ if (cargo.saturated && tasks.length === payload) {
+ cargo.saturated();
+ }
+ });
+ async.setImmediate(cargo.process);
+ },
+ process: function process() {
+ if (working) return;
+ if (tasks.length === 0) {
+ if(cargo.drain && !cargo.drained) cargo.drain();
+ cargo.drained = true;
+ return;
+ }
+
+ var ts = typeof payload === 'number'
+ ? tasks.splice(0, payload)
+ : tasks.splice(0, tasks.length);
+
+ var ds = _map(ts, function (task) {
+ return task.data;
+ });
+
+ if(cargo.empty) cargo.empty();
+ working = true;
+ worker(ds, function () {
+ working = false;
+
+ var args = arguments;
+ _each(ts, function (data) {
+ if (data.callback) {
+ data.callback.apply(null, args);
+ }
+ });
+
+ process();
+ });
+ },
+ length: function () {
+ return tasks.length;
+ },
+ running: function () {
+ return working;
+ }
+ };
+ return cargo;
+ };
+
+ var _console_fn = function (name) {
+ return function (fn) {
+ var args = Array.prototype.slice.call(arguments, 1);
+ fn.apply(null, args.concat([function (err) {
+ var args = Array.prototype.slice.call(arguments, 1);
+ if (typeof console !== 'undefined') {
+ if (err) {
+ if (console.error) {
+ console.error(err);
+ }
+ }
+ else if (console[name]) {
+ _each(args, function (x) {
+ console[name](x);
+ });
+ }
+ }
+ }]));
+ };
+ };
+ async.log = _console_fn('log');
+ async.dir = _console_fn('dir');
+ /*async.info = _console_fn('info');
+ async.warn = _console_fn('warn');
+ async.error = _console_fn('error');*/
+
+ async.memoize = function (fn, hasher) {
+ var memo = {};
+ var queues = {};
+ hasher = hasher || function (x) {
+ return x;
+ };
+ var memoized = function () {
+ var args = Array.prototype.slice.call(arguments);
+ var callback = args.pop();
+ var key = hasher.apply(null, args);
+ if (key in memo) {
+ async.nextTick(function () {
+ callback.apply(null, memo[key]);
+ });
+ }
+ else if (key in queues) {
+ queues[key].push(callback);
+ }
+ else {
+ queues[key] = [callback];
+ fn.apply(null, args.concat([function () {
+ memo[key] = arguments;
+ var q = queues[key];
+ delete queues[key];
+ for (var i = 0, l = q.length; i < l; i++) {
+ q[i].apply(null, arguments);
+ }
+ }]));
+ }
+ };
+ memoized.memo = memo;
+ memoized.unmemoized = fn;
+ return memoized;
+ };
+
+ async.unmemoize = function (fn) {
+ return function () {
+ return (fn.unmemoized || fn).apply(null, arguments);
+ };
+ };
+
+ async.times = function (count, iterator, callback) {
+ var counter = [];
+ for (var i = 0; i < count; i++) {
+ counter.push(i);
+ }
+ return async.map(counter, iterator, callback);
+ };
+
+ async.timesSeries = function (count, iterator, callback) {
+ var counter = [];
+ for (var i = 0; i < count; i++) {
+ counter.push(i);
+ }
+ return async.mapSeries(counter, iterator, callback);
+ };
+
+ async.seq = function (/* functions... */) {
+ var fns = arguments;
+ return function () {
+ var that = this;
+ var args = Array.prototype.slice.call(arguments);
+ var callback = args.pop();
+ async.reduce(fns, args, function (newargs, fn, cb) {
+ fn.apply(that, newargs.concat([function () {
+ var err = arguments[0];
+ var nextargs = Array.prototype.slice.call(arguments, 1);
+ cb(err, nextargs);
+ }]))
+ },
+ function (err, results) {
+ callback.apply(that, [err].concat(results));
+ });
+ };
+ };
+
+ async.compose = function (/* functions... */) {
+ return async.seq.apply(null, Array.prototype.reverse.call(arguments));
+ };
+
+ var _applyEach = function (eachfn, fns /*args...*/) {
+ var go = function () {
+ var that = this;
+ var args = Array.prototype.slice.call(arguments);
+ var callback = args.pop();
+ return eachfn(fns, function (fn, cb) {
+ fn.apply(that, args.concat([cb]));
+ },
+ callback);
+ };
+ if (arguments.length > 2) {
+ var args = Array.prototype.slice.call(arguments, 2);
+ return go.apply(this, args);
+ }
+ else {
+ return go;
+ }
+ };
+ async.applyEach = doParallel(_applyEach);
+ async.applyEachSeries = doSeries(_applyEach);
+
+ async.forever = function (fn, callback) {
+ function next(err) {
+ if (err) {
+ if (callback) {
+ return callback(err);
+ }
+ throw err;
+ }
+ fn(next);
+ }
+ next();
+ };
+
+ // Node.js
+ if (typeof module !== 'undefined' && module.exports) {
+ module.exports = async;
+ }
+ // AMD / RequireJS
+ else if (typeof define !== 'undefined' && define.amd) {
+ define([], function () {
+ return async;
+ });
+ }
+ // included directly via
+
\ No newline at end of file
diff --git a/node_modules/http-server/node_modules/union/examples/socketio/server.js b/node_modules/http-server/node_modules/union/examples/socketio/server.js
new file mode 100644
index 00000000..1b7c5809
--- /dev/null
+++ b/node_modules/http-server/node_modules/union/examples/socketio/server.js
@@ -0,0 +1,30 @@
+var fs = require('fs'),
+ union = require('union');
+
+var server = union.createServer({
+ before: [
+ function (req, res) {
+ fs.readFile(__dirname + '/index.html',
+ function (err, data) {
+ if (err) {
+ res.writeHead(500);
+ return res.end('Error loading index.html');
+ }
+
+ res.writeHead(200);
+ res.end(data);
+ });
+ }
+ ]
+});
+
+server.listen(9090);
+
+var io = require('socket.io').listen(server);
+
+io.sockets.on('connection', function (socket) {
+ socket.emit('news', {hello: 'world'});
+ socket.on('my other event', function (data) {
+ console.log(data);
+ });
+});
\ No newline at end of file
diff --git a/node_modules/http-server/node_modules/union/lib/buffered-stream.js b/node_modules/http-server/node_modules/union/lib/buffered-stream.js
new file mode 100644
index 00000000..d53117bf
--- /dev/null
+++ b/node_modules/http-server/node_modules/union/lib/buffered-stream.js
@@ -0,0 +1,141 @@
+/*
+ * buffered-stream.js: A simple(r) Stream which is partially buffered into memory.
+ *
+ * (C) 2010, Mikeal Rogers
+ *
+ * Adapted for Flatiron
+ * (C) 2011, Charlie Robbins & the Contributors
+ * MIT LICENSE
+ *
+ */
+
+var events = require('events'),
+ fs = require('fs'),
+ stream = require('stream'),
+ util = require('util');
+
+//
+// ### function BufferedStream (limit)
+// #### @limit {number} **Optional** Size of the buffer to limit
+// Constructor function for the BufferedStream object responsible for
+// maintaining a stream interface which can also persist to memory
+// temporarily.
+//
+
+var BufferedStream = module.exports = function (limit) {
+ events.EventEmitter.call(this);
+
+ if (typeof limit === 'undefined') {
+ limit = Infinity;
+ }
+
+ this.limit = limit;
+ this.size = 0;
+ this.chunks = [];
+ this.writable = true;
+ this.readable = true;
+ this._buffer = true;
+};
+
+util.inherits(BufferedStream, stream.Stream);
+
+Object.defineProperty(BufferedStream.prototype, 'buffer', {
+ get: function () {
+ return this._buffer;
+ },
+ set: function (value) {
+ if (!value && this.chunks) {
+ var self = this;
+ this.chunks.forEach(function (c) { self.emit('data', c) });
+ if (this.ended) this.emit('end');
+ this.size = 0;
+ delete this.chunks;
+ }
+
+ this._buffer = value;
+ }
+});
+
+BufferedStream.prototype.pipe = function () {
+ var self = this,
+ dest;
+
+ if (self.resume) {
+ self.resume();
+ }
+
+ dest = stream.Stream.prototype.pipe.apply(self, arguments);
+
+ //
+ // just incase you are piping to two streams, do not emit data twice.
+ // note: you can pipe twice, but you need to pipe both streams in the same tick.
+ // (this is normal for streams)
+ //
+ if (this.piped) {
+ return dest;
+ }
+
+ process.nextTick(function () {
+ if (self.chunks) {
+ self.chunks.forEach(function (c) { self.emit('data', c) });
+ self.size = 0;
+ delete self.chunks;
+ }
+
+ if (!self.readable) {
+ if (self.ended) {
+ self.emit('end');
+ }
+ else if (self.closed) {
+ self.emit('close');
+ }
+ }
+ });
+
+ this.piped = true;
+
+ return dest;
+};
+
+BufferedStream.prototype.write = function (chunk) {
+ if (!this.chunks || this.piped) {
+ this.emit('data', chunk);
+ return;
+ }
+
+ this.chunks.push(chunk);
+ this.size += chunk.length;
+ if (this.limit < this.size) {
+ this.pause();
+ }
+};
+
+BufferedStream.prototype.end = function () {
+ this.readable = false;
+ this.ended = true;
+ this.emit('end');
+};
+
+BufferedStream.prototype.destroy = function () {
+ this.readable = false;
+ this.writable = false;
+ delete this.chunks;
+};
+
+BufferedStream.prototype.close = function () {
+ this.readable = false;
+ this.closed = true;
+};
+
+if (!stream.Stream.prototype.pause) {
+ BufferedStream.prototype.pause = function () {
+ this.emit('pause');
+ };
+}
+
+if (!stream.Stream.prototype.resume) {
+ BufferedStream.prototype.resume = function () {
+ this.emit('resume');
+ };
+}
+
diff --git a/node_modules/http-server/node_modules/union/lib/core.js b/node_modules/http-server/node_modules/union/lib/core.js
new file mode 100644
index 00000000..8aed9c19
--- /dev/null
+++ b/node_modules/http-server/node_modules/union/lib/core.js
@@ -0,0 +1,108 @@
+/*
+ * core.js: Core functionality for the Flatiron HTTP (with SPDY support) plugin.
+ *
+ * (C) 2011, Charlie Robbins & the Contributors
+ * MIT LICENSE
+ *
+ */
+
+var http = require('http'),
+ https = require('https'),
+ fs = require('fs'),
+ stream = require('stream'),
+ HttpStream = require('./http-stream'),
+ RoutingStream = require('./routing-stream');
+
+var core = exports;
+
+core.createServer = function (options) {
+ var isArray = Array.isArray(options.after),
+ credentials;
+
+ if (!options) {
+ throw new Error('options is required to create a server');
+ }
+
+ function requestHandler(req, res) {
+ var routingStream = new RoutingStream({
+ before: options.before,
+ buffer: options.buffer,
+ //
+ // Remark: without new after is a huge memory leak that
+ // pipes to every single open connection
+ //
+ after: isArray && options.after.map(function (After) {
+ return new After;
+ }),
+ request: req,
+ response: res,
+ limit: options.limit,
+ headers: options.headers
+ });
+
+ routingStream.on('error', function (err) {
+ var fn = options.onError || core.errorHandler;
+ fn(err, routingStream, routingStream.target, function () {
+ routingStream.target.emit('next');
+ });
+ });
+
+ req.pipe(routingStream);
+ }
+
+ //
+ // both https and spdy requires same params
+ //
+ if (options.https || options.spdy) {
+ if (options.https && options.spdy) {
+ throw new Error('You shouldn\'t be using https and spdy simultaneously.');
+ }
+
+ var serverOptions,
+ credentials,
+ key = !options.spdy
+ ? 'https'
+ : 'spdy';
+
+ serverOptions = options[key];
+ if (!serverOptions.key || !serverOptions.cert) {
+ throw new Error('Both options.' + key + '.`key` and options.' + key + '.`cert` are required.');
+ }
+
+ credentials = {
+ key: fs.readFileSync(serverOptions.key),
+ cert: fs.readFileSync(serverOptions.cert)
+ };
+
+ if (serverOptions.ca) {
+ serverOptions.ca = !Array.isArray(serverOptions.ca)
+ ? [serverOptions.ca]
+ : serverOptions.ca
+
+ credentials.ca = serverOptions.ca.map(function (ca) {
+ return fs.readFileSync(ca);
+ });
+ }
+
+ if (options.spdy) {
+ // spdy is optional so we require module here rather than on top
+ var spdy = require('spdy');
+ return spdy.createServer(credentials, requestHandler);
+ }
+
+ return https.createServer(credentials, requestHandler);
+ }
+
+ return http.createServer(requestHandler);
+};
+
+core.errorHandler = function error(err, req, res) {
+ if (err) {
+ (this.res || res).writeHead(err.status || 500, err.headers || { "Content-Type": "text/plain" });
+ (this.res || res).end(err.message + "\n");
+ return;
+ }
+
+ (this.res || res).writeHead(404, {"Content-Type": "text/plain"});
+ (this.res || res).end("Not Found\n");
+};
diff --git a/node_modules/http-server/node_modules/union/lib/http-stream.js b/node_modules/http-server/node_modules/union/lib/http-stream.js
new file mode 100644
index 00000000..021884f0
--- /dev/null
+++ b/node_modules/http-server/node_modules/union/lib/http-stream.js
@@ -0,0 +1,52 @@
+/*
+ * http-stream.js: Idomatic buffered stream which pipes additional HTTP information.
+ *
+ * (C) 2011, Charlie Robbins & the Contributors
+ * MIT LICENSE
+ *
+ */
+
+var url = require('url'),
+ util = require('util'),
+ qs = require('qs'),
+ BufferedStream = require('./buffered-stream');
+
+var HttpStream = module.exports = function (options) {
+ options = options || {};
+ BufferedStream.call(this, options.limit);
+
+ if (options.buffer === false) {
+ this.buffer = false;
+ }
+
+ this.on('pipe', this.pipeState);
+};
+
+util.inherits(HttpStream, BufferedStream);
+
+//
+// ### function pipeState (source)
+// #### @source {ServerRequest|HttpStream} Source stream piping to this instance
+// Pipes additional HTTP metadata from the `source` HTTP stream (either concrete or
+// abstract) to this instance. e.g. url, headers, query, etc.
+//
+// Remark: Is there anything else we wish to pipe?
+//
+HttpStream.prototype.pipeState = function (source) {
+ this.headers = source.headers;
+ this.trailers = source.trailers;
+ this.method = source.method;
+
+ if (source.url) {
+ this.url = this.originalUrl = source.url;
+ }
+
+ if (source.query) {
+ this.query = source.query;
+ }
+ else if (source.url) {
+ this.query = ~source.url.indexOf('?')
+ ? qs.parse(url.parse(source.url).query)
+ : {};
+ }
+};
diff --git a/node_modules/http-server/node_modules/union/lib/index.js b/node_modules/http-server/node_modules/union/lib/index.js
new file mode 100644
index 00000000..34c5f0b8
--- /dev/null
+++ b/node_modules/http-server/node_modules/union/lib/index.js
@@ -0,0 +1,24 @@
+/*
+ * index.js: Top-level plugin exposing HTTP features in flatiron
+ *
+ * (C) 2011, Charlie Robbins & the Contributors
+ * MIT LICENSE
+ *
+ */
+
+var union = exports;
+
+//
+// Expose version information
+//
+exports.version = require('../package.json').version;
+
+//
+// Expose core union components
+//
+union.BufferedStream = require('./buffered-stream');
+union.HttpStream = require('./http-stream');
+union.ResponseStream = require('./response-stream');
+union.RoutingStream = require('./routing-stream');
+union.createServer = require('./core').createServer;
+union.errorHandler = require('./core').errorHandler;
diff --git a/node_modules/http-server/node_modules/union/lib/request-stream.js b/node_modules/http-server/node_modules/union/lib/request-stream.js
new file mode 100644
index 00000000..6cb7150c
--- /dev/null
+++ b/node_modules/http-server/node_modules/union/lib/request-stream.js
@@ -0,0 +1,58 @@
+/*
+ * http-stream.js: Idomatic buffered stream which pipes additional HTTP information.
+ *
+ * (C) 2011, Charlie Robbins & the Contributors
+ * MIT LICENSE
+ *
+ */
+
+var url = require('url'),
+ util = require('util'),
+ qs = require('qs'),
+ HttpStream = require('./http-stream');
+
+var RequestStream = module.exports = function (options) {
+ options = options || {};
+ HttpStream.call(this, options);
+
+ this.on('pipe', this.pipeRequest);
+ this.request = options.request;
+};
+
+util.inherits(RequestStream, HttpStream);
+
+//
+// ### function pipeRequest (source)
+// #### @source {ServerRequest|HttpStream} Source stream piping to this instance
+// Pipes additional HTTP request metadata from the `source` HTTP stream (either concrete or
+// abstract) to this instance. e.g. url, headers, query, etc.
+//
+// Remark: Is there anything else we wish to pipe?
+//
+RequestStream.prototype.pipeRequest = function (source) {
+ this.url = this.originalUrl = source.url;
+ this.method = source.method;
+ this.httpVersion = source.httpVersion;
+ this.httpVersionMajor = source.httpVersionMajor;
+ this.httpVersionMinor = source.httpVersionMinor;
+ this.setEncoding = source.setEncoding;
+ this.connection = source.connection;
+ this.socket = source.socket;
+
+ if (source.query) {
+ this.query = source.query;
+ }
+ else {
+ this.query = ~source.url.indexOf('?')
+ ? qs.parse(url.parse(source.url).query)
+ : {};
+ }
+};
+
+// http.serverRequest methods
+['setEncoding'].forEach(function (method) {
+ RequestStream.prototype[method] = function () {
+ return this.request[method].apply(this.request, arguments);
+ };
+});
+
diff --git a/node_modules/http-server/node_modules/union/lib/response-stream.js b/node_modules/http-server/node_modules/union/lib/response-stream.js
new file mode 100644
index 00000000..e11b2d3c
--- /dev/null
+++ b/node_modules/http-server/node_modules/union/lib/response-stream.js
@@ -0,0 +1,203 @@
+/*
+ * response-stream.js: A Stream focused on writing any relevant information to
+ * a raw http.ServerResponse object.
+ *
+ * (C) 2011, Charlie Robbins & the Contributors
+ * MIT LICENSE
+ *
+ */
+
+var util = require('util'),
+ HttpStream = require('./http-stream');
+
+var STATUS_CODES = require('http').STATUS_CODES;
+
+//
+// ### function ResponseStream (options)
+//
+//
+var ResponseStream = module.exports = function (options) {
+ var self = this,
+ key;
+
+ options = options || {};
+ HttpStream.call(this, options);
+
+ this.writeable = true;
+ this.response = options.response;
+
+ if (options.headers) {
+ for (key in options.headers) {
+ this.response.setHeader(key, options.headers[key]);
+ }
+ }
+
+ //
+ // Proxy `statusCode` changes to the actual `response.statusCode`.
+ //
+ Object.defineProperty(this, 'statusCode', {
+ get: function () {
+ return self.response.statusCode;
+ },
+ set: function (value) {
+ self.response.statusCode = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ if (this.response) {
+ this._headers = this.response._headers = this.response._headers || {};
+
+ // Patch to node core
+ this.response._headerNames = this.response._headerNames || {};
+
+ //
+ // Proxy to emit "header" event
+ //
+ this._renderHeaders = this.response._renderHeaders;
+ this.response._renderHeaders = function () {
+ if (!self._emittedHeader) {
+ self._emittedHeader = true;
+ self.headerSent = true;
+ self._header = true;
+ self.emit('header');
+ }
+
+ return self._renderHeaders.call(self.response);
+ };
+ }
+};
+
+util.inherits(ResponseStream, HttpStream);
+
+ResponseStream.prototype.writeHead = function (statusCode, statusMessage, headers) {
+ if (typeof statusMessage === 'string') {
+ this.response.statusMessage = statusMessage;
+ } else {
+ this.response.statusMessage = this.response.statusMessage
+ || STATUS_CODES[statusCode] || 'unknown';
+ headers = statusMessage;
+ }
+
+ this.response.statusCode = statusCode;
+
+ if (headers) {
+ var keys = Object.keys(headers);
+ for (var i = 0; i < keys.length; i++) {
+ var k = keys[i];
+ if (k) this.response.setHeader(k, headers[k]);
+ }
+ }
+};
+
+//
+// Create pass-thru for the necessary
+// `http.ServerResponse` methods.
+//
+['setHeader', 'getHeader', 'removeHeader', '_implicitHeader', 'addTrailers'].forEach(function (method) {
+ ResponseStream.prototype[method] = function () {
+ return this.response[method].apply(this.response, arguments);
+ };
+});
+
+ResponseStream.prototype.json = function (obj) {
+ if (!this.response.writable) {
+ return;
+ }
+
+ if (typeof obj === 'number') {
+ this.response.statusCode = obj;
+ obj = arguments[1];
+ }
+
+ this.modified = true;
+
+ if (!this.response._header && this.response.getHeader('content-type') !== 'application/json') {
+ this.response.setHeader('content-type', 'application/json');
+ }
+
+ this.end(obj ? JSON.stringify(obj) : '');
+};
+
+ResponseStream.prototype.html = function (str) {
+ if (!this.response.writable) {
+ return;
+ }
+
+ if (typeof str === 'number') {
+ this.response.statusCode = str;
+ str = arguments[1];
+ }
+
+ this.modified = true;
+
+ if (!this.response._header && this.response.getHeader('content-type') !== 'text/html') {
+ this.response.setHeader('content-type', 'text/html');
+ }
+
+ this.end(str ? str: '');
+};
+
+ResponseStream.prototype.text = function (str) {
+ if (!this.response.writable) {
+ return;
+ }
+
+ if (typeof str === 'number') {
+ this.response.statusCode = str;
+ str = arguments[1];
+ }
+
+ this.modified = true;
+
+ if (!this.response._header && this.response.getHeader('content-type') !== 'text/plain') {
+ this.response.setHeader('content-type', 'text/plain');
+ }
+
+ this.end(str ? str: '');
+};
+
+ResponseStream.prototype.end = function (data) {
+ if (data && this.writable) {
+ this.emit('data', data);
+ }
+
+ this.modified = true;
+ this.emit('end');
+};
+
+ResponseStream.prototype.pipe = function () {
+ var self = this,
+ dest;
+
+ self.dest = dest = HttpStream.prototype.pipe.apply(self, arguments);
+
+ dest.on('drain', function() {
+ self.emit('drain')
+ })
+ return dest;
+};
+
+ResponseStream.prototype.write = function (data) {
+ this.modified = true;
+
+ if (this.writable) {
+ return this.dest.write(data);
+ }
+};
+
+ResponseStream.prototype.redirect = function (path, status) {
+ var url = '';
+
+ if (~path.indexOf('://')) {
+ url = path;
+ } else {
+ url += this.req.connection.encrypted ? 'https://' : 'http://';
+ url += this.req.headers.host;
+ url += (path[0] === '/') ? path : '/' + path;
+ }
+
+ this.res.writeHead(status || 302, { 'Location': url });
+ this.end();
+};
diff --git a/node_modules/http-server/node_modules/union/lib/routing-stream.js b/node_modules/http-server/node_modules/union/lib/routing-stream.js
new file mode 100644
index 00000000..2597c477
--- /dev/null
+++ b/node_modules/http-server/node_modules/union/lib/routing-stream.js
@@ -0,0 +1,126 @@
+/*
+ * routing-stream.js: A Stream focused on connecting an arbitrary RequestStream and
+ * ResponseStream through a given Router.
+ *
+ * (C) 2011, Charlie Robbins & the Contributors
+ * MIT LICENSE
+ *
+ */
+
+var util = require('util'),
+ union = require('./index'),
+ RequestStream = require('./request-stream'),
+ ResponseStream = require('./response-stream');
+
+//
+// ### function RoutingStream (options)
+//
+//
+var RoutingStream = module.exports = function (options) {
+ options = options || {};
+ RequestStream.call(this, options);
+
+ this.before = options.before || [];
+ this.after = options.after || [];
+ this.response = options.response || options.res;
+ this.headers = options.headers || {
+ 'x-powered-by': 'union ' + union.version
+ };
+
+ this.target = new ResponseStream({
+ response: this.response,
+ headers: this.headers
+ });
+
+ this.once('pipe', this.route);
+};
+
+util.inherits(RoutingStream, RequestStream);
+
+//
+// Called when this instance is piped to **by another stream**
+//
+RoutingStream.prototype.route = function (req) {
+ //
+ // When a `RoutingStream` is piped to:
+ //
+ // 1. Setup the pipe-chain between the `after` middleware, the abstract response
+ // and the concrete response.
+ // 2. Attempt to dispatch to the `before` middleware, which represent things such as
+ // favicon, static files, application routing.
+ // 3. If no match is found then pipe to the 404Stream
+ //
+ var self = this,
+ after,
+ error,
+ i;
+
+ //
+ // Don't allow `this.target` to be writable on HEAD requests
+ //
+ this.target.writable = req.method !== 'HEAD';
+
+ //
+ // 1. Setup the pipe-chain between the `after` middleware, the abstract response
+ // and the concrete response.
+ //
+ after = [this.target].concat(this.after, this.response);
+ for (i = 0; i < after.length - 1; i++) {
+ //
+ // attach req and res to all streams
+ //
+ after[i].req = req;
+ after[i + 1].req = req;
+ after[i].res = this.response;
+ after[i + 1].res = this.response;
+ after[i].pipe(after[i + 1]);
+
+ //
+ // prevent multiple responses and memory leaks
+ //
+ after[i].on('error', this.onError);
+ }
+
+ //
+ // Helper function for dispatching to the 404 stream.
+ //
+ function notFound() {
+ error = new Error('Not found');
+ error.status = 404;
+ self.onError(error);
+ }
+
+ //
+ // 2. Attempt to dispatch to the `before` middleware, which represent things such as
+ // favicon, static files, application routing.
+ //
+ (function dispatch(i) {
+ if (self.target.modified) {
+ return;
+ }
+ else if (++i === self.before.length) {
+ //
+ // 3. If no match is found then pipe to the 404Stream
+ //
+ return notFound();
+ }
+
+ self.target.once('next', dispatch.bind(null, i));
+ if (self.before[i].length === 3) {
+ self.before[i](self, self.target, function (err) {
+ if (err) {
+ self.onError(err);
+ } else {
+ self.target.emit('next');
+ }
+ });
+ }
+ else {
+ self.before[i](self, self.target);
+ }
+ })(-1);
+};
+
+RoutingStream.prototype.onError = function (err) {
+ this.emit('error', err);
+};
diff --git a/node_modules/http-server/node_modules/union/node_modules/qs/.jshintignore b/node_modules/http-server/node_modules/union/node_modules/qs/.jshintignore
new file mode 100644
index 00000000..3c3629e6
--- /dev/null
+++ b/node_modules/http-server/node_modules/union/node_modules/qs/.jshintignore
@@ -0,0 +1 @@
+node_modules
diff --git a/node_modules/http-server/node_modules/union/node_modules/qs/.jshintrc b/node_modules/http-server/node_modules/union/node_modules/qs/.jshintrc
new file mode 100644
index 00000000..997b3f7d
--- /dev/null
+++ b/node_modules/http-server/node_modules/union/node_modules/qs/.jshintrc
@@ -0,0 +1,10 @@
+{
+ "node": true,
+
+ "curly": true,
+ "latedef": true,
+ "quotmark": true,
+ "undef": true,
+ "unused": true,
+ "trailing": true
+}
diff --git a/node_modules/http-server/node_modules/union/node_modules/qs/.npmignore b/node_modules/http-server/node_modules/union/node_modules/qs/.npmignore
new file mode 100644
index 00000000..7e1574dc
--- /dev/null
+++ b/node_modules/http-server/node_modules/union/node_modules/qs/.npmignore
@@ -0,0 +1,18 @@
+.idea
+*.iml
+npm-debug.log
+dump.rdb
+node_modules
+results.tap
+results.xml
+npm-shrinkwrap.json
+config.json
+.DS_Store
+*/.DS_Store
+*/*/.DS_Store
+._*
+*/._*
+*/*/._*
+coverage.*
+lib-cov
+complexity.md
diff --git a/node_modules/http-server/node_modules/union/node_modules/qs/.travis.yml b/node_modules/http-server/node_modules/union/node_modules/qs/.travis.yml
new file mode 100644
index 00000000..c891dd0e
--- /dev/null
+++ b/node_modules/http-server/node_modules/union/node_modules/qs/.travis.yml
@@ -0,0 +1,4 @@
+language: node_js
+
+node_js:
+ - 0.10
\ No newline at end of file
diff --git a/node_modules/http-server/node_modules/union/node_modules/qs/CHANGELOG.md b/node_modules/http-server/node_modules/union/node_modules/qs/CHANGELOG.md
new file mode 100644
index 00000000..f5ee8b46
--- /dev/null
+++ b/node_modules/http-server/node_modules/union/node_modules/qs/CHANGELOG.md
@@ -0,0 +1,68 @@
+
+## [**2.3.3**](https://github.com/hapijs/qs/issues?milestone=18&state=open)
+- [**#59**](https://github.com/hapijs/qs/issues/59) make sure array indexes are >= 0, closes #57
+- [**#58**](https://github.com/hapijs/qs/issues/58) make qs usable for browser loader
+
+## [**2.3.2**](https://github.com/hapijs/qs/issues?milestone=17&state=closed)
+- [**#55**](https://github.com/hapijs/qs/issues/55) allow merging a string into an object
+
+## [**2.3.1**](https://github.com/hapijs/qs/issues?milestone=16&state=closed)
+- [**#52**](https://github.com/hapijs/qs/issues/52) Return "undefined" and "false" instead of throwing "TypeError".
+
+## [**2.3.0**](https://github.com/hapijs/qs/issues?milestone=15&state=closed)
+- [**#50**](https://github.com/hapijs/qs/issues/50) add option to omit array indices, closes #46
+
+## [**2.2.5**](https://github.com/hapijs/qs/issues?milestone=14&state=closed)
+- [**#39**](https://github.com/hapijs/qs/issues/39) Is there an alternative to Buffer.isBuffer?
+- [**#49**](https://github.com/hapijs/qs/issues/49) refactor utils.merge, fixes #45
+- [**#41**](https://github.com/hapijs/qs/issues/41) avoid browserifying Buffer, for #39
+
+## [**2.2.4**](https://github.com/hapijs/qs/issues?milestone=13&state=closed)
+- [**#38**](https://github.com/hapijs/qs/issues/38) how to handle object keys beginning with a number
+
+## [**2.2.3**](https://github.com/hapijs/qs/issues?milestone=12&state=closed)
+- [**#37**](https://github.com/hapijs/qs/issues/37) parser discards first empty value in array
+- [**#36**](https://github.com/hapijs/qs/issues/36) Update to lab 4.x
+
+## [**2.2.2**](https://github.com/hapijs/qs/issues?milestone=11&state=closed)
+- [**#33**](https://github.com/hapijs/qs/issues/33) Error when plain object in a value
+- [**#34**](https://github.com/hapijs/qs/issues/34) use Object.prototype.hasOwnProperty.call instead of obj.hasOwnProperty
+- [**#24**](https://github.com/hapijs/qs/issues/24) Changelog? Semver?
+
+## [**2.2.1**](https://github.com/hapijs/qs/issues?milestone=10&state=closed)
+- [**#32**](https://github.com/hapijs/qs/issues/32) account for circular references properly, closes #31
+- [**#31**](https://github.com/hapijs/qs/issues/31) qs.parse stackoverflow on circular objects
+
+## [**2.2.0**](https://github.com/hapijs/qs/issues?milestone=9&state=closed)
+- [**#26**](https://github.com/hapijs/qs/issues/26) Don't use Buffer global if it's not present
+- [**#30**](https://github.com/hapijs/qs/issues/30) Bug when merging non-object values into arrays
+- [**#29**](https://github.com/hapijs/qs/issues/29) Don't call Utils.clone at the top of Utils.merge
+- [**#23**](https://github.com/hapijs/qs/issues/23) Ability to not limit parameters?
+
+## [**2.1.0**](https://github.com/hapijs/qs/issues?milestone=8&state=closed)
+- [**#22**](https://github.com/hapijs/qs/issues/22) Enable using a RegExp as delimiter
+
+## [**2.0.0**](https://github.com/hapijs/qs/issues?milestone=7&state=closed)
+- [**#18**](https://github.com/hapijs/qs/issues/18) Why is there arrayLimit?
+- [**#20**](https://github.com/hapijs/qs/issues/20) Configurable parametersLimit
+- [**#21**](https://github.com/hapijs/qs/issues/21) make all limits optional, for #18, for #20
+
+## [**1.2.2**](https://github.com/hapijs/qs/issues?milestone=6&state=closed)
+- [**#19**](https://github.com/hapijs/qs/issues/19) Don't overwrite null values
+
+## [**1.2.1**](https://github.com/hapijs/qs/issues?milestone=5&state=closed)
+- [**#16**](https://github.com/hapijs/qs/issues/16) ignore non-string delimiters
+- [**#15**](https://github.com/hapijs/qs/issues/15) Close code block
+
+## [**1.2.0**](https://github.com/hapijs/qs/issues?milestone=4&state=closed)
+- [**#12**](https://github.com/hapijs/qs/issues/12) Add optional delim argument
+- [**#13**](https://github.com/hapijs/qs/issues/13) fix #11: flattened keys in array are now correctly parsed
+
+## [**1.1.0**](https://github.com/hapijs/qs/issues?milestone=3&state=closed)
+- [**#7**](https://github.com/hapijs/qs/issues/7) Empty values of a POST array disappear after being submitted
+- [**#9**](https://github.com/hapijs/qs/issues/9) Should not omit equals signs (=) when value is null
+- [**#6**](https://github.com/hapijs/qs/issues/6) Minor grammar fix in README
+
+## [**1.0.2**](https://github.com/hapijs/qs/issues?milestone=2&state=closed)
+- [**#5**](https://github.com/hapijs/qs/issues/5) array holes incorrectly copied into object on large index
+
diff --git a/node_modules/http-server/node_modules/union/node_modules/qs/CONTRIBUTING.md b/node_modules/http-server/node_modules/union/node_modules/qs/CONTRIBUTING.md
new file mode 100644
index 00000000..89283615
--- /dev/null
+++ b/node_modules/http-server/node_modules/union/node_modules/qs/CONTRIBUTING.md
@@ -0,0 +1 @@
+Please view our [hapijs contributing guide](https://github.com/hapijs/hapi/blob/master/CONTRIBUTING.md).
diff --git a/node_modules/http-server/node_modules/union/node_modules/qs/LICENSE b/node_modules/http-server/node_modules/union/node_modules/qs/LICENSE
new file mode 100644
index 00000000..d4569487
--- /dev/null
+++ b/node_modules/http-server/node_modules/union/node_modules/qs/LICENSE
@@ -0,0 +1,28 @@
+Copyright (c) 2014 Nathan LaFreniere and other contributors.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The names of any contributors may not be used to endorse or promote
+ products derived from this software without specific prior written
+ permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ * * *
+
+The complete list of contributors can be found at: https://github.com/hapijs/qs/graphs/contributors
diff --git a/node_modules/http-server/node_modules/union/node_modules/qs/Makefile b/node_modules/http-server/node_modules/union/node_modules/qs/Makefile
new file mode 100644
index 00000000..31cc899d
--- /dev/null
+++ b/node_modules/http-server/node_modules/union/node_modules/qs/Makefile
@@ -0,0 +1,8 @@
+test:
+ @node node_modules/lab/bin/lab -a code -L
+test-cov:
+ @node node_modules/lab/bin/lab -a code -t 100 -L
+test-cov-html:
+ @node node_modules/lab/bin/lab -a code -L -r html -o coverage.html
+
+.PHONY: test test-cov test-cov-html
diff --git a/node_modules/http-server/node_modules/union/node_modules/qs/README.md b/node_modules/http-server/node_modules/union/node_modules/qs/README.md
new file mode 100644
index 00000000..21bf3faf
--- /dev/null
+++ b/node_modules/http-server/node_modules/union/node_modules/qs/README.md
@@ -0,0 +1,222 @@
+# qs
+
+A querystring parsing and stringifying library with some added security.
+
+[](http://travis-ci.org/hapijs/qs)
+
+Lead Maintainer: [Nathan LaFreniere](https://github.com/nlf)
+
+The **qs** module was originally created and maintained by [TJ Holowaychuk](https://github.com/visionmedia/node-querystring).
+
+## Usage
+
+```javascript
+var Qs = require('qs');
+
+var obj = Qs.parse('a=c'); // { a: 'c' }
+var str = Qs.stringify(obj); // 'a=c'
+```
+
+### Parsing Objects
+
+```javascript
+Qs.parse(string, [options]);
+```
+
+**qs** allows you to create nested objects within your query strings, by surrounding the name of sub-keys with square brackets `[]`.
+For example, the string `'foo[bar]=baz'` converts to:
+
+```javascript
+{
+ foo: {
+ bar: 'baz'
+ }
+}
+```
+
+URI encoded strings work too:
+
+```javascript
+Qs.parse('a%5Bb%5D=c');
+// { a: { b: 'c' } }
+```
+
+You can also nest your objects, like `'foo[bar][baz]=foobarbaz'`:
+
+```javascript
+{
+ foo: {
+ bar: {
+ baz: 'foobarbaz'
+ }
+ }
+}
+```
+
+By default, when nesting objects **qs** will only parse up to 5 children deep. This means if you attempt to parse a string like
+`'a[b][c][d][e][f][g][h][i]=j'` your resulting object will be:
+
+```javascript
+{
+ a: {
+ b: {
+ c: {
+ d: {
+ e: {
+ f: {
+ '[g][h][i]': 'j'
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+This depth can be overridden by passing a `depth` option to `Qs.parse(string, [options])`:
+
+```javascript
+Qs.parse('a[b][c][d][e][f][g][h][i]=j', { depth: 1 });
+// { a: { b: { '[c][d][e][f][g][h][i]': 'j' } } }
+```
+
+The depth limit helps mitigate abuse when **qs** is used to parse user input, and it is recommended to keep it a reasonably small number.
+
+For similar reasons, by default **qs** will only parse up to 1000 parameters. This can be overridden by passing a `parameterLimit` option:
+
+```javascript
+Qs.parse('a=b&c=d', { parameterLimit: 1 });
+// { a: 'b' }
+```
+
+An optional delimiter can also be passed:
+
+```javascript
+Qs.parse('a=b;c=d', { delimiter: ';' });
+// { a: 'b', c: 'd' }
+```
+
+Delimiters can be a regular expression too:
+
+```javascript
+Qs.parse('a=b;c=d,e=f', { delimiter: /[;,]/ });
+// { a: 'b', c: 'd', e: 'f' }
+```
+
+### Parsing Arrays
+
+**qs** can also parse arrays using a similar `[]` notation:
+
+```javascript
+Qs.parse('a[]=b&a[]=c');
+// { a: ['b', 'c'] }
+```
+
+You may specify an index as well:
+
+```javascript
+Qs.parse('a[1]=c&a[0]=b');
+// { a: ['b', 'c'] }
+```
+
+Note that the only difference between an index in an array and a key in an object is that the value between the brackets must be a number
+to create an array. When creating arrays with specific indices, **qs** will compact a sparse array to only the existing values preserving
+their order:
+
+```javascript
+Qs.parse('a[1]=b&a[15]=c');
+// { a: ['b', 'c'] }
+```
+
+Note that an empty string is also a value, and will be preserved:
+
+```javascript
+Qs.parse('a[]=&a[]=b');
+// { a: ['', 'b'] }
+Qs.parse('a[0]=b&a[1]=&a[2]=c');
+// { a: ['b', '', 'c'] }
+```
+
+**qs** will also limit specifying indices in an array to a maximum index of `20`. Any array members with an index of greater than `20` will
+instead be converted to an object with the index as the key:
+
+```javascript
+Qs.parse('a[100]=b');
+// { a: { '100': 'b' } }
+```
+
+This limit can be overridden by passing an `arrayLimit` option:
+
+```javascript
+Qs.parse('a[1]=b', { arrayLimit: 0 });
+// { a: { '1': 'b' } }
+```
+
+To disable array parsing entirely, set `arrayLimit` to `-1`.
+
+If you mix notations, **qs** will merge the two items into an object:
+
+```javascript
+Qs.parse('a[0]=b&a[b]=c');
+// { a: { '0': 'b', b: 'c' } }
+```
+
+You can also create arrays of objects:
+
+```javascript
+Qs.parse('a[][b]=c');
+// { a: [{ b: 'c' }] }
+```
+
+### Stringifying
+
+```javascript
+Qs.stringify(object, [options]);
+```
+
+When stringifying, **qs** always URI encodes output. Objects are stringified as you would expect:
+
+```javascript
+Qs.stringify({ a: 'b' });
+// 'a=b'
+Qs.stringify({ a: { b: 'c' } });
+// 'a%5Bb%5D=c'
+```
+
+Examples beyond this point will be shown as though the output is not URI encoded for clarity. Please note that the return values in these cases *will* be URI encoded during real usage.
+
+When arrays are stringified, by default they are given explicit indices:
+
+```javascript
+Qs.stringify({ a: ['b', 'c', 'd'] });
+// 'a[0]=b&a[1]=c&a[2]=d'
+```
+
+You may override this by setting the `indices` option to `false`:
+
+```javascript
+Qs.stringify({ a: ['b', 'c', 'd'] }, { indices: false });
+// 'a=b&a=c&a=d'
+```
+
+Empty strings and null values will omit the value, but the equals sign (=) remains in place:
+
+```javascript
+Qs.stringify({ a: '' });
+// 'a='
+```
+
+Properties that are set to `undefined` will be omitted entirely:
+
+```javascript
+Qs.stringify({ a: null, b: undefined });
+// 'a='
+```
+
+The delimiter may be overridden with stringify as well:
+
+```javascript
+Qs.stringify({ a: 'b', c: 'd' }, { delimiter: ';' });
+// 'a=b;c=d'
+```
diff --git a/node_modules/http-server/node_modules/union/node_modules/qs/index.js b/node_modules/http-server/node_modules/union/node_modules/qs/index.js
new file mode 100644
index 00000000..2291cd85
--- /dev/null
+++ b/node_modules/http-server/node_modules/union/node_modules/qs/index.js
@@ -0,0 +1 @@
+module.exports = require('./lib/');
diff --git a/node_modules/http-server/node_modules/union/node_modules/qs/lib/index.js b/node_modules/http-server/node_modules/union/node_modules/qs/lib/index.js
new file mode 100644
index 00000000..0e094933
--- /dev/null
+++ b/node_modules/http-server/node_modules/union/node_modules/qs/lib/index.js
@@ -0,0 +1,15 @@
+// Load modules
+
+var Stringify = require('./stringify');
+var Parse = require('./parse');
+
+
+// Declare internals
+
+var internals = {};
+
+
+module.exports = {
+ stringify: Stringify,
+ parse: Parse
+};
diff --git a/node_modules/http-server/node_modules/union/node_modules/qs/lib/parse.js b/node_modules/http-server/node_modules/union/node_modules/qs/lib/parse.js
new file mode 100644
index 00000000..4e7d02a1
--- /dev/null
+++ b/node_modules/http-server/node_modules/union/node_modules/qs/lib/parse.js
@@ -0,0 +1,157 @@
+// Load modules
+
+var Utils = require('./utils');
+
+
+// Declare internals
+
+var internals = {
+ delimiter: '&',
+ depth: 5,
+ arrayLimit: 20,
+ parameterLimit: 1000
+};
+
+
+internals.parseValues = function (str, options) {
+
+ var obj = {};
+ var parts = str.split(options.delimiter, options.parameterLimit === Infinity ? undefined : options.parameterLimit);
+
+ for (var i = 0, il = parts.length; i < il; ++i) {
+ var part = parts[i];
+ var pos = part.indexOf(']=') === -1 ? part.indexOf('=') : part.indexOf(']=') + 1;
+
+ if (pos === -1) {
+ obj[Utils.decode(part)] = '';
+ }
+ else {
+ var key = Utils.decode(part.slice(0, pos));
+ var val = Utils.decode(part.slice(pos + 1));
+
+ if (!obj.hasOwnProperty(key)) {
+ obj[key] = val;
+ }
+ else {
+ obj[key] = [].concat(obj[key]).concat(val);
+ }
+ }
+ }
+
+ return obj;
+};
+
+
+internals.parseObject = function (chain, val, options) {
+
+ if (!chain.length) {
+ return val;
+ }
+
+ var root = chain.shift();
+
+ var obj = {};
+ if (root === '[]') {
+ obj = [];
+ obj = obj.concat(internals.parseObject(chain, val, options));
+ }
+ else {
+ var cleanRoot = root[0] === '[' && root[root.length - 1] === ']' ? root.slice(1, root.length - 1) : root;
+ var index = parseInt(cleanRoot, 10);
+ var indexString = '' + index;
+ if (!isNaN(index) &&
+ root !== cleanRoot &&
+ indexString === cleanRoot &&
+ index >= 0 &&
+ index <= options.arrayLimit) {
+
+ obj = [];
+ obj[index] = internals.parseObject(chain, val, options);
+ }
+ else {
+ obj[cleanRoot] = internals.parseObject(chain, val, options);
+ }
+ }
+
+ return obj;
+};
+
+
+internals.parseKeys = function (key, val, options) {
+
+ if (!key) {
+ return;
+ }
+
+ // The regex chunks
+
+ var parent = /^([^\[\]]*)/;
+ var child = /(\[[^\[\]]*\])/g;
+
+ // Get the parent
+
+ var segment = parent.exec(key);
+
+ // Don't allow them to overwrite object prototype properties
+
+ if (Object.prototype.hasOwnProperty(segment[1])) {
+ return;
+ }
+
+ // Stash the parent if it exists
+
+ var keys = [];
+ if (segment[1]) {
+ keys.push(segment[1]);
+ }
+
+ // Loop through children appending to the array until we hit depth
+
+ var i = 0;
+ while ((segment = child.exec(key)) !== null && i < options.depth) {
+
+ ++i;
+ if (!Object.prototype.hasOwnProperty(segment[1].replace(/\[|\]/g, ''))) {
+ keys.push(segment[1]);
+ }
+ }
+
+ // If there's a remainder, just add whatever is left
+
+ if (segment) {
+ keys.push('[' + key.slice(segment.index) + ']');
+ }
+
+ return internals.parseObject(keys, val, options);
+};
+
+
+module.exports = function (str, options) {
+
+ if (str === '' ||
+ str === null ||
+ typeof str === 'undefined') {
+
+ return {};
+ }
+
+ options = options || {};
+ options.delimiter = typeof options.delimiter === 'string' || Utils.isRegExp(options.delimiter) ? options.delimiter : internals.delimiter;
+ options.depth = typeof options.depth === 'number' ? options.depth : internals.depth;
+ options.arrayLimit = typeof options.arrayLimit === 'number' ? options.arrayLimit : internals.arrayLimit;
+ options.parameterLimit = typeof options.parameterLimit === 'number' ? options.parameterLimit : internals.parameterLimit;
+
+ var tempObj = typeof str === 'string' ? internals.parseValues(str, options) : str;
+ var obj = {};
+
+ // Iterate over the keys and setup the new object
+
+ var keys = Object.keys(tempObj);
+ for (var i = 0, il = keys.length; i < il; ++i) {
+ var key = keys[i];
+ var newObj = internals.parseKeys(key, tempObj[key], options);
+ obj = Utils.merge(obj, newObj);
+ }
+
+ return Utils.compact(obj);
+};
diff --git a/node_modules/http-server/node_modules/union/node_modules/qs/lib/stringify.js b/node_modules/http-server/node_modules/union/node_modules/qs/lib/stringify.js
new file mode 100644
index 00000000..b4411047
--- /dev/null
+++ b/node_modules/http-server/node_modules/union/node_modules/qs/lib/stringify.js
@@ -0,0 +1,77 @@
+// Load modules
+
+var Utils = require('./utils');
+
+
+// Declare internals
+
+var internals = {
+ delimiter: '&',
+ indices: true
+};
+
+
+internals.stringify = function (obj, prefix, options) {
+
+ if (Utils.isBuffer(obj)) {
+ obj = obj.toString();
+ }
+ else if (obj instanceof Date) {
+ obj = obj.toISOString();
+ }
+ else if (obj === null) {
+ obj = '';
+ }
+
+ if (typeof obj === 'string' ||
+ typeof obj === 'number' ||
+ typeof obj === 'boolean') {
+
+ return [encodeURIComponent(prefix) + '=' + encodeURIComponent(obj)];
+ }
+
+ var values = [];
+
+ if (typeof obj === 'undefined') {
+ return values;
+ }
+
+ var objKeys = Object.keys(obj);
+ for (var i = 0, il = objKeys.length; i < il; ++i) {
+ var key = objKeys[i];
+ if (!options.indices &&
+ Array.isArray(obj)) {
+
+ values = values.concat(internals.stringify(obj[key], prefix, options));
+ }
+ else {
+ values = values.concat(internals.stringify(obj[key], prefix + '[' + key + ']', options));
+ }
+ }
+
+ return values;
+};
+
+
+module.exports = function (obj, options) {
+
+ options = options || {};
+ var delimiter = typeof options.delimiter === 'undefined' ? internals.delimiter : options.delimiter;
+ options.indices = typeof options.indices === 'boolean' ? options.indices : internals.indices;
+
+ var keys = [];
+
+ if (typeof obj !== 'object' ||
+ obj === null) {
+
+ return '';
+ }
+
+ var objKeys = Object.keys(obj);
+ for (var i = 0, il = objKeys.length; i < il; ++i) {
+ var key = objKeys[i];
+ keys = keys.concat(internals.stringify(obj[key], key, options));
+ }
+
+ return keys.join(delimiter);
+};
diff --git a/node_modules/http-server/node_modules/union/node_modules/qs/lib/utils.js b/node_modules/http-server/node_modules/union/node_modules/qs/lib/utils.js
new file mode 100644
index 00000000..5240bd5b
--- /dev/null
+++ b/node_modules/http-server/node_modules/union/node_modules/qs/lib/utils.js
@@ -0,0 +1,132 @@
+// Load modules
+
+
+// Declare internals
+
+var internals = {};
+
+
+exports.arrayToObject = function (source) {
+
+ var obj = {};
+ for (var i = 0, il = source.length; i < il; ++i) {
+ if (typeof source[i] !== 'undefined') {
+
+ obj[i] = source[i];
+ }
+ }
+
+ return obj;
+};
+
+
+exports.merge = function (target, source) {
+
+ if (!source) {
+ return target;
+ }
+
+ if (typeof source !== 'object') {
+ if (Array.isArray(target)) {
+ target.push(source);
+ }
+ else {
+ target[source] = true;
+ }
+
+ return target;
+ }
+
+ if (typeof target !== 'object') {
+ target = [target].concat(source);
+ return target;
+ }
+
+ if (Array.isArray(target) &&
+ !Array.isArray(source)) {
+
+ target = exports.arrayToObject(target);
+ }
+
+ var keys = Object.keys(source);
+ for (var k = 0, kl = keys.length; k < kl; ++k) {
+ var key = keys[k];
+ var value = source[key];
+
+ if (!target[key]) {
+ target[key] = value;
+ }
+ else {
+ target[key] = exports.merge(target[key], value);
+ }
+ }
+
+ return target;
+};
+
+
+exports.decode = function (str) {
+
+ try {
+ return decodeURIComponent(str.replace(/\+/g, ' '));
+ } catch (e) {
+ return str;
+ }
+};
+
+
+exports.compact = function (obj, refs) {
+
+ if (typeof obj !== 'object' ||
+ obj === null) {
+
+ return obj;
+ }
+
+ refs = refs || [];
+ var lookup = refs.indexOf(obj);
+ if (lookup !== -1) {
+ return refs[lookup];
+ }
+
+ refs.push(obj);
+
+ if (Array.isArray(obj)) {
+ var compacted = [];
+
+ for (var i = 0, il = obj.length; i < il; ++i) {
+ if (typeof obj[i] !== 'undefined') {
+ compacted.push(obj[i]);
+ }
+ }
+
+ return compacted;
+ }
+
+ var keys = Object.keys(obj);
+ for (i = 0, il = keys.length; i < il; ++i) {
+ var key = keys[i];
+ obj[key] = exports.compact(obj[key], refs);
+ }
+
+ return obj;
+};
+
+
+exports.isRegExp = function (obj) {
+ return Object.prototype.toString.call(obj) === '[object RegExp]';
+};
+
+
+exports.isBuffer = function (obj) {
+
+ if (obj === null ||
+ typeof obj === 'undefined') {
+
+ return false;
+ }
+
+ return !!(obj.constructor &&
+ obj.constructor.isBuffer &&
+ obj.constructor.isBuffer(obj));
+};
diff --git a/node_modules/http-server/node_modules/union/node_modules/qs/package.json b/node_modules/http-server/node_modules/union/node_modules/qs/package.json
new file mode 100644
index 00000000..bc0dcf1e
--- /dev/null
+++ b/node_modules/http-server/node_modules/union/node_modules/qs/package.json
@@ -0,0 +1,59 @@
+{
+ "name": "qs",
+ "version": "2.3.3",
+ "description": "A querystring parser that supports nesting and arrays, with a depth limit",
+ "homepage": "https://github.com/hapijs/qs",
+ "main": "index.js",
+ "dependencies": {},
+ "devDependencies": {
+ "code": "1.x.x",
+ "lab": "5.x.x"
+ },
+ "scripts": {
+ "test": "make test-cov"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/hapijs/qs.git"
+ },
+ "keywords": [
+ "querystring",
+ "qs"
+ ],
+ "licenses": [
+ {
+ "type": "BSD",
+ "url": "http://github.com/hapijs/qs/raw/master/LICENSE"
+ }
+ ],
+ "gitHead": "9250c4cda5102fcf72441445816e6d311fc6813d",
+ "bugs": {
+ "url": "https://github.com/hapijs/qs/issues"
+ },
+ "_id": "qs@2.3.3",
+ "_shasum": "e9e85adbe75da0bbe4c8e0476a086290f863b404",
+ "_from": "qs@>=2.3.3 <2.4.0",
+ "_npmVersion": "2.1.6",
+ "_nodeVersion": "0.10.32",
+ "_npmUser": {
+ "name": "nlf",
+ "email": "quitlahok@gmail.com"
+ },
+ "maintainers": [
+ {
+ "name": "nlf",
+ "email": "quitlahok@gmail.com"
+ },
+ {
+ "name": "hueniverse",
+ "email": "eran@hueniverse.com"
+ }
+ ],
+ "dist": {
+ "shasum": "e9e85adbe75da0bbe4c8e0476a086290f863b404",
+ "tarball": "https://registry.npmjs.org/qs/-/qs-2.3.3.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/qs/-/qs-2.3.3.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/node_modules/http-server/node_modules/union/node_modules/qs/test/parse.js b/node_modules/http-server/node_modules/union/node_modules/qs/test/parse.js
new file mode 100644
index 00000000..6c20cc1b
--- /dev/null
+++ b/node_modules/http-server/node_modules/union/node_modules/qs/test/parse.js
@@ -0,0 +1,413 @@
+/* eslint no-extend-native:0 */
+// Load modules
+
+var Code = require('code');
+var Lab = require('lab');
+var Qs = require('../');
+
+
+// Declare internals
+
+var internals = {};
+
+
+// Test shortcuts
+
+var lab = exports.lab = Lab.script();
+var expect = Code.expect;
+var describe = lab.experiment;
+var it = lab.test;
+
+
+describe('parse()', function () {
+
+ it('parses a simple string', function (done) {
+
+ expect(Qs.parse('0=foo')).to.deep.equal({ '0': 'foo' });
+ expect(Qs.parse('foo=c++')).to.deep.equal({ foo: 'c ' });
+ expect(Qs.parse('a[>=]=23')).to.deep.equal({ a: { '>=': '23' } });
+ expect(Qs.parse('a[<=>]==23')).to.deep.equal({ a: { '<=>': '=23' } });
+ expect(Qs.parse('a[==]=23')).to.deep.equal({ a: { '==': '23' } });
+ expect(Qs.parse('foo')).to.deep.equal({ foo: '' });
+ expect(Qs.parse('foo=bar')).to.deep.equal({ foo: 'bar' });
+ expect(Qs.parse(' foo = bar = baz ')).to.deep.equal({ ' foo ': ' bar = baz ' });
+ expect(Qs.parse('foo=bar=baz')).to.deep.equal({ foo: 'bar=baz' });
+ expect(Qs.parse('foo=bar&bar=baz')).to.deep.equal({ foo: 'bar', bar: 'baz' });
+ expect(Qs.parse('foo=bar&baz')).to.deep.equal({ foo: 'bar', baz: '' });
+ expect(Qs.parse('cht=p3&chd=t:60,40&chs=250x100&chl=Hello|World')).to.deep.equal({
+ cht: 'p3',
+ chd: 't:60,40',
+ chs: '250x100',
+ chl: 'Hello|World'
+ });
+ done();
+ });
+
+ it('parses a single nested string', function (done) {
+
+ expect(Qs.parse('a[b]=c')).to.deep.equal({ a: { b: 'c' } });
+ done();
+ });
+
+ it('parses a double nested string', function (done) {
+
+ expect(Qs.parse('a[b][c]=d')).to.deep.equal({ a: { b: { c: 'd' } } });
+ done();
+ });
+
+ it('defaults to a depth of 5', function (done) {
+
+ expect(Qs.parse('a[b][c][d][e][f][g][h]=i')).to.deep.equal({ a: { b: { c: { d: { e: { f: { '[g][h]': 'i' } } } } } } });
+ done();
+ });
+
+ it('only parses one level when depth = 1', function (done) {
+
+ expect(Qs.parse('a[b][c]=d', { depth: 1 })).to.deep.equal({ a: { b: { '[c]': 'd' } } });
+ expect(Qs.parse('a[b][c][d]=e', { depth: 1 })).to.deep.equal({ a: { b: { '[c][d]': 'e' } } });
+ done();
+ });
+
+ it('parses a simple array', function (done) {
+
+ expect(Qs.parse('a=b&a=c')).to.deep.equal({ a: ['b', 'c'] });
+ done();
+ });
+
+ it('parses an explicit array', function (done) {
+
+ expect(Qs.parse('a[]=b')).to.deep.equal({ a: ['b'] });
+ expect(Qs.parse('a[]=b&a[]=c')).to.deep.equal({ a: ['b', 'c'] });
+ expect(Qs.parse('a[]=b&a[]=c&a[]=d')).to.deep.equal({ a: ['b', 'c', 'd'] });
+ done();
+ });
+
+ it('parses a mix of simple and explicit arrays', function (done) {
+
+ expect(Qs.parse('a=b&a[]=c')).to.deep.equal({ a: ['b', 'c'] });
+ expect(Qs.parse('a[]=b&a=c')).to.deep.equal({ a: ['b', 'c'] });
+ expect(Qs.parse('a[0]=b&a=c')).to.deep.equal({ a: ['b', 'c'] });
+ expect(Qs.parse('a=b&a[0]=c')).to.deep.equal({ a: ['b', 'c'] });
+ expect(Qs.parse('a[1]=b&a=c')).to.deep.equal({ a: ['b', 'c'] });
+ expect(Qs.parse('a=b&a[1]=c')).to.deep.equal({ a: ['b', 'c'] });
+ done();
+ });
+
+ it('parses a nested array', function (done) {
+
+ expect(Qs.parse('a[b][]=c&a[b][]=d')).to.deep.equal({ a: { b: ['c', 'd'] } });
+ expect(Qs.parse('a[>=]=25')).to.deep.equal({ a: { '>=': '25' } });
+ done();
+ });
+
+ it('allows to specify array indices', function (done) {
+
+ expect(Qs.parse('a[1]=c&a[0]=b&a[2]=d')).to.deep.equal({ a: ['b', 'c', 'd'] });
+ expect(Qs.parse('a[1]=c&a[0]=b')).to.deep.equal({ a: ['b', 'c'] });
+ expect(Qs.parse('a[1]=c')).to.deep.equal({ a: ['c'] });
+ done();
+ });
+
+ it('limits specific array indices to 20', function (done) {
+
+ expect(Qs.parse('a[20]=a')).to.deep.equal({ a: ['a'] });
+ expect(Qs.parse('a[21]=a')).to.deep.equal({ a: { '21': 'a' } });
+ done();
+ });
+
+ it('supports keys that begin with a number', function (done) {
+
+ expect(Qs.parse('a[12b]=c')).to.deep.equal({ a: { '12b': 'c' } });
+ done();
+ });
+
+ it('supports encoded = signs', function (done) {
+
+ expect(Qs.parse('he%3Dllo=th%3Dere')).to.deep.equal({ 'he=llo': 'th=ere' });
+ done();
+ });
+
+ it('is ok with url encoded strings', function (done) {
+
+ expect(Qs.parse('a[b%20c]=d')).to.deep.equal({ a: { 'b c': 'd' } });
+ expect(Qs.parse('a[b]=c%20d')).to.deep.equal({ a: { b: 'c d' } });
+ done();
+ });
+
+ it('allows brackets in the value', function (done) {
+
+ expect(Qs.parse('pets=["tobi"]')).to.deep.equal({ pets: '["tobi"]' });
+ expect(Qs.parse('operators=[">=", "<="]')).to.deep.equal({ operators: '[">=", "<="]' });
+ done();
+ });
+
+ it('allows empty values', function (done) {
+
+ expect(Qs.parse('')).to.deep.equal({});
+ expect(Qs.parse(null)).to.deep.equal({});
+ expect(Qs.parse(undefined)).to.deep.equal({});
+ done();
+ });
+
+ it('transforms arrays to objects', function (done) {
+
+ expect(Qs.parse('foo[0]=bar&foo[bad]=baz')).to.deep.equal({ foo: { '0': 'bar', bad: 'baz' } });
+ expect(Qs.parse('foo[bad]=baz&foo[0]=bar')).to.deep.equal({ foo: { bad: 'baz', '0': 'bar' } });
+ expect(Qs.parse('foo[bad]=baz&foo[]=bar')).to.deep.equal({ foo: { bad: 'baz', '0': 'bar' } });
+ expect(Qs.parse('foo[]=bar&foo[bad]=baz')).to.deep.equal({ foo: { '0': 'bar', bad: 'baz' } });
+ expect(Qs.parse('foo[bad]=baz&foo[]=bar&foo[]=foo')).to.deep.equal({ foo: { bad: 'baz', '0': 'bar', '1': 'foo' } });
+ expect(Qs.parse('foo[0][a]=a&foo[0][b]=b&foo[1][a]=aa&foo[1][b]=bb')).to.deep.equal({foo: [ {a: 'a', b: 'b'}, {a: 'aa', b: 'bb'} ]});
+ done();
+ });
+
+ it('can add keys to objects', function (done) {
+
+ expect(Qs.parse('a[b]=c&a=d')).to.deep.equal({ a: { b: 'c', d: true } });
+ done();
+ });
+
+ it('correctly prunes undefined values when converting an array to an object', function (done) {
+
+ expect(Qs.parse('a[2]=b&a[99999999]=c')).to.deep.equal({ a: { '2': 'b', '99999999': 'c' } });
+ done();
+ });
+
+ it('supports malformed uri characters', function (done) {
+
+ expect(Qs.parse('{%:%}')).to.deep.equal({ '{%:%}': '' });
+ expect(Qs.parse('foo=%:%}')).to.deep.equal({ foo: '%:%}' });
+ done();
+ });
+
+ it('doesn\'t produce empty keys', function (done) {
+
+ expect(Qs.parse('_r=1&')).to.deep.equal({ '_r': '1' });
+ done();
+ });
+
+ it('cannot override prototypes', function (done) {
+
+ var obj = Qs.parse('toString=bad&bad[toString]=bad&constructor=bad');
+ expect(typeof obj.toString).to.equal('function');
+ expect(typeof obj.bad.toString).to.equal('function');
+ expect(typeof obj.constructor).to.equal('function');
+ done();
+ });
+
+ it('cannot access Object prototype', function (done) {
+
+ Qs.parse('constructor[prototype][bad]=bad');
+ Qs.parse('bad[constructor][prototype][bad]=bad');
+ expect(typeof Object.prototype.bad).to.equal('undefined');
+ done();
+ });
+
+ it('parses arrays of objects', function (done) {
+
+ expect(Qs.parse('a[][b]=c')).to.deep.equal({ a: [{ b: 'c' }] });
+ expect(Qs.parse('a[0][b]=c')).to.deep.equal({ a: [{ b: 'c' }] });
+ done();
+ });
+
+ it('allows for empty strings in arrays', function (done) {
+
+ expect(Qs.parse('a[]=b&a[]=&a[]=c')).to.deep.equal({ a: ['b', '', 'c'] });
+ expect(Qs.parse('a[0]=b&a[1]=&a[2]=c&a[19]=')).to.deep.equal({ a: ['b', '', 'c', ''] });
+ expect(Qs.parse('a[]=&a[]=b&a[]=c')).to.deep.equal({ a: ['', 'b', 'c'] });
+ done();
+ });
+
+ it('compacts sparse arrays', function (done) {
+
+ expect(Qs.parse('a[10]=1&a[2]=2')).to.deep.equal({ a: ['2', '1'] });
+ done();
+ });
+
+ it('parses semi-parsed strings', function (done) {
+
+ expect(Qs.parse({ 'a[b]': 'c' })).to.deep.equal({ a: { b: 'c' } });
+ expect(Qs.parse({ 'a[b]': 'c', 'a[d]': 'e' })).to.deep.equal({ a: { b: 'c', d: 'e' } });
+ done();
+ });
+
+ it('parses buffers correctly', function (done) {
+
+ var b = new Buffer('test');
+ expect(Qs.parse({ a: b })).to.deep.equal({ a: b });
+ done();
+ });
+
+ it('continues parsing when no parent is found', function (done) {
+
+ expect(Qs.parse('[]&a=b')).to.deep.equal({ '0': '', a: 'b' });
+ expect(Qs.parse('[foo]=bar')).to.deep.equal({ foo: 'bar' });
+ done();
+ });
+
+ it('does not error when parsing a very long array', function (done) {
+
+ var str = 'a[]=a';
+ while (Buffer.byteLength(str) < 128 * 1024) {
+ str += '&' + str;
+ }
+
+ expect(function () {
+
+ Qs.parse(str);
+ }).to.not.throw();
+
+ done();
+ });
+
+ it('should not throw when a native prototype has an enumerable property', { parallel: false }, function (done) {
+
+ Object.prototype.crash = '';
+ Array.prototype.crash = '';
+ expect(Qs.parse.bind(null, 'a=b')).to.not.throw();
+ expect(Qs.parse('a=b')).to.deep.equal({ a: 'b' });
+ expect(Qs.parse.bind(null, 'a[][b]=c')).to.not.throw();
+ expect(Qs.parse('a[][b]=c')).to.deep.equal({ a: [{ b: 'c' }] });
+ delete Object.prototype.crash;
+ delete Array.prototype.crash;
+ done();
+ });
+
+ it('parses a string with an alternative string delimiter', function (done) {
+
+ expect(Qs.parse('a=b;c=d', { delimiter: ';' })).to.deep.equal({ a: 'b', c: 'd' });
+ done();
+ });
+
+ it('parses a string with an alternative RegExp delimiter', function (done) {
+
+ expect(Qs.parse('a=b; c=d', { delimiter: /[;,] */ })).to.deep.equal({ a: 'b', c: 'd' });
+ done();
+ });
+
+ it('does not use non-splittable objects as delimiters', function (done) {
+
+ expect(Qs.parse('a=b&c=d', { delimiter: true })).to.deep.equal({ a: 'b', c: 'd' });
+ done();
+ });
+
+ it('allows overriding parameter limit', function (done) {
+
+ expect(Qs.parse('a=b&c=d', { parameterLimit: 1 })).to.deep.equal({ a: 'b' });
+ done();
+ });
+
+ it('allows setting the parameter limit to Infinity', function (done) {
+
+ expect(Qs.parse('a=b&c=d', { parameterLimit: Infinity })).to.deep.equal({ a: 'b', c: 'd' });
+ done();
+ });
+
+ it('allows overriding array limit', function (done) {
+
+ expect(Qs.parse('a[0]=b', { arrayLimit: -1 })).to.deep.equal({ a: { '0': 'b' } });
+ expect(Qs.parse('a[-1]=b', { arrayLimit: -1 })).to.deep.equal({ a: { '-1': 'b' } });
+ expect(Qs.parse('a[0]=b&a[1]=c', { arrayLimit: 0 })).to.deep.equal({ a: { '0': 'b', '1': 'c' } });
+ done();
+ });
+
+ it('parses an object', function (done) {
+
+ var input = {
+ 'user[name]': {'pop[bob]': 3},
+ 'user[email]': null
+ };
+
+ var expected = {
+ 'user': {
+ 'name': {'pop[bob]': 3},
+ 'email': null
+ }
+ };
+
+ var result = Qs.parse(input);
+
+ expect(result).to.deep.equal(expected);
+ done();
+ });
+
+ it('parses an object and not child values', function (done) {
+
+ var input = {
+ 'user[name]': {'pop[bob]': { 'test': 3 }},
+ 'user[email]': null
+ };
+
+ var expected = {
+ 'user': {
+ 'name': {'pop[bob]': { 'test': 3 }},
+ 'email': null
+ }
+ };
+
+ var result = Qs.parse(input);
+
+ expect(result).to.deep.equal(expected);
+ done();
+ });
+
+ it('does not blow up when Buffer global is missing', function (done) {
+
+ var tempBuffer = global.Buffer;
+ delete global.Buffer;
+ var result = Qs.parse('a=b&c=d');
+ global.Buffer = tempBuffer;
+ expect(result).to.deep.equal({ a: 'b', c: 'd' });
+ done();
+ });
+
+ it('does not crash when using invalid dot notation', function (done) {
+
+ expect(Qs.parse('roomInfoList[0].childrenAges[0]=15&roomInfoList[0].numberOfAdults=2')).to.deep.equal({ roomInfoList: [['15', '2']] });
+ done();
+ });
+
+ it('does not crash when parsing circular references', function (done) {
+
+ var a = {};
+ a.b = a;
+
+ var parsed;
+
+ expect(function () {
+
+ parsed = Qs.parse({ 'foo[bar]': 'baz', 'foo[baz]': a });
+ }).to.not.throw();
+
+ expect(parsed).to.contain('foo');
+ expect(parsed.foo).to.contain('bar', 'baz');
+ expect(parsed.foo.bar).to.equal('baz');
+ expect(parsed.foo.baz).to.deep.equal(a);
+ done();
+ });
+
+ it('parses plain objects correctly', function (done) {
+
+ var a = Object.create(null);
+ a.b = 'c';
+
+ expect(Qs.parse(a)).to.deep.equal({ b: 'c' });
+ var result = Qs.parse({ a: a });
+ expect(result).to.contain('a');
+ expect(result.a).to.deep.equal(a);
+ done();
+ });
+
+ it('parses dates correctly', function (done) {
+
+ var now = new Date();
+ expect(Qs.parse({ a: now })).to.deep.equal({ a: now });
+ done();
+ });
+
+ it('parses regular expressions correctly', function (done) {
+
+ var re = /^test$/;
+ expect(Qs.parse({ a: re })).to.deep.equal({ a: re });
+ done();
+ });
+});
diff --git a/node_modules/http-server/node_modules/union/node_modules/qs/test/stringify.js b/node_modules/http-server/node_modules/union/node_modules/qs/test/stringify.js
new file mode 100644
index 00000000..75e397a7
--- /dev/null
+++ b/node_modules/http-server/node_modules/union/node_modules/qs/test/stringify.js
@@ -0,0 +1,179 @@
+/* eslint no-extend-native:0 */
+// Load modules
+
+var Code = require('code');
+var Lab = require('lab');
+var Qs = require('../');
+
+
+// Declare internals
+
+var internals = {};
+
+
+// Test shortcuts
+
+var lab = exports.lab = Lab.script();
+var expect = Code.expect;
+var describe = lab.experiment;
+var it = lab.test;
+
+
+describe('stringify()', function () {
+
+ it('stringifies a querystring object', function (done) {
+
+ expect(Qs.stringify({ a: 'b' })).to.equal('a=b');
+ expect(Qs.stringify({ a: 1 })).to.equal('a=1');
+ expect(Qs.stringify({ a: 1, b: 2 })).to.equal('a=1&b=2');
+ done();
+ });
+
+ it('stringifies a nested object', function (done) {
+
+ expect(Qs.stringify({ a: { b: 'c' } })).to.equal('a%5Bb%5D=c');
+ expect(Qs.stringify({ a: { b: { c: { d: 'e' } } } })).to.equal('a%5Bb%5D%5Bc%5D%5Bd%5D=e');
+ done();
+ });
+
+ it('stringifies an array value', function (done) {
+
+ expect(Qs.stringify({ a: ['b', 'c', 'd'] })).to.equal('a%5B0%5D=b&a%5B1%5D=c&a%5B2%5D=d');
+ done();
+ });
+
+ it('omits array indices when asked', function (done) {
+
+ expect(Qs.stringify({ a: ['b', 'c', 'd'] }, { indices: false })).to.equal('a=b&a=c&a=d');
+ done();
+ });
+
+ it('stringifies a nested array value', function (done) {
+
+ expect(Qs.stringify({ a: { b: ['c', 'd'] } })).to.equal('a%5Bb%5D%5B0%5D=c&a%5Bb%5D%5B1%5D=d');
+ done();
+ });
+
+ it('stringifies an object inside an array', function (done) {
+
+ expect(Qs.stringify({ a: [{ b: 'c' }] })).to.equal('a%5B0%5D%5Bb%5D=c');
+ expect(Qs.stringify({ a: [{ b: { c: [1] } }] })).to.equal('a%5B0%5D%5Bb%5D%5Bc%5D%5B0%5D=1');
+ done();
+ });
+
+ it('does not omit object keys when indices = false', function (done) {
+
+ expect(Qs.stringify({ a: [{ b: 'c' }] }, { indices: false })).to.equal('a%5Bb%5D=c');
+ done();
+ });
+
+ it('stringifies a complicated object', function (done) {
+
+ expect(Qs.stringify({ a: { b: 'c', d: 'e' } })).to.equal('a%5Bb%5D=c&a%5Bd%5D=e');
+ done();
+ });
+
+ it('stringifies an empty value', function (done) {
+
+ expect(Qs.stringify({ a: '' })).to.equal('a=');
+ expect(Qs.stringify({ a: '', b: '' })).to.equal('a=&b=');
+ expect(Qs.stringify({ a: null })).to.equal('a=');
+ expect(Qs.stringify({ a: { b: null } })).to.equal('a%5Bb%5D=');
+ done();
+ });
+
+ it('stringifies an empty object', function (done) {
+
+ var obj = Object.create(null);
+ obj.a = 'b';
+ expect(Qs.stringify(obj)).to.equal('a=b');
+ done();
+ });
+
+ it('returns an empty string for invalid input', function (done) {
+
+ expect(Qs.stringify(undefined)).to.equal('');
+ expect(Qs.stringify(false)).to.equal('');
+ expect(Qs.stringify(null)).to.equal('');
+ expect(Qs.stringify('')).to.equal('');
+ done();
+ });
+
+ it('stringifies an object with an empty object as a child', function (done) {
+
+ var obj = {
+ a: Object.create(null)
+ };
+
+ obj.a.b = 'c';
+ expect(Qs.stringify(obj)).to.equal('a%5Bb%5D=c');
+ done();
+ });
+
+ it('drops keys with a value of undefined', function (done) {
+
+ expect(Qs.stringify({ a: undefined })).to.equal('');
+ expect(Qs.stringify({ a: { b: undefined, c: null } })).to.equal('a%5Bc%5D=');
+ done();
+ });
+
+ it('url encodes values', function (done) {
+
+ expect(Qs.stringify({ a: 'b c' })).to.equal('a=b%20c');
+ done();
+ });
+
+ it('stringifies a date', function (done) {
+
+ var now = new Date();
+ var str = 'a=' + encodeURIComponent(now.toISOString());
+ expect(Qs.stringify({ a: now })).to.equal(str);
+ done();
+ });
+
+ it('stringifies the weird object from qs', function (done) {
+
+ expect(Qs.stringify({ 'my weird field': 'q1!2"\'w$5&7/z8)?' })).to.equal('my%20weird%20field=q1!2%22\'w%245%267%2Fz8)%3F');
+ done();
+ });
+
+ it('skips properties that are part of the object prototype', function (done) {
+
+ Object.prototype.crash = 'test';
+ expect(Qs.stringify({ a: 'b'})).to.equal('a=b');
+ expect(Qs.stringify({ a: { b: 'c' } })).to.equal('a%5Bb%5D=c');
+ delete Object.prototype.crash;
+ done();
+ });
+
+ it('stringifies boolean values', function (done) {
+
+ expect(Qs.stringify({ a: true })).to.equal('a=true');
+ expect(Qs.stringify({ a: { b: true } })).to.equal('a%5Bb%5D=true');
+ expect(Qs.stringify({ b: false })).to.equal('b=false');
+ expect(Qs.stringify({ b: { c: false } })).to.equal('b%5Bc%5D=false');
+ done();
+ });
+
+ it('stringifies buffer values', function (done) {
+
+ expect(Qs.stringify({ a: new Buffer('test') })).to.equal('a=test');
+ expect(Qs.stringify({ a: { b: new Buffer('test') } })).to.equal('a%5Bb%5D=test');
+ done();
+ });
+
+ it('stringifies an object using an alternative delimiter', function (done) {
+
+ expect(Qs.stringify({ a: 'b', c: 'd' }, { delimiter: ';' })).to.equal('a=b;c=d');
+ done();
+ });
+
+ it('doesn\'t blow up when Buffer global is missing', function (done) {
+
+ var tempBuffer = global.Buffer;
+ delete global.Buffer;
+ expect(Qs.stringify({ a: 'b', c: 'd' })).to.equal('a=b&c=d');
+ global.Buffer = tempBuffer;
+ done();
+ });
+});
diff --git a/node_modules/http-server/node_modules/union/package.json b/node_modules/http-server/node_modules/union/package.json
new file mode 100644
index 00000000..3ee7fb9d
--- /dev/null
+++ b/node_modules/http-server/node_modules/union/package.json
@@ -0,0 +1,73 @@
+{
+ "name": "union",
+ "description": "A hybrid buffered / streaming middleware kernel backwards compatible with connect.",
+ "version": "0.4.6",
+ "author": {
+ "name": "Charlie Robbins",
+ "email": "charlie.robbins@gmail.com"
+ },
+ "maintainers": [
+ {
+ "name": "indexzero",
+ "email": "charlie.robbins@gmail.com"
+ },
+ {
+ "name": "dscape",
+ "email": "nunojobpinto@gmail.com"
+ },
+ {
+ "name": "jcrugzz",
+ "email": "jcrugzz@gmail.com"
+ },
+ {
+ "name": "swaagie",
+ "email": "info@martijnswaagman.nl"
+ }
+ ],
+ "repository": {
+ "type": "git",
+ "url": "git+ssh://git@github.com/flatiron/union.git"
+ },
+ "dependencies": {
+ "qs": "~2.3.3"
+ },
+ "devDependencies": {
+ "ecstatic": "0.5.x",
+ "director": "1.x.x",
+ "request": "2.29.x",
+ "vows": "0.8.0",
+ "connect": "2.22.x"
+ },
+ "scripts": {
+ "test": "vows test/*-test.js --spec -i"
+ },
+ "main": "./lib",
+ "engines": {
+ "node": ">= 0.8.0"
+ },
+ "gitHead": "0dfda9acdec355997b09c4b85e2906cb4b46014f",
+ "bugs": {
+ "url": "https://github.com/flatiron/union/issues"
+ },
+ "homepage": "https://github.com/flatiron/union#readme",
+ "_id": "union@0.4.6",
+ "_shasum": "198fbdaeba254e788b0efcb630bc11f24a2959e0",
+ "_from": "union@>=0.4.3 <0.5.0",
+ "_npmVersion": "3.9.6",
+ "_nodeVersion": "4.4.3",
+ "_npmUser": {
+ "name": "jcrugzz",
+ "email": "jcrugzz@gmail.com"
+ },
+ "dist": {
+ "shasum": "198fbdaeba254e788b0efcb630bc11f24a2959e0",
+ "tarball": "https://registry.npmjs.org/union/-/union-0.4.6.tgz"
+ },
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/union-0.4.6.tgz_1477161955979_0.7554563113953918"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/union/-/union-0.4.6.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/node_modules/http-server/node_modules/union/test/after-test.js b/node_modules/http-server/node_modules/union/test/after-test.js
new file mode 100644
index 00000000..79c8f766
--- /dev/null
+++ b/node_modules/http-server/node_modules/union/test/after-test.js
@@ -0,0 +1,37 @@
+var assert = require('assert'),
+ vows = require('vows'),
+ request = require('request'),
+ union = require('../');
+
+function stream_callback(cb) {
+ return function () {
+ var stream = new union.ResponseStream();
+
+ stream.once("pipe", function (req) {
+ return cb ? cb(null,req) : undefined;
+ });
+
+ return stream;
+ };
+}
+
+vows.describe('union/after').addBatch({
+ 'When using `union`': {
+ 'a union server with after middleware': {
+ topic: function () {
+ var self = this;
+
+ union.createServer({
+ after: [ stream_callback(), stream_callback(self.callback) ]
+ }).listen(9000, function () {
+ request.get('http://localhost:9000');
+ });
+ },
+ 'should preserve the request until the last call': function (req) {
+ assert.equal(req.req.httpVersion, '1.1');
+ assert.equal(req.req.url, '/');
+ assert.equal(req.req.method, 'GET');
+ }
+ }
+ }
+}).export(module);
\ No newline at end of file
diff --git a/node_modules/http-server/node_modules/union/test/body-parser-test.js b/node_modules/http-server/node_modules/union/test/body-parser-test.js
new file mode 100644
index 00000000..b0c605cf
--- /dev/null
+++ b/node_modules/http-server/node_modules/union/test/body-parser-test.js
@@ -0,0 +1,50 @@
+/*
+ * simple-test.js: Simple tests for basic streaming and non-streaming HTTP requests with union.
+ *
+ * (C) 2011, Charlie Robbins & the Contributors
+ * MIT LICENSE
+ *
+ */
+
+var assert = require('assert'),
+ connect = require('connect'),
+ request = require('request'),
+ vows = require('vows'),
+ union = require('../');
+
+vows.describe('union/body-parser').addBatch({
+ "When using union with connect body parsing via urlencoded() or json()": {
+ topic: function () {
+ union.createServer({
+ buffer: false,
+ before: [
+ connect.urlencoded(),
+ connect.json(),
+ function (req, res) {
+ res.end(JSON.stringify(req.body, true, 2));
+ }
+ ]
+ }).listen(8082, this.callback);
+ },
+ "a request to /": {
+ topic: function () {
+ request.post({
+ uri: 'http://localhost:8082/',
+ headers: {
+ 'content-type': 'application/json'
+ },
+ body: JSON.stringify({ a: "foo", b: "bar" })
+ }, this.callback);
+ },
+ "should respond with a body-decoded object": function (err, res, body) {
+ assert.isNull(err);
+ assert.equal(res.statusCode, 200);
+ assert.deepEqual(
+ JSON.parse(body),
+ { a: 'foo', b: 'bar' }
+ );
+ }
+ }
+ }
+}).export(module);
+
diff --git a/node_modules/http-server/node_modules/union/test/double-write-test.js b/node_modules/http-server/node_modules/union/test/double-write-test.js
new file mode 100644
index 00000000..555c7378
--- /dev/null
+++ b/node_modules/http-server/node_modules/union/test/double-write-test.js
@@ -0,0 +1,62 @@
+/*
+ * simple-test.js: Simple tests for basic streaming and non-streaming HTTP requests with union.
+ *
+ * (C) 2011, Charlie Robbins & the Contributors
+ * MIT LICENSE
+ *
+ */
+
+var assert = require('assert'),
+ fs = require('fs'),
+ path = require('path'),
+ request = require('request'),
+ vows = require('vows'),
+ union = require('../lib/index'),
+ macros = require('./helpers/macros');
+
+var doubleWrite = false,
+ server;
+
+server = union.createServer({
+ before: [
+ function (req, res) {
+ res.json(200, { 'hello': 'world' });
+ res.emit('next');
+ },
+ function (req, res) {
+ doubleWrite = true;
+ res.json(200, { 'hello': 'world' });
+ res.emit('next');
+ }
+ ]
+});
+
+
+vows.describe('union/double-write').addBatch({
+ "When using union": {
+ "an http server which attempts to write to the response twice": {
+ topic: function () {
+ server.listen(9091, this.callback);
+ },
+ "a GET request to `/foo`": {
+ topic: function () {
+ request({ uri: 'http://localhost:9091/foo' }, this.callback);
+ },
+ "it should respond with `{ 'hello': 'world' }`": function (err, res, body) {
+ macros.assertValidResponse(err, res);
+ assert.deepEqual(JSON.parse(body), { 'hello': 'world' });
+ },
+ "it should not write to the response twice": function () {
+ assert.isFalse(doubleWrite);
+ }
+ }
+ }
+ }
+}).addBatch({
+ "When the tests are over": {
+ "the server should close": function () {
+ server.close();
+ }
+ }
+}).export(module);
+
diff --git a/node_modules/http-server/node_modules/union/test/ecstatic-test.js b/node_modules/http-server/node_modules/union/test/ecstatic-test.js
new file mode 100644
index 00000000..2c3e2d8e
--- /dev/null
+++ b/node_modules/http-server/node_modules/union/test/ecstatic-test.js
@@ -0,0 +1,44 @@
+/*
+ * simple-test.js: Simple tests for basic streaming and non-streaming HTTP requests with union.
+ *
+ * (C) 2011, Charlie Robbins & the Contributors
+ * MIT LICENSE
+ *
+ */
+
+var assert = require('assert'),
+ ecstatic = require('ecstatic')(__dirname + '/fixtures/static'),
+ request = require('request'),
+ vows = require('vows'),
+ union = require('../');
+
+vows.describe('union/ecstatic').addBatch({
+ "When using union with ecstatic": {
+ topic: function () {
+ union.createServer({
+ before: [
+ ecstatic
+ ]
+ }).listen(18082, this.callback);
+ },
+ "a request to /some-file.txt": {
+ topic: function () {
+ request({ uri: 'http://localhost:18082/some-file.txt' }, this.callback);
+ },
+ "should respond with `hello world`": function (err, res, body) {
+ assert.isNull(err);
+ assert.equal(body, 'hello world\n');
+ }
+ },
+ "a request to /404.txt (which does not exist)": {
+ topic: function () {
+ request({ uri: 'http://localhost:18082/404.txt' }, this.callback);
+ },
+ "should respond with 404 status code": function (err, res, body) {
+ assert.isNull(err);
+ assert.equal(res.statusCode, 404);
+ }
+ }
+ }
+}).export(module);
+
diff --git a/Examples/ReactJs/src/styles/EnvironmentDemo.css b/node_modules/http-server/node_modules/union/test/fixtures/index.js
similarity index 100%
rename from Examples/ReactJs/src/styles/EnvironmentDemo.css
rename to node_modules/http-server/node_modules/union/test/fixtures/index.js
diff --git a/node_modules/http-server/node_modules/union/test/fixtures/static/some-file.txt b/node_modules/http-server/node_modules/union/test/fixtures/static/some-file.txt
new file mode 100644
index 00000000..3b18e512
--- /dev/null
+++ b/node_modules/http-server/node_modules/union/test/fixtures/static/some-file.txt
@@ -0,0 +1 @@
+hello world
diff --git a/node_modules/http-server/node_modules/union/test/header-test.js b/node_modules/http-server/node_modules/union/test/header-test.js
new file mode 100644
index 00000000..a4ab5ad9
--- /dev/null
+++ b/node_modules/http-server/node_modules/union/test/header-test.js
@@ -0,0 +1,36 @@
+var assert = require('assert'),
+ request = require('request'),
+ vows = require('vows'),
+ union = require('../');
+
+vows.describe('union/header').addBatch({
+ 'When using `union`': {
+ 'with a server that responds with a header': {
+ topic: function () {
+ var callback = this.callback;
+ var server = union.createServer({
+ before: [
+ function (req, res) {
+ res.on('header', function () {
+ callback(null, res);
+ });
+ res.writeHead(200, { 'content-type': 'text' });
+ res.end();
+ }
+ ]
+ });
+ server.listen(9092, function () {
+ request('http://localhost:9092/');
+ });
+ },
+ 'it should have proper `headerSent` set': function (err, res) {
+ assert.isNull(err);
+ assert.isTrue(res.headerSent);
+ },
+ 'it should have proper `_emittedHeader` set': function (err, res) {
+ assert.isNull(err);
+ assert.isTrue(res._emittedHeader);
+ }
+ }
+ }
+}).export(module);
diff --git a/Examples/ReactJs/src/styles/SettingsTable.css b/node_modules/http-server/node_modules/union/test/helpers/index.js
similarity index 100%
rename from Examples/ReactJs/src/styles/SettingsTable.css
rename to node_modules/http-server/node_modules/union/test/helpers/index.js
diff --git a/node_modules/http-server/node_modules/union/test/helpers/macros.js b/node_modules/http-server/node_modules/union/test/helpers/macros.js
new file mode 100644
index 00000000..599e1b47
--- /dev/null
+++ b/node_modules/http-server/node_modules/union/test/helpers/macros.js
@@ -0,0 +1,17 @@
+/*
+ * macros.js: Simple test macros
+ *
+ * (C) 2011, Charlie Robbins & the Contributors
+ * MIT LICENSE
+ *
+ */
+
+var assert = require('assert');
+
+var macros = exports;
+
+macros.assertValidResponse = function (err, res) {
+ assert.isTrue(!err);
+ assert.equal(res.statusCode, 200);
+};
+
diff --git a/node_modules/http-server/node_modules/union/test/prop-test.js b/node_modules/http-server/node_modules/union/test/prop-test.js
new file mode 100644
index 00000000..8e9cd4c0
--- /dev/null
+++ b/node_modules/http-server/node_modules/union/test/prop-test.js
@@ -0,0 +1,45 @@
+var assert = require('assert'),
+ request = require('request'),
+ vows = require('vows'),
+ union = require('../');
+
+vows.describe('union/properties').addBatch({
+ 'When using `union`': {
+ 'with a server that responds to requests': {
+ topic: function () {
+ var callback = this.callback;
+ var server = union.createServer({
+ before: [
+ function (req, res) {
+ callback(null, req, res);
+
+ res.writeHead(200, { 'content-type': 'text' });
+ res.end();
+ }
+ ]
+ });
+ server.listen(9092, function () {
+ request('http://localhost:9092/');
+ });
+ },
+ 'the `req` should have a proper `httpVersion` set': function (err, req) {
+ assert.isNull(err);
+ assert.equal(req.httpVersion, '1.1');
+ },
+ 'the `req` should have a proper `httpVersionMajor` set': function (err, req) {
+ assert.isNull(err);
+ assert.equal(req.httpVersionMajor, 1);
+ },
+ 'the `req` should have a proper `httpVersionMinor` set': function (err, req) {
+ assert.isNull(err);
+ assert.equal(req.httpVersionMinor, 1);
+ },
+ 'the `req` should have proper `socket` reference set': function (err, req) {
+ var net = require('net');
+
+ assert.isNull(err);
+ assert.isTrue(req.socket instanceof net.Socket);
+ }
+ }
+ }
+}).export(module);
diff --git a/node_modules/http-server/node_modules/union/test/simple-test.js b/node_modules/http-server/node_modules/union/test/simple-test.js
new file mode 100644
index 00000000..70416c99
--- /dev/null
+++ b/node_modules/http-server/node_modules/union/test/simple-test.js
@@ -0,0 +1,97 @@
+/*
+ * simple-test.js: Simple tests for basic streaming and non-streaming HTTP requests with union.
+ *
+ * (C) 2011, Charlie Robbins & the Contributors
+ * MIT LICENSE
+ *
+ */
+
+var assert = require('assert'),
+ fs = require('fs'),
+ path = require('path'),
+ spawn = require('child_process').spawn,
+ request = require('request'),
+ vows = require('vows'),
+ macros = require('./helpers/macros');
+
+var examplesDir = path.join(__dirname, '..', 'examples', 'simple'),
+ simpleScript = path.join(examplesDir, 'simple.js'),
+ pkg = JSON.parse(fs.readFileSync(path.join(__dirname, '..', 'package.json'), 'utf8')),
+ fooURI = 'http://localhost:9090/foo',
+ server;
+
+vows.describe('union/simple').addBatch({
+ "When using union": {
+ "a simple http server": {
+ topic: function () {
+ server = spawn(process.argv[0], [simpleScript]);
+ server.stdout.on('data', this.callback.bind(this, null));
+ },
+ "a GET request to `/foo`": {
+ topic: function () {
+ request({ uri: fooURI }, this.callback);
+ },
+ "it should respond with `hello world`": function (err, res, body) {
+ macros.assertValidResponse(err, res);
+ assert.equal(body, 'hello world\n');
+ },
+ "it should respond with 'x-powered-by': 'union '": function (err, res, body) {
+ assert.isNull(err);
+ assert.equal(res.headers['x-powered-by'], 'union ' + pkg.version);
+ }
+ },
+ "a POST request to `/foo`": {
+ topic: function () {
+ request.post({ uri: fooURI }, this.callback);
+ },
+ "it should respond with `wrote to a stream!`": function (err, res, body) {
+ macros.assertValidResponse(err, res);
+ assert.equal(body, 'wrote to a stream!');
+ }
+ },
+ "a GET request to `/redirect`": {
+ topic: function () {
+ request.get({
+ url: 'http://localhost:9090/redirect',
+ followRedirect: false
+ }, this.callback);
+ },
+ "it should redirect to `http://www.google.com`": function (err, res, body) {
+ assert.equal(res.statusCode, 302);
+ assert.equal(res.headers.location, "http://www.google.com");
+ }
+ },
+ "a GET request to `/custom_redirect`": {
+ topic: function () {
+ request.get({
+ url: 'http://localhost:9090/custom_redirect',
+ followRedirect: false
+ }, this.callback);
+ },
+ "it should redirect to `/foo`": function (err, res, body) {
+ assert.equal(res.statusCode, 301);
+ assert.equal(res.headers.location, "http://localhost:9090/foo");
+ }
+ },
+ "a GET request to `/async`": {
+ topic: function () {
+ request.get({
+ url: 'http://localhost:9090/async',
+ timeout: 500
+ }, this.callback);
+ },
+ "it should not timeout": function (err, res, body) {
+ assert.ifError(err);
+ assert.equal(res.statusCode, 200);
+ }
+ }
+ }
+ }
+}).addBatch({
+ "When the tests are over": {
+ "the server should close": function () {
+ server.kill();
+ }
+ }
+}).export(module);
+
diff --git a/node_modules/http-server/node_modules/union/test/status-code-test.js b/node_modules/http-server/node_modules/union/test/status-code-test.js
new file mode 100644
index 00000000..ed49d86e
--- /dev/null
+++ b/node_modules/http-server/node_modules/union/test/status-code-test.js
@@ -0,0 +1,31 @@
+var assert = require('assert'),
+ request = require('request'),
+ vows = require('vows'),
+ union = require('../');
+
+vows.describe('union/status-code').addBatch({
+ 'When using `union`': {
+ 'with a server setting `res.statusCode`': {
+ topic: function () {
+ var server = union.createServer({
+ before: [
+ function (req, res) {
+ res.statusCode = 404;
+ res.end();
+ }
+ ]
+ });
+ server.listen(9091, this.callback);
+ },
+ 'and sending a request': {
+ topic: function () {
+ request('http://localhost:9091/', this.callback);
+ },
+ 'it should have proper `statusCode` set': function (err, res, body) {
+ assert.isTrue(!err);
+ assert.equal(res.statusCode, 404);
+ }
+ }
+ }
+ }
+}).export(module);
diff --git a/node_modules/http-server/node_modules/union/test/streaming-test.js b/node_modules/http-server/node_modules/union/test/streaming-test.js
new file mode 100644
index 00000000..6145ef34
--- /dev/null
+++ b/node_modules/http-server/node_modules/union/test/streaming-test.js
@@ -0,0 +1,68 @@
+var assert = require('assert'),
+ fs = require('fs'),
+ path = require('path'),
+ request = require('request'),
+ vows = require('vows'),
+ union = require('../');
+
+vows.describe('union/streaming').addBatch({
+ 'When using `union`': {
+ 'a simple union server': {
+ topic: function () {
+ var self = this;
+
+ union.createServer({
+ buffer: false,
+ before: [
+ function (req, res, next) {
+ var chunks = '';
+
+ req.on('data', function (chunk) {
+ chunks += chunk;
+ });
+
+ req.on('end', function () {
+ self.callback(null, chunks);
+ });
+ }
+ ]
+ }).listen(9000, function () {
+ request.post('http://localhost:9000').write('hello world');
+ });
+ },
+ 'should receive complete POST data': function (chunks) {
+ assert.equal(chunks, 'hello world');
+ }
+ },
+ "a simple pipe to a file": {
+ topic: function () {
+ var self = this;
+
+ union.createServer({
+ before: [
+ function (req, res, next) {
+ var filename = path.join(__dirname, 'fixtures', 'pipe-write-test.txt'),
+ writeStream = fs.createWriteStream(filename);
+
+ req.pipe(writeStream);
+ writeStream.on('close', function () {
+ res.writeHead(200);
+ fs.createReadStream(filename).pipe(res);
+ });
+ }
+ ]
+ }).listen(9044, function () {
+ request({
+ method: 'POST',
+ uri: 'http://localhost:9044',
+ body: 'hello world'
+ }, self.callback);
+ });
+ },
+ 'should receive complete POST data': function (err, res, body) {
+ assert.equal(body, 'hello world');
+ }
+ }
+ }
+}).export(module);
+
diff --git a/node_modules/http-server/node_modules/union/union.png b/node_modules/http-server/node_modules/union/union.png
new file mode 100644
index 00000000..96c6e665
Binary files /dev/null and b/node_modules/http-server/node_modules/union/union.png differ
diff --git a/node_modules/http-server/package.json b/node_modules/http-server/package.json
new file mode 100644
index 00000000..d27db4da
--- /dev/null
+++ b/node_modules/http-server/package.json
@@ -0,0 +1,112 @@
+{
+ "name": "http-server",
+ "version": "0.9.0",
+ "description": "A simple zero-configuration command-line http server",
+ "main": "./lib/http-server",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/indexzero/http-server.git"
+ },
+ "keywords": [
+ "cli",
+ "command"
+ ],
+ "scripts": {
+ "start": "node ./bin/http-server",
+ "pretest": "common bin/http-server lib/ test",
+ "test": "vows --spec --isolate"
+ },
+ "contributors": [
+ {
+ "name": "Charlie Robbins",
+ "email": "charlie.robbins@gmail.com"
+ },
+ {
+ "name": "Marak Squires",
+ "email": "marak.squires@gmail.com"
+ },
+ {
+ "name": "Charlie McConnell",
+ "email": "charlie@charlieistheman.com"
+ },
+ {
+ "name": "Joshua Holbrook",
+ "email": "josh.holbrook@gmail.com"
+ },
+ {
+ "name": "Maciej MaĆecki",
+ "email": "maciej.malecki@notimplemented.org"
+ },
+ {
+ "name": "Matthew Bergman",
+ "email": "mzbphoto@gmail.com"
+ },
+ {
+ "name": "brad dunbar",
+ "email": "dunbarb2@gmail.com"
+ },
+ {
+ "name": "Dominic Tarr"
+ },
+ {
+ "name": "Travis Person",
+ "email": "travis.person@gmail.com"
+ },
+ {
+ "name": "Jinkwon Lee",
+ "email": "master@bdyne.net"
+ }
+ ],
+ "dependencies": {
+ "colors": "1.0.3",
+ "corser": "~2.0.0",
+ "ecstatic": "^1.4.0",
+ "http-proxy": "^1.8.1",
+ "opener": "~1.4.0",
+ "optimist": "0.6.x",
+ "portfinder": "0.4.x",
+ "union": "~0.4.3"
+ },
+ "devDependencies": {
+ "common-style": "^3.0.0",
+ "request": "2.49.x",
+ "vows": "0.7.x"
+ },
+ "bugs": {
+ "url": "https://github.com/nodeapps/http-server/issues"
+ },
+ "license": "MIT",
+ "preferGlobal": "true",
+ "bin": {
+ "http-server": "./bin/http-server",
+ "hs": "./bin/http-server"
+ },
+ "gitHead": "1a8552c5e028bd5500027ee940111133927a4e94",
+ "homepage": "https://github.com/indexzero/http-server#readme",
+ "_id": "http-server@0.9.0",
+ "_shasum": "8f1b06bdc733618d4dc42831c7ba1aff4e06001a",
+ "_from": "http-server@>=0.9.0 <0.10.0",
+ "_npmVersion": "3.7.1",
+ "_nodeVersion": "4.2.2",
+ "_npmUser": {
+ "name": "indexzero",
+ "email": "charlie.robbins@gmail.com"
+ },
+ "maintainers": [
+ {
+ "name": "indexzero",
+ "email": "charlie.robbins@gmail.com"
+ }
+ ],
+ "dist": {
+ "shasum": "8f1b06bdc733618d4dc42831c7ba1aff4e06001a",
+ "tarball": "https://registry.npmjs.org/http-server/-/http-server-0.9.0.tgz"
+ },
+ "_npmOperationalInternal": {
+ "host": "packages-6-west.internal.npmjs.com",
+ "tmp": "tmp/http-server-0.9.0.tgz_1455864708425_0.19514421350322664"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/http-server/-/http-server-0.9.0.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/node_modules/http-server/public/404.html b/node_modules/http-server/public/404.html
new file mode 100644
index 00000000..03d348dc
--- /dev/null
+++ b/node_modules/http-server/public/404.html
@@ -0,0 +1,10 @@
+
+
+ 404
+
+
+ 404
+
+ Were you just making up filenames or what?
+
+
diff --git a/node_modules/http-server/public/img/turtle.png b/node_modules/http-server/public/img/turtle.png
new file mode 100644
index 00000000..721a796b
Binary files /dev/null and b/node_modules/http-server/public/img/turtle.png differ
diff --git a/node_modules/http-server/public/index.html b/node_modules/http-server/public/index.html
new file mode 100644
index 00000000..12cafb2e
--- /dev/null
+++ b/node_modules/http-server/public/index.html
@@ -0,0 +1,12 @@
+
+
+ node.js http server
+
+
+
+ Serving up static files like they were turtles strapped to rockets.
+
+
+
+
+
diff --git a/node_modules/http-server/screenshots/directory.png b/node_modules/http-server/screenshots/directory.png
new file mode 100644
index 00000000..b255cea2
Binary files /dev/null and b/node_modules/http-server/screenshots/directory.png differ
diff --git a/node_modules/http-server/screenshots/public.png b/node_modules/http-server/screenshots/public.png
new file mode 100644
index 00000000..aa007bdc
Binary files /dev/null and b/node_modules/http-server/screenshots/public.png differ
diff --git a/node_modules/http-server/screenshots/start.png b/node_modules/http-server/screenshots/start.png
new file mode 100644
index 00000000..d4ea2b8a
Binary files /dev/null and b/node_modules/http-server/screenshots/start.png differ
diff --git a/node_modules/http-server/test/fixtures/root/canYouSeeMe b/node_modules/http-server/test/fixtures/root/canYouSeeMe
new file mode 100644
index 00000000..c20d87fb
--- /dev/null
+++ b/node_modules/http-server/test/fixtures/root/canYouSeeMe
@@ -0,0 +1,2 @@
+I bet you can. I'm in your index.
+
diff --git a/node_modules/http-server/test/fixtures/root/file b/node_modules/http-server/test/fixtures/root/file
new file mode 100644
index 00000000..ca06ae2c
--- /dev/null
+++ b/node_modules/http-server/test/fixtures/root/file
@@ -0,0 +1,2 @@
+hello, I know nodejitsu
+
diff --git a/node_modules/http-server/test/http-server-test.js b/node_modules/http-server/test/http-server-test.js
new file mode 100644
index 00000000..d4555b97
--- /dev/null
+++ b/node_modules/http-server/test/http-server-test.js
@@ -0,0 +1,158 @@
+var assert = require('assert'),
+ path = require('path'),
+ fs = require('fs'),
+ vows = require('vows'),
+ request = require('request'),
+ httpServer = require('../lib/http-server');
+
+var root = path.join(__dirname, 'fixtures', 'root');
+
+vows.describe('http-server').addBatch({
+ 'When http-server is listening on 8080': {
+ topic: function () {
+ var server = httpServer.createServer({
+ root: root,
+ robots: true,
+ headers: {
+ 'Access-Control-Allow-Origin': '*',
+ 'Access-Control-Allow-Credentials': 'true'
+ }
+ });
+
+ server.listen(8080);
+ this.callback(null, server);
+ },
+ 'it should serve files from root directory': {
+ topic: function () {
+ request('http://127.0.0.1:8080/file', this.callback);
+ },
+ 'status code should be 200': function (res) {
+ assert.equal(res.statusCode, 200);
+ },
+ 'and file content': {
+ topic: function (res, body) {
+ var self = this;
+ fs.readFile(path.join(root, 'file'), 'utf8', function (err, data) {
+ self.callback(err, data, body);
+ });
+ },
+ 'should match content of served file': function (err, file, body) {
+ assert.equal(body.trim(), file.trim());
+ }
+ }
+ },
+ 'when requesting non-existent file': {
+ topic: function () {
+ request('http://127.0.0.1:8080/404', this.callback);
+ },
+ 'status code should be 404': function (res) {
+ assert.equal(res.statusCode, 404);
+ }
+ },
+ 'when requesting /': {
+ topic: function () {
+ request('http://127.0.0.1:8080/', this.callback);
+ },
+ 'should respond with index': function (err, res, body) {
+ assert.equal(res.statusCode, 200);
+ assert.include(body, '/file');
+ assert.include(body, '/canYouSeeMe');
+ }
+ },
+ 'when robots options is activated': {
+ topic: function () {
+ request('http://127.0.0.1:8080/', this.callback);
+ },
+ 'should respond with status code 200 to /robots.txt': function (res) {
+ assert.equal(res.statusCode, 200);
+ }
+ },
+ 'and options include custom set http-headers': {
+ topic: function () {
+ request('http://127.0.0.1:8080/', this.callback);
+ },
+ 'should respond with headers set in options': function (err, res) {
+ assert.equal(res.headers['access-control-allow-origin'], '*');
+ assert.equal(res.headers['access-control-allow-credentials'], 'true');
+ }
+ },
+ 'When http-server is proxying from 8081 to 8080': {
+ topic: function () {
+ var proxyServer = httpServer.createServer({
+ proxy: 'http://127.0.0.1:8080/',
+ root: path.join(__dirname, 'fixtures')
+ });
+ proxyServer.listen(8081);
+ this.callback(null, proxyServer);
+ },
+ 'it should serve files from the proxy server root directory': {
+ topic: function () {
+ request('http://127.0.0.1:8081/root/file', this.callback);
+ },
+ 'status code should be the enpoint code 200': function (res) {
+ assert.equal(res.statusCode, 200);
+ },
+ 'and file content': {
+ topic: function (res, body) {
+ var self = this;
+ fs.readFile(path.join(root, 'file'), 'utf8', function (err, data) {
+ self.callback(err, data, body);
+ });
+ },
+ 'should match content of the served file': function (err, file, body) {
+ assert.equal(body.trim(), file.trim());
+ }
+ }
+ },
+ 'it should fallback to the proxied server': {
+ topic: function () {
+ request('http://127.0.0.1:8081/file', this.callback);
+ },
+ 'status code should be the enpoint code 200': function (res) {
+ assert.equal(res.statusCode, 200);
+ },
+ 'and file content': {
+ topic: function (res, body) {
+ var self = this;
+ fs.readFile(path.join(root, 'file'), 'utf8', function (err, data) {
+ self.callback(err, data, body);
+ });
+ },
+ 'should match content of the proxied served file': function (err, file, body) {
+ assert.equal(body.trim(), file.trim());
+ }
+ }
+ }
+ }
+ },
+ 'When cors is enabled': {
+ topic: function () {
+ var server = httpServer.createServer({
+ root: root,
+ cors: true,
+ corsHeaders: 'X-Test'
+ });
+ server.listen(8082);
+ this.callback(null, server);
+ },
+ 'and given OPTIONS request': {
+ topic: function () {
+ request({
+ method: 'OPTIONS',
+ uri: 'http://127.0.0.1:8082/',
+ headers: {
+ 'Access-Control-Request-Method': 'GET',
+ Origin: 'http://example.com',
+ 'Access-Control-Request-Headers': 'Foobar'
+ }
+ }, this.callback);
+ },
+ 'status code should be 204': function (err, res) {
+ assert.equal(res.statusCode, 204);
+ },
+ 'response Access-Control-Allow-Headers should contain X-Test': function (err, res) {
+ assert.ok(res.headers['access-control-allow-headers'].split(/\s*,\s*/g).indexOf('X-Test') >= 0, 204);
+ }
+ }
+ }
+}).export(module);
diff --git a/package.json b/package.json
new file mode 100644
index 00000000..7d16fd95
--- /dev/null
+++ b/package.json
@@ -0,0 +1,17 @@
+{
+ "name": "extensions-api-sdk",
+ "version": "0.1.0",
+ "description": "Sample code and documentation for the Tableau Extensions API.",
+ "scripts": {
+ "start": "node node_modules/http-server/bin/http-server -p 8765"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/tableau/extensions-api.git"
+ },
+ "author": "tableau",
+ "license": "MIT",
+ "dependencies": {
+ "http-server": "^0.9.0"
+ }
+}
\ No newline at end of file