@veeroute/lss-studio-angular
Version:
OpenAPI client for @veeroute/lss-studio-angular
574 lines • 111 kB
JavaScript
/**
* VRt.Studio [ST]
*
* The version of the OpenAPI document: 7.18.2755
* Contact: servicedesk@veeroute.com
*
* NOTE: This class is auto generated by OpenAPI Generator.
* Do not edit the class manually.
*/
/* tslint:disable:no-unused-variable member-ordering */
import { Inject, Injectable, Optional } from '@angular/core';
import { HttpHeaders, HttpParams, HttpContext } from '@angular/common/http';
import { CustomHttpParameterCodec } from '../encoder';
// @ts-ignore
import { BASE_PATH } from '../variables';
import { Configuration } from '../configuration';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common/http";
import * as i2 from "../configuration";
export class LocationsService {
httpClient;
basePath = 'https://api.edge7.veeroute.cloud';
defaultHeaders = new HttpHeaders();
configuration = new Configuration();
encoder;
constructor(httpClient, basePath, configuration) {
this.httpClient = httpClient;
if (configuration) {
this.configuration = configuration;
}
if (typeof this.configuration.basePath !== 'string') {
const firstBasePath = Array.isArray(basePath) ? basePath[0] : undefined;
if (firstBasePath != undefined) {
basePath = firstBasePath;
}
if (typeof basePath !== 'string') {
basePath = this.basePath;
}
this.configuration.basePath = basePath;
}
this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();
}
// @ts-ignore
addToHttpParams(httpParams, value, key) {
if (typeof value === "object" && value instanceof Date === false) {
httpParams = this.addToHttpParamsRecursive(httpParams, value);
}
else {
httpParams = this.addToHttpParamsRecursive(httpParams, value, key);
}
return httpParams;
}
addToHttpParamsRecursive(httpParams, value, key) {
if (value == null) {
return httpParams;
}
if (typeof value === "object") {
if (Array.isArray(value)) {
value.forEach(elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));
}
else if (value instanceof Date) {
if (key != null) {
httpParams = httpParams.append(key, value.toISOString().substring(0, 10));
}
else {
throw Error("key may not be null if value is Date");
}
}
else {
Object.keys(value).forEach(k => httpParams = this.addToHttpParamsRecursive(httpParams, value[k], key != null ? `${key}.${k}` : k));
}
}
else if (key != null) {
httpParams = httpParams.append(key, value);
}
else {
throw Error("key may not be null if value is not object or array");
}
return httpParams;
}
createLocation(requestParameters, observe = 'body', reportProgress = false, options) {
const experimentKey = requestParameters?.experimentKey;
if (experimentKey === null || experimentKey === undefined) {
throw new Error('Required parameter experimentKey was null or undefined when calling createLocation.');
}
const webLocationStudio = requestParameters?.webLocationStudio;
if (webLocationStudio === null || webLocationStudio === undefined) {
throw new Error('Required parameter webLocationStudio was null or undefined when calling createLocation.');
}
let localVarHeaders = this.defaultHeaders;
let localVarCredential;
// authentication (ApiKeyAuth) required
localVarCredential = this.configuration.lookupCredential('ApiKeyAuth');
if (localVarCredential) {
localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential);
}
let localVarHttpHeaderAcceptSelected = options && options.httpHeaderAccept;
if (localVarHttpHeaderAcceptSelected === undefined) {
// to determine the Accept header
const httpHeaderAccepts = [
'application/json'
];
localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
}
if (localVarHttpHeaderAcceptSelected !== undefined) {
localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
}
let localVarHttpContext = options && options.context;
if (localVarHttpContext === undefined) {
localVarHttpContext = new HttpContext();
}
let localVarTransferCache = options && options.transferCache;
if (localVarTransferCache === undefined) {
localVarTransferCache = true;
}
// to determine the Content-Type header
const consumes = [
'application/json'
];
const httpContentTypeSelected = this.configuration.selectHeaderContentType(consumes);
if (httpContentTypeSelected !== undefined) {
localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);
}
let responseType_ = 'json';
if (localVarHttpHeaderAcceptSelected) {
if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
responseType_ = 'text';
}
else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
responseType_ = 'json';
}
else {
responseType_ = 'blob';
}
}
let localVarPath = `/studio/experiments/${this.configuration.encodeParam({ name: "experimentKey", value: experimentKey, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: "uuid" })}/locations`;
return this.httpClient.request('post', `${this.configuration.basePath}${localVarPath}`, {
context: localVarHttpContext,
body: webLocationStudio,
responseType: responseType_,
withCredentials: this.configuration.withCredentials,
headers: localVarHeaders,
observe: observe,
transferCache: localVarTransferCache,
reportProgress: reportProgress
});
}
deleteLocation(requestParameters, observe = 'body', reportProgress = false, options) {
const experimentKey = requestParameters?.experimentKey;
if (experimentKey === null || experimentKey === undefined) {
throw new Error('Required parameter experimentKey was null or undefined when calling deleteLocation.');
}
const essenceKey = requestParameters?.essenceKey;
if (essenceKey === null || essenceKey === undefined) {
throw new Error('Required parameter essenceKey was null or undefined when calling deleteLocation.');
}
let localVarHeaders = this.defaultHeaders;
let localVarCredential;
// authentication (ApiKeyAuth) required
localVarCredential = this.configuration.lookupCredential('ApiKeyAuth');
if (localVarCredential) {
localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential);
}
let localVarHttpHeaderAcceptSelected = options && options.httpHeaderAccept;
if (localVarHttpHeaderAcceptSelected === undefined) {
// to determine the Accept header
const httpHeaderAccepts = [
'application/json'
];
localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
}
if (localVarHttpHeaderAcceptSelected !== undefined) {
localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
}
let localVarHttpContext = options && options.context;
if (localVarHttpContext === undefined) {
localVarHttpContext = new HttpContext();
}
let localVarTransferCache = options && options.transferCache;
if (localVarTransferCache === undefined) {
localVarTransferCache = true;
}
let responseType_ = 'json';
if (localVarHttpHeaderAcceptSelected) {
if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
responseType_ = 'text';
}
else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
responseType_ = 'json';
}
else {
responseType_ = 'blob';
}
}
let localVarPath = `/studio/experiments/${this.configuration.encodeParam({ name: "experimentKey", value: experimentKey, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: "uuid" })}/locations/${this.configuration.encodeParam({ name: "essenceKey", value: essenceKey, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined })}`;
return this.httpClient.request('delete', `${this.configuration.basePath}${localVarPath}`, {
context: localVarHttpContext,
responseType: responseType_,
withCredentials: this.configuration.withCredentials,
headers: localVarHeaders,
observe: observe,
transferCache: localVarTransferCache,
reportProgress: reportProgress
});
}
readLocation(requestParameters, observe = 'body', reportProgress = false, options) {
const experimentKey = requestParameters?.experimentKey;
if (experimentKey === null || experimentKey === undefined) {
throw new Error('Required parameter experimentKey was null or undefined when calling readLocation.');
}
const essenceKey = requestParameters?.essenceKey;
if (essenceKey === null || essenceKey === undefined) {
throw new Error('Required parameter essenceKey was null or undefined when calling readLocation.');
}
let localVarHeaders = this.defaultHeaders;
let localVarCredential;
// authentication (ApiKeyAuth) required
localVarCredential = this.configuration.lookupCredential('ApiKeyAuth');
if (localVarCredential) {
localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential);
}
let localVarHttpHeaderAcceptSelected = options && options.httpHeaderAccept;
if (localVarHttpHeaderAcceptSelected === undefined) {
// to determine the Accept header
const httpHeaderAccepts = [
'application/json'
];
localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
}
if (localVarHttpHeaderAcceptSelected !== undefined) {
localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
}
let localVarHttpContext = options && options.context;
if (localVarHttpContext === undefined) {
localVarHttpContext = new HttpContext();
}
let localVarTransferCache = options && options.transferCache;
if (localVarTransferCache === undefined) {
localVarTransferCache = true;
}
let responseType_ = 'json';
if (localVarHttpHeaderAcceptSelected) {
if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
responseType_ = 'text';
}
else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
responseType_ = 'json';
}
else {
responseType_ = 'blob';
}
}
let localVarPath = `/studio/experiments/${this.configuration.encodeParam({ name: "experimentKey", value: experimentKey, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: "uuid" })}/locations/${this.configuration.encodeParam({ name: "essenceKey", value: essenceKey, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined })}`;
return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`, {
context: localVarHttpContext,
responseType: responseType_,
withCredentials: this.configuration.withCredentials,
headers: localVarHeaders,
observe: observe,
transferCache: localVarTransferCache,
reportProgress: reportProgress
});
}
readLocations(requestParameters, observe = 'body', reportProgress = false, options) {
const experimentKey = requestParameters?.experimentKey;
if (experimentKey === null || experimentKey === undefined) {
throw new Error('Required parameter experimentKey was null or undefined when calling readLocations.');
}
const offset = requestParameters?.offset;
const limit = requestParameters?.limit;
const sortField = requestParameters?.sortField;
const sortCustomfield = requestParameters?.sortCustomfield;
const sortDirection = requestParameters?.sortDirection;
const tableLocationFilterListStudio = requestParameters?.tableLocationFilterListStudio;
let localVarQueryParameters = new HttpParams({ encoder: this.encoder });
if (offset !== undefined && offset !== null) {
localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, offset, 'offset');
}
if (limit !== undefined && limit !== null) {
localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, limit, 'limit');
}
if (sortField !== undefined && sortField !== null) {
localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, sortField, 'sort_field');
}
if (sortCustomfield !== undefined && sortCustomfield !== null) {
localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, sortCustomfield, 'sort_customfield');
}
if (sortDirection !== undefined && sortDirection !== null) {
localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, sortDirection, 'sort_direction');
}
let localVarHeaders = this.defaultHeaders;
let localVarCredential;
// authentication (ApiKeyAuth) required
localVarCredential = this.configuration.lookupCredential('ApiKeyAuth');
if (localVarCredential) {
localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential);
}
let localVarHttpHeaderAcceptSelected = options && options.httpHeaderAccept;
if (localVarHttpHeaderAcceptSelected === undefined) {
// to determine the Accept header
const httpHeaderAccepts = [
'application/json'
];
localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
}
if (localVarHttpHeaderAcceptSelected !== undefined) {
localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
}
let localVarHttpContext = options && options.context;
if (localVarHttpContext === undefined) {
localVarHttpContext = new HttpContext();
}
let localVarTransferCache = options && options.transferCache;
if (localVarTransferCache === undefined) {
localVarTransferCache = true;
}
// to determine the Content-Type header
const consumes = [
'application/json'
];
const httpContentTypeSelected = this.configuration.selectHeaderContentType(consumes);
if (httpContentTypeSelected !== undefined) {
localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);
}
let responseType_ = 'json';
if (localVarHttpHeaderAcceptSelected) {
if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
responseType_ = 'text';
}
else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
responseType_ = 'json';
}
else {
responseType_ = 'blob';
}
}
let localVarPath = `/studio/experiments/${this.configuration.encodeParam({ name: "experimentKey", value: experimentKey, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: "uuid" })}/locations/batch/list`;
return this.httpClient.request('post', `${this.configuration.basePath}${localVarPath}`, {
context: localVarHttpContext,
body: tableLocationFilterListStudio,
params: localVarQueryParameters,
responseType: responseType_,
withCredentials: this.configuration.withCredentials,
headers: localVarHeaders,
observe: observe,
transferCache: localVarTransferCache,
reportProgress: reportProgress
});
}
readLocationsGeopoints(requestParameters, observe = 'body', reportProgress = false, options) {
const experimentKey = requestParameters?.experimentKey;
if (experimentKey === null || experimentKey === undefined) {
throw new Error('Required parameter experimentKey was null or undefined when calling readLocationsGeopoints.');
}
const offset = requestParameters?.offset;
const limit = requestParameters?.limit;
const tableLocationFilterListStudio = requestParameters?.tableLocationFilterListStudio;
let localVarQueryParameters = new HttpParams({ encoder: this.encoder });
if (offset !== undefined && offset !== null) {
localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, offset, 'offset');
}
if (limit !== undefined && limit !== null) {
localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, limit, 'limit');
}
let localVarHeaders = this.defaultHeaders;
let localVarCredential;
// authentication (ApiKeyAuth) required
localVarCredential = this.configuration.lookupCredential('ApiKeyAuth');
if (localVarCredential) {
localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential);
}
let localVarHttpHeaderAcceptSelected = options && options.httpHeaderAccept;
if (localVarHttpHeaderAcceptSelected === undefined) {
// to determine the Accept header
const httpHeaderAccepts = [
'application/json'
];
localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
}
if (localVarHttpHeaderAcceptSelected !== undefined) {
localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
}
let localVarHttpContext = options && options.context;
if (localVarHttpContext === undefined) {
localVarHttpContext = new HttpContext();
}
let localVarTransferCache = options && options.transferCache;
if (localVarTransferCache === undefined) {
localVarTransferCache = true;
}
// to determine the Content-Type header
const consumes = [
'application/json'
];
const httpContentTypeSelected = this.configuration.selectHeaderContentType(consumes);
if (httpContentTypeSelected !== undefined) {
localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);
}
let responseType_ = 'json';
if (localVarHttpHeaderAcceptSelected) {
if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
responseType_ = 'text';
}
else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
responseType_ = 'json';
}
else {
responseType_ = 'blob';
}
}
let localVarPath = `/studio/experiments/${this.configuration.encodeParam({ name: "experimentKey", value: experimentKey, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: "uuid" })}/locations/batch/geopoints`;
return this.httpClient.request('post', `${this.configuration.basePath}${localVarPath}`, {
context: localVarHttpContext,
body: tableLocationFilterListStudio,
params: localVarQueryParameters,
responseType: responseType_,
withCredentials: this.configuration.withCredentials,
headers: localVarHeaders,
observe: observe,
transferCache: localVarTransferCache,
reportProgress: reportProgress
});
}
readLocationsMetrics(requestParameters, observe = 'body', reportProgress = false, options) {
const experimentKey = requestParameters?.experimentKey;
if (experimentKey === null || experimentKey === undefined) {
throw new Error('Required parameter experimentKey was null or undefined when calling readLocationsMetrics.');
}
const tableLocationMetricsFilterListStudio = requestParameters?.tableLocationMetricsFilterListStudio;
if (tableLocationMetricsFilterListStudio === null || tableLocationMetricsFilterListStudio === undefined) {
throw new Error('Required parameter tableLocationMetricsFilterListStudio was null or undefined when calling readLocationsMetrics.');
}
let localVarHeaders = this.defaultHeaders;
let localVarCredential;
// authentication (ApiKeyAuth) required
localVarCredential = this.configuration.lookupCredential('ApiKeyAuth');
if (localVarCredential) {
localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential);
}
let localVarHttpHeaderAcceptSelected = options && options.httpHeaderAccept;
if (localVarHttpHeaderAcceptSelected === undefined) {
// to determine the Accept header
const httpHeaderAccepts = [
'application/json'
];
localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
}
if (localVarHttpHeaderAcceptSelected !== undefined) {
localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
}
let localVarHttpContext = options && options.context;
if (localVarHttpContext === undefined) {
localVarHttpContext = new HttpContext();
}
let localVarTransferCache = options && options.transferCache;
if (localVarTransferCache === undefined) {
localVarTransferCache = true;
}
// to determine the Content-Type header
const consumes = [
'application/json'
];
const httpContentTypeSelected = this.configuration.selectHeaderContentType(consumes);
if (httpContentTypeSelected !== undefined) {
localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);
}
let responseType_ = 'json';
if (localVarHttpHeaderAcceptSelected) {
if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
responseType_ = 'text';
}
else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
responseType_ = 'json';
}
else {
responseType_ = 'blob';
}
}
let localVarPath = `/studio/experiments/${this.configuration.encodeParam({ name: "experimentKey", value: experimentKey, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: "uuid" })}/locations/batch/metrics`;
return this.httpClient.request('post', `${this.configuration.basePath}${localVarPath}`, {
context: localVarHttpContext,
body: tableLocationMetricsFilterListStudio,
responseType: responseType_,
withCredentials: this.configuration.withCredentials,
headers: localVarHeaders,
observe: observe,
transferCache: localVarTransferCache,
reportProgress: reportProgress
});
}
updateLocation(requestParameters, observe = 'body', reportProgress = false, options) {
const experimentKey = requestParameters?.experimentKey;
if (experimentKey === null || experimentKey === undefined) {
throw new Error('Required parameter experimentKey was null or undefined when calling updateLocation.');
}
const webLocationStudio = requestParameters?.webLocationStudio;
if (webLocationStudio === null || webLocationStudio === undefined) {
throw new Error('Required parameter webLocationStudio was null or undefined when calling updateLocation.');
}
let localVarHeaders = this.defaultHeaders;
let localVarCredential;
// authentication (ApiKeyAuth) required
localVarCredential = this.configuration.lookupCredential('ApiKeyAuth');
if (localVarCredential) {
localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential);
}
let localVarHttpHeaderAcceptSelected = options && options.httpHeaderAccept;
if (localVarHttpHeaderAcceptSelected === undefined) {
// to determine the Accept header
const httpHeaderAccepts = [
'application/json'
];
localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
}
if (localVarHttpHeaderAcceptSelected !== undefined) {
localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
}
let localVarHttpContext = options && options.context;
if (localVarHttpContext === undefined) {
localVarHttpContext = new HttpContext();
}
let localVarTransferCache = options && options.transferCache;
if (localVarTransferCache === undefined) {
localVarTransferCache = true;
}
// to determine the Content-Type header
const consumes = [
'application/json'
];
const httpContentTypeSelected = this.configuration.selectHeaderContentType(consumes);
if (httpContentTypeSelected !== undefined) {
localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);
}
let responseType_ = 'json';
if (localVarHttpHeaderAcceptSelected) {
if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
responseType_ = 'text';
}
else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
responseType_ = 'json';
}
else {
responseType_ = 'blob';
}
}
let localVarPath = `/studio/experiments/${this.configuration.encodeParam({ name: "experimentKey", value: experimentKey, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: "uuid" })}/locations`;
return this.httpClient.request('put', `${this.configuration.basePath}${localVarPath}`, {
context: localVarHttpContext,
body: webLocationStudio,
responseType: responseType_,
withCredentials: this.configuration.withCredentials,
headers: localVarHeaders,
observe: observe,
transferCache: localVarTransferCache,
reportProgress: reportProgress
});
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LocationsService, deps: [{ token: i1.HttpClient }, { token: BASE_PATH, optional: true }, { token: i2.Configuration, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LocationsService, providedIn: 'root' });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LocationsService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root'
}]
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
type: Optional
}, {
type: Inject,
args: [BASE_PATH]
}] }, { type: i2.Configuration, decorators: [{
type: Optional
}] }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYXRpb25zU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2FwaS9sb2NhdGlvbnNTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBQ0gsdURBQXVEO0FBRXZELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUEyQixlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFjLFdBQVcsRUFBRSxVQUFVLEVBQ1UsV0FBVyxFQUN4RCxNQUFZLHNCQUFzQixDQUFDO0FBQzVDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUErQixZQUFZLENBQUM7QUFnQy9FLGFBQWE7QUFDYixPQUFPLEVBQUUsU0FBUyxFQUFzQixNQUEwQixjQUFjLENBQUM7QUFDakYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUEwQyxrQkFBa0IsQ0FBQzs7OztBQWlCckYsTUFBTSxPQUFPLGdCQUFnQjtJQU9IO0lBTFosUUFBUSxHQUFHLGtDQUFrQyxDQUFDO0lBQ2pELGNBQWMsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0lBQ25DLGFBQWEsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO0lBQ3BDLE9BQU8sQ0FBcUI7SUFFbkMsWUFBc0IsVUFBc0IsRUFBZ0MsUUFBeUIsRUFBYyxhQUE0QjtRQUF6SCxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3hDLElBQUksYUFBYSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDdkMsQ0FBQztRQUNELElBQUksT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNsRCxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUN4RSxJQUFJLGFBQWEs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