@dcl/asset-packs 2.15.2 → 2.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,15 @@
1
+ import type { Entity, IEngine } from '@dcl/ecs';
2
+ import { type Composite } from '@dcl/ecs';
3
+ import { type EntityMap } from './mapping';
4
+ type CompositeComponent = Composite.Definition['components'][number];
5
+ type ComponentDataEntry = ReturnType<CompositeComponent['data']['get']>;
6
+ export declare function getJsonPayload<T = unknown>(componentData: ComponentDataEntry): T | undefined;
7
+ export declare function deepReplaceAssetPath(value: unknown, replacement: string): void;
8
+ export declare function substituteAssetPathInComposite(composite: Composite.Definition, compositeSrc: string): void;
9
+ export declare function stripComponents(composite: Composite.Definition): Composite.Definition;
10
+ type IdMap = Map<string, number>;
11
+ export declare function allocateIdsForSpawnedComponents(engine: IEngine, composite: Composite.Definition, spawnedEntityByCompositeId: Map<number, Entity>): IdMap;
12
+ export declare function remapTriggerReferences(engine: IEngine, spawnedEntities: Iterable<[Entity, number]>, ids: IdMap): void;
13
+ export declare function remapSyncComponentIds(engine: IEngine, spawnedEntities: Iterable<[Entity, number]>): void;
14
+ export declare function initializeComponentIdsFromComposite(engine: IEngine, composite: Composite.Definition, entityMap: EntityMap): void;
15
+ export {};
@@ -0,0 +1,223 @@
1
+ import { COMPONENTS_WITH_ID, getNextId } from './mapping';
2
+ import { getComponents } from './definitions';
3
+ import { getExplorerComponents } from './components';
4
+ const ASSET_PATH_TOKEN = '{assetPath}';
5
+ const SELF_REF = /^\{self:(.+)\}$/;
6
+ const CROSS_ENTITY_REF = /^\{(\d+):(.+)\}$/;
7
+ export function getJsonPayload(componentData) {
8
+ if (componentData?.data?.$case !== 'json')
9
+ return undefined;
10
+ return componentData.data.json;
11
+ }
12
+ function normalizePosix(p) {
13
+ const segments = p.split('/');
14
+ const out = [];
15
+ for (const seg of segments) {
16
+ if (seg === '' || seg === '.')
17
+ continue;
18
+ if (seg === '..') {
19
+ if (out.length === 0 || out[out.length - 1] === '..')
20
+ out.push('..');
21
+ else
22
+ out.pop();
23
+ continue;
24
+ }
25
+ out.push(seg);
26
+ }
27
+ const prefix = p.startsWith('/') ? '/' : '';
28
+ return prefix + out.join('/');
29
+ }
30
+ function containAssetPath(replacement, joined) {
31
+ const base = replacement === '' ? '.' : normalizePosix(replacement);
32
+ const normalized = normalizePosix(joined);
33
+ if (normalized === base)
34
+ return normalized;
35
+ if (normalized.startsWith(base + '/'))
36
+ return normalized;
37
+ return null;
38
+ }
39
+ function assetPathFrom(compositeSrc) {
40
+ const slash = compositeSrc.lastIndexOf('/');
41
+ return slash >= 0 ? compositeSrc.substring(0, slash) : '';
42
+ }
43
+ const JSON_WRAPPER_KEYS = new Set(['jsonPayload']);
44
+ export function deepReplaceAssetPath(value, replacement) {
45
+ if (value === null || typeof value !== 'object')
46
+ return;
47
+ const substitute = (raw) => {
48
+ const joined = raw.split(ASSET_PATH_TOKEN).join(replacement);
49
+ if (!joined.includes('/') && !joined.includes('\\'))
50
+ return joined;
51
+ const contained = containAssetPath(replacement, joined);
52
+ if (contained !== null)
53
+ return contained;
54
+ console.error(`[asset-packs] rejected {assetPath} substitution that escapes asset dir: ${JSON.stringify(raw)} -> ${JSON.stringify(joined)}`);
55
+ return replacement;
56
+ };
57
+ const substituteJsonWrapper = (raw) => {
58
+ const first = raw.charCodeAt(0);
59
+ if (first !== 0x7b && first !== 0x5b)
60
+ return null;
61
+ let parsed;
62
+ try {
63
+ parsed = JSON.parse(raw);
64
+ }
65
+ catch {
66
+ return null;
67
+ }
68
+ if (parsed === null || typeof parsed !== 'object')
69
+ return null;
70
+ deepReplaceAssetPath(parsed, replacement);
71
+ return JSON.stringify(parsed);
72
+ };
73
+ if (Array.isArray(value)) {
74
+ for (let i = 0; i < value.length; i++) {
75
+ const item = value[i];
76
+ if (typeof item === 'string') {
77
+ if (item.includes(ASSET_PATH_TOKEN)) {
78
+ value[i] = substitute(item);
79
+ }
80
+ }
81
+ else {
82
+ deepReplaceAssetPath(item, replacement);
83
+ }
84
+ }
85
+ return;
86
+ }
87
+ const obj = value;
88
+ for (const key of Object.keys(obj)) {
89
+ const item = obj[key];
90
+ if (typeof item === 'string') {
91
+ if (JSON_WRAPPER_KEYS.has(key) && item.includes(ASSET_PATH_TOKEN)) {
92
+ const next = substituteJsonWrapper(item);
93
+ if (next !== null) {
94
+ obj[key] = next;
95
+ continue;
96
+ }
97
+ }
98
+ if (item.includes(ASSET_PATH_TOKEN)) {
99
+ obj[key] = substitute(item);
100
+ }
101
+ }
102
+ else {
103
+ deepReplaceAssetPath(item, replacement);
104
+ }
105
+ }
106
+ }
107
+ export function substituteAssetPathInComposite(composite, compositeSrc) {
108
+ const replacement = assetPathFrom(compositeSrc);
109
+ for (const component of composite.components) {
110
+ for (const [, componentData] of component.data) {
111
+ const payload = getJsonPayload(componentData);
112
+ if (payload !== undefined)
113
+ deepReplaceAssetPath(payload, replacement);
114
+ }
115
+ }
116
+ }
117
+ const COMPONENTS_PREFIXES = ['inspector::'];
118
+ export function stripComponents(composite) {
119
+ const kept = composite.components.filter(c => !COMPONENTS_PREFIXES.some(prefix => c.name.startsWith(prefix)));
120
+ if (kept.length === composite.components.length)
121
+ return composite;
122
+ return { ...composite, components: kept };
123
+ }
124
+ function idKey(componentName, entityId) {
125
+ return `${componentName}:${entityId}`;
126
+ }
127
+ function parsePlaceholderRef(ref) {
128
+ const self = ref.match(SELF_REF);
129
+ if (self)
130
+ return { componentName: self[1] };
131
+ const cross = ref.match(CROSS_ENTITY_REF);
132
+ if (cross)
133
+ return { componentName: cross[2], entityId: Number(cross[1]) };
134
+ return null;
135
+ }
136
+ export function allocateIdsForSpawnedComponents(engine, composite, spawnedEntityByCompositeId) {
137
+ const ids = new Map();
138
+ for (const component of composite.components) {
139
+ if (!COMPONENTS_WITH_ID.includes(component.name))
140
+ continue;
141
+ const ComponentDef = engine.getComponentOrNull(component.name);
142
+ if (!ComponentDef)
143
+ continue;
144
+ for (const [compositeEntityId, componentData] of component.data) {
145
+ const payload = getJsonPayload(componentData);
146
+ if (!payload || `${payload.id}` !== '{self}')
147
+ continue;
148
+ const destEntity = spawnedEntityByCompositeId.get(compositeEntityId);
149
+ if (destEntity === undefined)
150
+ continue;
151
+ const newId = getNextId(engine);
152
+ ids.set(idKey(component.name, compositeEntityId), newId);
153
+ const live = ComponentDef.getMutableOrNull(destEntity);
154
+ if (live)
155
+ live.id = newId;
156
+ }
157
+ }
158
+ return ids;
159
+ }
160
+ export function remapTriggerReferences(engine, spawnedEntities, ids) {
161
+ const { Triggers } = getComponents(engine);
162
+ const resolve = (idRef, ownCompositeEntityId) => {
163
+ if (typeof idRef !== 'string')
164
+ return idRef;
165
+ const parsed = parsePlaceholderRef(idRef);
166
+ if (!parsed)
167
+ return idRef;
168
+ const lookupEntityId = parsed.entityId ?? ownCompositeEntityId;
169
+ return ids.get(idKey(parsed.componentName, lookupEntityId)) ?? idRef;
170
+ };
171
+ for (const [destEntity, compositeEntityId] of spawnedEntities) {
172
+ const triggers = Triggers.getMutableOrNull(destEntity);
173
+ if (!triggers)
174
+ continue;
175
+ for (const trigger of triggers.value) {
176
+ if (trigger.conditions) {
177
+ for (const condition of trigger.conditions) {
178
+ condition.id = resolve(condition.id, compositeEntityId);
179
+ }
180
+ }
181
+ for (const action of trigger.actions) {
182
+ action.id = resolve(action.id, compositeEntityId);
183
+ }
184
+ }
185
+ }
186
+ }
187
+ export function remapSyncComponentIds(engine, spawnedEntities) {
188
+ const { SyncComponents } = getExplorerComponents(engine);
189
+ for (const [destEntity] of spawnedEntities) {
190
+ const sync = SyncComponents.getOrNull(destEntity);
191
+ if (!sync || !Array.isArray(sync.componentIds))
192
+ continue;
193
+ let changed = false;
194
+ const resolved = sync.componentIds.reduce((acc, id) => {
195
+ if (typeof id === 'number') {
196
+ acc.push(id);
197
+ }
198
+ else if (typeof id === 'string') {
199
+ changed = true;
200
+ const component = engine.getComponentOrNull(id);
201
+ if (component)
202
+ acc.push(component.componentId);
203
+ else
204
+ console.error(`[asset-packs] SyncComponents references unknown component "${id}"`);
205
+ }
206
+ return acc;
207
+ }, []);
208
+ if (changed)
209
+ SyncComponents.createOrReplace(destEntity, { componentIds: resolved });
210
+ }
211
+ }
212
+ export function initializeComponentIdsFromComposite(engine, composite, entityMap) {
213
+ const spawnedEntityByCompositeId = new Map();
214
+ const inverse = [];
215
+ for (const [src, dst] of entityMap.entries()) {
216
+ spawnedEntityByCompositeId.set(src, dst);
217
+ inverse.push([dst, src]);
218
+ }
219
+ const ids = allocateIdsForSpawnedComponents(engine, composite, spawnedEntityByCompositeId);
220
+ remapTriggerReferences(engine, inverse, ids);
221
+ remapSyncComponentIds(engine, inverse);
222
+ }
223
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWNoaWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FkZC1jaGlsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxQkEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBa0IsTUFBTSxXQUFXLENBQUM7QUFDMUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFJckQsTUFBTSxnQkFBZ0IsR0FBRyxhQUFhLENBQUM7QUFDdkMsTUFBTSxRQUFRLEdBQUcsaUJBQWlCLENBQUM7QUFDbkMsTUFBTSxnQkFBZ0IsR0FBRyxrQkFBa0IsQ0FBQztBQWE1QyxNQUFNLFVBQVUsY0FBYyxDQUFjLGFBQWlDO0lBQzNFLElBQUksYUFBYSxFQUFFLElBQUksRUFBRSxLQUFLLEtBQUssTUFBTTtRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzVELE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFxQixDQUFDO0FBQ2xELENBQUM7QUFTRCxTQUFTLGNBQWMsQ0FBQyxDQUFTO0lBQy9CLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUIsTUFBTSxHQUFHLEdBQWEsRUFBRSxDQUFDO0lBQ3pCLEtBQUssTUFBTSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7UUFDM0IsSUFBSSxHQUFHLEtBQUssRUFBRSxJQUFJLEdBQUcsS0FBSyxHQUFHO1lBQUUsU0FBUztRQUN4QyxJQUFJLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNqQixJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUk7Z0JBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzs7Z0JBQ2hFLEdBQUcsQ0FBQyxHQUFHLEVB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Q0FBQyxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1FBQzdDLDBCQUEwQixDQUFDLEdBQUcsQ0FBQyxHQUFhLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbkQsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxNQUFNLEdBQUcsR0FBRywrQkFBK0IsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLDBCQUEwQixDQUFDLENBQUM7SUFDM0Ysc0JBQXNCLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM3QyxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDekMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUnVudGltZSBob29rcyBmb3IgYXNzZXQtcGFjayBjb21wb3NpdGVzIGxvYWRlZCBvbi1kZW1hbmQgKGkuZS4gdmlhIHRoZVxuICogU1BBV05fRU5USVRZIGFjdGlvbikuIENvdmVyczpcbiAqXG4gKiAgIDEuIGB7YXNzZXRQYXRofWAgc3Vic3RpdHV0aW9uIGF0IGNvbXBvc2l0ZS1sb2FkIHRpbWUsIHNvIG9uLWRpc2sgYXNzZXRcbiAqICAgICAgcGFja3MgY2FuIGtlZXAgdGhlaXIgcG9ydGFibGUgcGxhY2Vob2xkZXIgY29udmVudGlvbi5cbiAqICAgMi4gSUQgcHJlLWFsbG9jYXRpb24gKyBUcmlnZ2VyIHJlZmVyZW5jZSByZW1hcCBhdCBzcGF3biB0aW1lLCBzbyB0aGVcbiAqICAgICAgY29tcG9zaXRlJ3MgYHtzZWxmfWAgLyBge3NlbGY6Y29tcG9uZW50fWAgLyBge2VudGl0eTpjb21wb25lbnR9YFxuICogICAgICBwbGFjZWhvbGRlcnMgcmVzb2x2ZSB0byBsaXZlIG51bWVyaWMgSURzIGJlZm9yZSBpbml0QWN0aW9ucyAvXG4gKiAgICAgIGluaXRUcmlnZ2VycyBiaW5kIGhhbmRsZXJzLlxuICpcbiAqIEhlbHBlcnMgZXhwb3J0ZWQgaGVyZSAoYHN1YnN0aXR1dGVBc3NldFBhdGhJbkNvbXBvc2l0ZWAsXG4gKiBgYWxsb2NhdGVJZHNGb3JTcGF3bmVkQ29tcG9uZW50c2AsIGByZW1hcFRyaWdnZXJSZWZlcmVuY2VzYCwgYGRlZXBSZXBsYWNlQXNzZXRQYXRoYCxcbiAqIGBnZXRKc29uUGF5bG9hZGApIGFyZSB0aGUgY2Fub25pY2FsIGltcGxlbWVudGF0aW9ucyBvZiBhc3NldC1wYWNrIGNvbXBvc2l0ZVxuICogY29udmVudGlvbnMuIEluc3BlY3RvciBhZGQtYXNzZXQgYW5kIGNyZWF0ZS1jdXN0b20tYXNzZXQgb3BlcmF0aW9ucyBjb25zdW1lXG4gKiB0aGVtLiBNYXRlcmlhbC92aWRlb1RleHR1cmUgcGFyc2luZyBhbmQgTm9kZXMtdHJlZSB1cGRhdGVzIHN0YXkgaW5zcGVjdG9yLXNpZGVcbiAqIOKAlCB0aGV5IHRvdWNoIGVkaXRvci1zcGVjaWZpYyBydW50aW1lIHN0YXRlLlxuICovXG5cbmltcG9ydCB0eXBlIHsgRW50aXR5LCBJRW5naW5lIH0gZnJvbSAnQGRjbC9lY3MnO1xuaW1wb3J0IHsgdHlwZSBDb21wb3NpdGUgfSBmcm9tICdAZGNsL2Vjcyc7XG5pbXBvcnQgeyBDT01QT05FTlRTX1dJVEhfSUQsIGdldE5leHRJZCwgdHlwZSBFbnRpdHlNYXAgfSBmcm9tICcuL21hcHBpbmcnO1xuaW1wb3J0IHsgZ2V0Q29tcG9uZW50cyB9IGZyb20gJy4vZGVmaW5pdGlvbnMnO1xuaW1wb3J0IHsgZ2V0RXhwbG9yZXJDb21wb25lbnRzIH0gZnJvbSAnLi9jb21wb25lbnRzJztcblxuLy8g4pSA4pSA4pSAIENvbnN0YW50cyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuY29uc3QgQVNTRVRfUEFUSF9UT0tFTiA9ICd7YXNzZXRQYXRofSc7XG5jb25zdCBTRUxGX1JFRiA9IC9eXFx7c2VsZjooLispXFx9JC87XG5jb25zdCBDUk9TU19FTlRJVFlfUkVGID0gL15cXHsoXFxkKyk6KC4rKVxcfSQvO1xuXG4vLyDilIDilIDilIAgdHMtcHJvdG8gc2hhcGUgaGVscGVycyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vXG4vLyBgQ29tcG9uZW50RGF0YWAgaXMgZ2VuZXJhdGVkIGJ5IHRzLXByb3RvIHdpdGggYSBkaXNjcmltaW5hdGVkIHVuaW9uOlxuLy8gICB7IGRhdGE6IHsgJGNhc2U6ICdqc29uJywganNvbjogVCB9IHwgeyAkY2FzZTogJ2JpbmFyeScsIGJpbmFyeTogVWludDhBcnJheSB9IHwgdW5kZWZpbmVkIH1cbi8vIEFsbCB0aHJlZSBydW50aW1lIGNvbmNlcm5zIGJlbG93IHJlYWQgdGhlIEpTT04tc2hhcGVkIHBheWxvYWQsIHNvIGV2ZXJ5XG4vLyBhY2Nlc3MgZ29lcyB0aHJvdWdoIGBnZXRKc29uUGF5bG9hZGAuIElmIHRoZSB1cHN0cmVhbSBzaGFwZSBjaGFuZ2VzLCB0aGlzXG4vLyBpcyB0aGUgc2luZ2xlIHVwZGF0ZSBwb2ludC5cblxudHlwZSBDb21wb3NpdGVDb21wb25lbnQgPSBDb21wb3NpdGUuRGVmaW5pdGlvblsnY29tcG9uZW50cyddW251bWJlcl07XG50eXBlIENvbXBvbmVudERhdGFFbnRyeSA9IFJldHVyblR5cGU8Q29tcG9zaXRlQ29tcG9uZW50WydkYXRhJ11bJ2dldCddPjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEpzb25QYXlsb2FkPFQgPSB1bmtub3duPihjb21wb25lbnREYXRhOiBDb21wb25lbnREYXRhRW50cnkpOiBUIHwgdW5kZWZpbmVkIHtcbiAgaWYgKGNvbXBvbmVudERhdGE/LmRhdGE/LiRjYXNlICE9PSAnanNvbicpIHJldHVybiB1bmRlZmluZWQ7XG4gIHJldHVybiBjb21wb25lbnREYXRhLmRhdGEuanNvbiBhcyBUIHwgdW5kZWZpbmVkO1xufVxuXG4vLyDilIDilIDilIAgYHthc3NldFBhdGh9YCBzdWJzdGl0dXRpb24g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbi8vIElubGluZSBQT1NJWC1ub3JtYWxpemUuIFdlIGNhbid0IGltcG9ydCBgcGF0aGAgaGVyZTogYGFkZC1jaGlsZC50c2AgaXNcbi8vIGJ1bmRsZWQgaW50byBydW50aW1lIHNjZW5lcyAoc2FuZGJveGVkOyBubyBOb2RlKSwgYW5kIGBwYXRoLWJyb3dzZXJpZnlgXG4vLyBpcyBub3QgYSBkZXBlbmRlbmN5LiBUaGUgbm9ybWFsaXplciB3YWxrcyBzZWdtZW50cywgZHJvcHMgYC5gLCBwb3BzIG9uXG4vLyBgLi5gLCBhbmQgam9pbnMgd2l0aCBgL2Ag4oCUIG1hdGNoaW5nIGBwYXRoLnBvc2l4Lm5vcm1hbGl6ZWAgZm9yIHRoZVxuLy8gc3Vic3RyaW5nIHNoYXBlcyB3ZSBmZWVkIGl0LlxuZnVuY3Rpb24gbm9ybWFsaXplUG9zaXgocDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgc2VnbWVudHMgPSBwLnNwbGl0KCcvJyk7XG4gIGNvbnN0IG91dDogc3RyaW5nW10gPSBbXTtcbiAgZm9yIChjb25zdCBzZWcgb2Ygc2VnbWVudHMpIHtcbiAgICBpZiAoc2VnID09PSAnJyB8fCBzZWcgPT09ICcuJykgY29udGludWU7XG4gICAgaWYgKHNlZyA9PT0gJy4uJykge1xuICAgICAgaWYgKG91dC5sZW5ndGggPT09IDAgfHwgb3V0W291dC5sZW5ndGggLSAxXSA9PT0gJy4uJykgb3V0LnB1c2goJy4uJyk7XG4gICAgICBlbHNlIG91dC5wb3AoKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBvdXQucHVzaChzZWcpO1xuICB9XG4gIGNvbnN0IHByZWZpeCA9IHAuc3RhcnRzV2l0aCgnLycpID8gJy8nIDogJyc7XG4gIHJldHVybiBwcmVmaXggKyBvdXQuam9pbignLycpO1xufVxuXG4vLyBQYXRoLWNvbnRhaW5tZW50IGNob2tlcG9pbnQgZm9yIGB7YXNzZXRQYXRofWAgc3Vic3RpdHV0aW9uLiBHaXZlbiB0aGVcbi8vIHBvc3Qtc3Vic3RpdHV0aW9uIHBhdGggY2FuZGlkYXRlIGBqb2luZWRgIGFuZCB0aGUgYXNzZXQgZGlyZWN0b3J5XG4vLyBgcmVwbGFjZW1lbnRgLCByZXR1cm4gdGhlIG5vcm1hbGl6ZWQgYGpvaW5lZGAgaWYgYW5kIG9ubHkgaWZcbi8vIFBPU0lYLW5vcm1hbGl6YXRpb24ga2VlcHMgaXQgaW5zaWRlIGByZXBsYWNlbWVudGAgKGVxdWFsIHRvIGl0IG9yXG4vLyBwcmVmaXhlZCBieSBgcmVwbGFjZW1lbnQgKyAnLydgKS4gUmV0dXJucyBgbnVsbGAgZm9yIHRyYXZlcnNhbCBwYXlsb2Fkc1xuLy8gbGlrZSBge2Fzc2V0UGF0aH0vLi4vLi4vZXRjL3Bhc3N3ZGAuXG4vL1xuLy8gUmlza3ktQVBJIG5vdGU6IHRoaXMgaXMgdGhlIHNpbmdsZSBzZWN1cml0eSBwcmltaXRpdmUgZm9yIHRoZVxuLy8gYHthc3NldFBhdGh9YCB3YWxrZXIuIERvIG5vdCBzd2FwIGBub3JtYWxpemVQb3NpeGAgZm9yIGEgcmVnZXggYC4uYFxuLy8gYmxhY2tsaXN0IOKAlCB0aGF0IHJlamVjdHMgbGVnaXRpbWF0ZSBzaWJsaW5nIHBhdGhzLlxuZnVuY3Rpb24gY29udGFpbkFzc2V0UGF0aChyZXBsYWNlbWVudDogc3RyaW5nLCBqb2luZWQ6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAvLyBObyByZXBsYWNlbWVudCAoY29tcG9zaXRlU3JjIGhhZCBubyBgL2ApOiBhbnkgdHJhdmVyc2FsIGlzIHN1c3BpY2lvdXNcbiAgLy8gYmVjYXVzZSB0aGUgYXNzZXQgZGlyIGlzIHRoZSBpbXBsaWNpdCBjd2QuIEFwcGx5IHRoZSBzYW1lIGNvbnRhaW5tZW50XG4gIC8vIGxvZ2ljIGFnYWluc3QgYSBgLmAgYmFzZS5cbiAgY29uc3QgYmFzZSA9IHJlcGxhY2VtZW50ID09PSAnJyA/ICcuJyA6IG5vcm1hbGl6ZVBvc2l4KHJlcGxhY2VtZW50KTtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZVBvc2l4KGpvaW5lZCk7XG4gIGlmIChub3JtYWxpemVkID09PSBiYXNlKSByZXR1cm4gbm9ybWFsaXplZDtcbiAgaWYgKG5vcm1hbGl6ZWQuc3RhcnRzV2l0aChiYXNlICsgJy8nKSkgcmV0dXJuIG5vcm1hbGl6ZWQ7XG4gIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBhc3NldFBhdGhGcm9tKGNvbXBvc2l0ZVNyYzogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgc2xhc2ggPSBjb21wb3NpdGVTcmMubGFzdEluZGV4T2YoJy8nKTtcbiAgcmV0dXJuIHNsYXNoID49IDAgPyBjb21wb3NpdGVTcmMuc3Vic3RyaW5nKDAsIHNsYXNoKSA6ICcnO1xufVxuXG4vLyBTdHJpbmdpZmllZC1KU09OIGNhcnJpZXIgY29udmVudGlvbi4gQXNzZXQtcGFja3MgQWN0aW9ucyBlbmNvZGUgdGhlaXJcbi8vIHBlci1hY3Rpb24gcGF5bG9hZCBhcyBhIEpTT04tZW5jb2RlZCBzdHJpbmcgb24gdGhlIGBqc29uUGF5bG9hZGAgZmllbGRcbi8vIChzZWUgYFJFU09VUkNFX0FDVElPTl9UWVBFU2AgaW4gaW5zcGVjdG9yL2NyZWF0ZS1jdXN0b20tYXNzZXQpLiBXaGVuIHRoZVxuLy8gd2Fsa2VyIGVuY291bnRlcnMgdGhpcyBmaWVsZCwgbmHDr3ZlIHN0cmluZy1sZXZlbCBzdWJzdGl0dXRpb24gd291bGQgdHJlYXRcbi8vIHRoZSB3aG9sZSBKU09OIGxpdGVyYWwgYXMgYSBwYXRoIGNhbmRpZGF0ZSBhbmQgYGNvbnRhaW5Bc3NldFBhdGhgIHdvdWxkXG4vLyByZWplY3QgaXQgKHRoZSBzdHJpbmcgc3RhcnRzIHdpdGggYHtgLCBub3QgdGhlIGFzc2V0IGRpciksIGNvbGxhcHNpbmcgdGhlXG4vLyBwYXlsb2FkIHRvIHRoZSBiYXJlIHJlcGxhY2VtZW50LiBQYXJzZSDihpIgcmVjdXJzZSDihpIgcmUtc2VyaWFsaXplIGtlZXBzIHRoZVxuLy8gY29udGFpbm1lbnQgY2hva2Vwb2ludCBpbnRhY3QgZm9yIHRoZSBhY3R1YWwgcGF0aCBmaWVsZHMgKmluc2lkZSogdGhlXG4vLyBwYXlsb2FkLlxuLy9cbi8vIElmIGEgZnV0dXJlIGNvbXBvbmVudCBpbnRyb2R1Y2VzIGEgZGlmZmVyZW50IHN0cmluZ2lmaWVkLUpTT04gd3JhcHBlciBrZXksXG4vLyBhZGQgdGhlIGtleSBoZXJlLiBOb24tYGpzb25QYXlsb2FkYCBzdHJpbmdzIGNvbnRpbnVlIHRvIGZsb3cgdGhyb3VnaCB0aGVcbi8vIHBsYWluIHBhdGgtc3Vic3RpdHV0aW9uIGJyYW5jaC5cbmNvbnN0IEpTT05fV1JBUFBFUl9LRVlTID0gbmV3IFNldChbJ2pzb25QYXlsb2FkJ10pO1xuXG4vKipcbiAqIFJlcGxhY2UgYHthc3NldFBhdGh9YCB3aXRoIGByZXBsYWNlbWVudGAgaW4gZXZlcnkgc3RyaW5nIHZhbHVlIHJlYWNoYWJsZVxuICogZnJvbSBgdmFsdWVgLCBpbmNsdWRpbmcgc3RyaW5ncyBuZXN0ZWQgaW5zaWRlIHN0cmluZ2lmaWVkIHBheWxvYWRzXG4gKiAoZS5nLiBgYXNzZXQtcGFja3M6OkFjdGlvbnNbaV0uanNvblBheWxvYWRgKS4gTXV0YXRlcyBpbiBwbGFjZS4gSWRlbXBvdGVudC5cbiAqXG4gKiBDb252ZW50aW9ucyBmb3IgZnV0dXJlIGNvbnRyaWJ1dG9ycyBhZGRpbmcgYHthc3NldFBhdGh9YC1iZWFyaW5nIGZpZWxkczpcbiAqICAgLSBQbGFpbiBwYXRoIHN0cmluZyBhdCBhbnkgZGVwdGg6IGp1c3Qgd29ya3MgKHN0cnVjdHVyYWwgcmVjdXJzaW9uKS5cbiAqICAgLSBTdHJpbmdpZmllZC1KU09OIHdyYXBwZXI6IG5hbWUgdGhlIGZpZWxkIGBqc29uUGF5bG9hZGAgKG9yIGV4dGVuZFxuICogICAgIGBKU09OX1dSQVBQRVJfS0VZU2AgYWJvdmUpLlxuICogICAtIEF2b2lkIGVtYmVkZGluZyBge2Fzc2V0UGF0aH1gIGluc2lkZSBsYXJnZXIgbm9uLXBhdGggc3RyaW5ncyAoVVJMcyB3aXRoXG4gKiAgICAgcXVlcnkgcGFyYW1ldGVycyBldGMuKSDigJQgdGhlIGNvbnRhaW5tZW50IGNoZWNrIHJlamVjdHMgdGhvc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWVwUmVwbGFjZUFzc2V0UGF0aCh2YWx1ZTogdW5rbm93biwgcmVwbGFjZW1lbnQ6IHN0cmluZyk6IHZvaWQge1xuICBpZiAodmFsdWUgPT09IG51bGwgfHwgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JykgcmV0dXJuO1xuXG4gIGNvbnN0IHN1YnN0aXR1dGUgPSAocmF3OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgIGNvbnN0IGpvaW5lZCA9IHJhdy5zcGxpdChBU1NFVF9QQVRIX1RPS0VOKS5qb2luKHJlcGxhY2VtZW50KTtcbiAgICAvLyBTdHJpbmdzIHRoYXQgZG9uJ3QgY29udGFpbiBhbnkgcGF0aCBzZXBhcmF0b3IgYWZ0ZXIgc3Vic3RpdHV0aW9uXG4gICAgLy8gY2FuJ3QgdHJhdmVyc2Ug4oCUIHNraXAgdGhlIGNvbnRhaW5tZW50IGNoZWNrIGZvciBwZXJmIChlLmcuXG4gICAgLy8gcGxhY2Vob2xkZXJzIHVzZWQgYXMgbGFiZWxzKS5cbiAgICBpZiAoIWpvaW5lZC5pbmNsdWRlcygnLycpICYmICFqb2luZWQuaW5jbHVkZXMoJ1xcXFwnKSkgcmV0dXJuIGpvaW5lZDtcbiAgICBjb25zdCBjb250YWluZWQgPSBjb250YWluQXNzZXRQYXRoKHJlcGxhY2VtZW50LCBqb2luZWQpO1xuICAgIGlmIChjb250YWluZWQgIT09IG51bGwpIHJldHVybiBjb250YWluZWQ7XG4gICAgLy8gVHJhdmVyc2FsIGRldGVjdGVkLiBMb2cgb25jZSBhbmQgZmFsbCBiYWNrIHRvIGByZXBsYWNlbWVudGAgaXRzZWxmLFxuICAgIC8vIHdoaWNoIGlzIGF0IG1pbmltdW0gc3ludGFjdGljYWxseSBpbnNpZGUgdGhlIGFzc2V0IGRpci4gUmV0dXJuaW5nXG4gICAgLy8gdGhlIG9yaWdpbmFsIGByYXdgIHdvdWxkIGxlYXZlIHRoZSB1bnJlc29sdmVkIGB7YXNzZXRQYXRofWAgdG9rZW5cbiAgICAvLyBpbiB0aGUgb3V0cHV0LCBicmVha2luZyB0aGUgcnVudGltZSBtb3JlIHZpc2libHk7IHJldHVybmluZyB0aGVcbiAgICAvLyBiYXJlIGByZXBsYWNlbWVudGAgcmVzdWx0cyBpbiBhIDQwNC1vbi1sb2FkIHRoYXQncyBlYXNpZXIgdG8gZGVidWcuXG4gICAgLy8gVXNlIGBjb25zb2xlLmVycm9yYCAobm90IGB3YXJuYCk6IHRoZSBTREsgcnVudGltZSBgY29uc29sZWAgc2hpbVxuICAgIC8vIGV4cG9zZXMgb25seSBgbG9nYCBhbmQgYGVycm9yYC4gSW5zcGVjdG9yIC8gTm9kZSBjb25zdW1lcnMgc3RpbGxcbiAgICAvLyBzdXJmYWNlIHRoaXMgdGhyb3VnaCB0aGVpciBub3JtYWwgc3RkZXJyLlxuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBgW2Fzc2V0LXBhY2tzXSByZWplY3RlZCB7YXNzZXRQYXRofSBzdWJzdGl0dXRpb24gdGhhdCBlc2NhcGVzIGFzc2V0IGRpcjogJHtKU09OLnN0cmluZ2lmeShyYXcpfSAtPiAke0pTT04uc3RyaW5naWZ5KGpvaW5lZCl9YCxcbiAgICApO1xuICAgIHJldHVybiByZXBsYWNlbWVudDtcbiAgfTtcblxuICAvLyBQYXJzZSBhIHN0cmluZ2lmaWVkLUpTT04gd3JhcHBlciwgcmVjdXJzZSBpbnRvIHRoZSBwYXJzZWQgdmFsdWUgd2l0aCB0aGVcbiAgLy8gc2FtZSBgcmVwbGFjZW1lbnRgLCBhbmQgcmUtc2VyaWFsaXplLiBSZXR1cm5zIHRoZSBuZXcgc3RyaW5nIG9uIHN1Y2Nlc3NcbiAgLy8gb3IgYG51bGxgIGlmIHRoZSB2YWx1ZSBpcyBub3QgYSBKU09OIG9iamVjdC9hcnJheSDigJQgY2FsbGVycyBmYWxsIGJhY2sgdG9cbiAgLy8gdGhlIHBsYWluIHBhdGgtc3Vic3RpdHV0aW9uIGJyYW5jaCBpbiB0aGF0IGNhc2UuXG4gIGNvbnN0IHN1YnN0aXR1dGVKc29uV3JhcHBlciA9IChyYXc6IHN0cmluZyk6IHN0cmluZyB8IG51bGwgPT4ge1xuICAgIC8vIENoZWFwIHNoYXBlIGNoZWNrIGJlZm9yZSBhdHRlbXB0aW5nIHBhcnNlIOKAlCBza2lwcyBwcmltaXRpdmVzLCBwYXRocyxcbiAgICAvLyBhbmQgbGFiZWxzIHRoYXQgaGFwcGVuIHRvIGxpdmUgdW5kZXIgYSBganNvblBheWxvYWRgIGtleS5cbiAgICBjb25zdCBmaXJzdCA9IHJhdy5jaGFyQ29kZUF0KDApO1xuICAgIGlmIChmaXJzdCAhPT0gMHg3YiAvKiAneycgKi8gJiYgZmlyc3QgIT09IDB4NWIgLyogJ1snICovKSByZXR1cm4gbnVsbDtcbiAgICBsZXQgcGFyc2VkOiB1bmtub3duO1xuICAgIHRyeSB7XG4gICAgICBwYXJzZWQgPSBKU09OLnBhcnNlKHJhdyk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKHBhcnNlZCA9PT0gbnVsbCB8fCB0eXBlb2YgcGFyc2VkICE9PSAnb2JqZWN0JykgcmV0dXJuIG51bGw7XG4gICAgZGVlcFJlcGxhY2VBc3NldFBhdGgocGFyc2VkLCByZXBsYWNlbWVudCk7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHBhcnNlZCk7XG4gIH07XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgaXRlbSA9IHZhbHVlW2ldO1xuICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAoaXRlbS5pbmNsdWRlcyhBU1NFVF9QQVRIX1RPS0VOKSkge1xuICAgICAgICAgIHZhbHVlW2ldID0gc3Vic3RpdHV0ZShpdGVtKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVlcFJlcGxhY2VBc3NldFBhdGgoaXRlbSwgcmVwbGFjZW1lbnQpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBvYmogPSB2YWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMob2JqKSkge1xuICAgIGNvbnN0IGl0ZW0gPSBvYmpba2V5XTtcbiAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAoSlNPTl9XUkFQUEVSX0tFWVMuaGFzKGtleSkgJiYgaXRlbS5pbmNsdWRlcyhBU1NFVF9QQVRIX1RPS0VOKSkge1xuICAgICAgICBjb25zdCBuZXh0ID0gc3Vic3RpdHV0ZUpzb25XcmFwcGVyKGl0ZW0pO1xuICAgICAgICBpZiAobmV4dCAhPT0gbnVsbCkge1xuICAgICAgICAgIG9ialtrZXldID0gbmV4dDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGl0ZW0uaW5jbHVkZXMoQVNTRVRfUEFUSF9UT0tFTikpIHtcbiAgICAgICAgb2JqW2tleV0gPSBzdWJzdGl0dXRlKGl0ZW0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBkZWVwUmVwbGFjZUFzc2V0UGF0aChpdGVtLCByZXBsYWNlbWVudCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJzdGl0dXRlQXNzZXRQYXRoSW5Db21wb3NpdGUoXG4gIGNvbXBvc2l0ZTogQ29tcG9zaXRlLkRlZmluaXRpb24sXG4gIGNvbXBvc2l0ZVNyYzogc3RyaW5nLFxuKTogdm9pZCB7XG4gIGNvbnN0IHJlcGxhY2VtZW50ID0gYXNzZXRQYXRoRnJvbShjb21wb3NpdGVTcmMpO1xuICBmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiBjb21wb3NpdGUuY29tcG9uZW50cykge1xuICAgIGZvciAoY29uc3QgWywgY29tcG9uZW50RGF0YV0gb2YgY29tcG9uZW50LmRhdGEpIHtcbiAgICAgIGNvbnN0IHBheWxvYWQgPSBnZXRKc29uUGF5bG9hZChjb21wb25lbnREYXRhKTtcbiAgICAgIGlmIChwYXlsb2FkICE9PSB1bmRlZmluZWQpIGRlZXBSZXBsYWNlQXNzZXRQYXRoKHBheWxvYWQsIHJlcGxhY2VtZW50KTtcbiAgICB9XG4gIH1cbn1cblxuLy8gQ29tcG9uZW50IG5hbWUgcHJlZml4ZXMgdG8gc3RyaXAgYmVmb3JlIGluc3RhbmNpbmcgYSBzcGF3bmVkIGNvbXBvc2l0ZS4gVG9kYXlcbi8vIHRoaXMgaXMgZWRpdG9yLW9ubHkgbWV0YWRhdGE6IHRoZSBJbnNwZWN0b3IgYmFrZXMgYGluc3BlY3Rvcjo6KmAgY29tcG9uZW50c1xuLy8gKENvbmZpZywgU2VsZWN0aW9uLCBOb2RlcywgSGlkZSwgTG9jaywg4oCmKSBpbnRvIGF1dGhvcmVkIGNvbXBvc2l0ZXMgZm9yIGl0cyBvd25cbi8vIHVzZS4gVGhleSBjYXJyeSBubyBganNvblNjaGVtYWAsIGFyZSByZWdpc3RlcmVkIG5vd2hlcmUgaW4gdGhlIHNjZW5lIHJ1bnRpbWUsXG4vLyBhbmQgYXJlIG1lYW5pbmdsZXNzIG9uY2UgZGVwbG95ZWQg4oCUIHNvIGBDb21wb3NpdGUuaW5zdGFuY2VgIHRocm93cyBvbiB0aGVtXG4vLyAoXCJyZWZlcmVuY2VzIHVuZGVmaW5lZCBjb21wb25lbnRcIikuIEFkZCBmdXJ0aGVyIHByZWZpeGVzIGhlcmUgaWYgbW9yZSBuZWVkXG4vLyBzdHJpcHBpbmcuXG5jb25zdCBDT01QT05FTlRTX1BSRUZJWEVTID0gWydpbnNwZWN0b3I6OiddO1xuXG4vKipcbiAqIFJldHVybiBhIGNvbXBvc2l0ZSB3aXRoIGV2ZXJ5IGNvbXBvbmVudCB3aG9zZSBuYW1lIG1hdGNoZXMgYVxuICogYENPTVBPTkVOVFNfUFJFRklYRVNgIGVudHJ5IHJlbW92ZWQuXG4gKlxuICogUHVyZTogcmV0dXJucyB0aGUgc2FtZSByZWZlcmVuY2Ugd2hlbiB0aGVyZSBpcyBub3RoaW5nIHRvIHN0cmlwIChzbyBjYWxsZXJzIGNhblxuICogY2hlYXBseSBkZXRlY3QgYSBuby1vcCBhbmQgYXZvaWQgY29weWluZyksIG90aGVyd2lzZSBhIHNoYWxsb3cgY29weSB3aXRoIGFcbiAqIGZpbHRlcmVkIGBjb21wb25lbnRzYCBhcnJheS4gRW50aXRpZXMgYXJlIHVudG91Y2hlZCDigJQgb25seSB0aGUgc3RyaXBwZWRcbiAqIGNvbXBvbmVudHMgYXR0YWNoZWQgdG8gdGhlbSBhcmUgZHJvcHBlZCwgc28gZW50aXR5IG1hcHBpbmcgYW5kIElEIHJlbWFwIGFyZVxuICogdW5hZmZlY3RlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwQ29tcG9uZW50cyhjb21wb3NpdGU6IENvbXBvc2l0ZS5EZWZpbml0aW9uKTogQ29tcG9zaXRlLkRlZmluaXRpb24ge1xuICBjb25zdCBrZXB0ID0gY29tcG9zaXRlLmNvbXBvbmVudHMuZmlsdGVyKFxuICAgIGMgPT4gIUNPTVBPTkVOVFNfUFJFRklYRVMuc29tZShwcmVmaXggPT4gYy5uYW1lLnN0YXJ0c1dpdGgocHJlZml4KSksXG4gICk7XG4gIGlmIChrZXB0Lmxlbmd0aCA9PT0gY29tcG9zaXRlLmNvbXBvbmVudHMubGVuZ3RoKSByZXR1cm4gY29tcG9zaXRlO1xuICByZXR1cm4geyAuLi5jb21wb3NpdGUsIGNvbXBvbmVudHM6IGtlcHQgfTtcbn1cblxuLy8g4pSA4pSA4pSAIElEIGFsbG9jYXRpb24gKyBUcmlnZ2VyIHJlZmVyZW5jZSByZW1hcCAoc3Bhd24tdGltZSkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbnR5cGUgSWRNYXAgPSBNYXA8c3RyaW5nLCBudW1iZXI+O1xuXG5mdW5jdGlvbiBpZEtleShjb21wb25lbnROYW1lOiBzdHJpbmcsIGVudGl0eUlkOiBudW1iZXIpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7Y29tcG9uZW50TmFtZX06JHtlbnRpdHlJZH1gO1xufVxuXG5pbnRlcmZhY2UgUGFyc2VkUmVmIHtcbiAgY29tcG9uZW50TmFtZTogc3RyaW5nO1xuICBlbnRpdHlJZD86IG51bWJlcjsgLy8gdW5kZWZpbmVkIOKHkiByZXNvbHZlIGFnYWluc3QgdGhlIHJlZidzIG93biBlbnRpdHlcbn1cblxuZnVuY3Rpb24gcGFyc2VQbGFjZWhvbGRlclJlZihyZWY6IHN0cmluZyk6IFBhcnNlZFJlZiB8IG51bGwge1xuICBjb25zdCBzZWxmID0gcmVmLm1hdGNoKFNFTEZfUkVGKTtcbiAgaWYgKHNlbGYpIHJldHVybiB7IGNvbXBvbmVudE5hbWU6IHNlbGZbMV0gfTtcbiAgY29uc3QgY3Jvc3MgPSByZWYubWF0Y2goQ1JPU1NfRU5USVRZX1JFRik7XG4gIGlmIChjcm9zcykgcmV0dXJuIHsgY29tcG9uZW50TmFtZTogY3Jvc3NbMl0sIGVudGl0eUlkOiBOdW1iZXIoY3Jvc3NbMV0pIH07XG4gIHJldHVybiBudWxsO1xufVxuXG4vLyBNaW5pbWFsIHN0cnVjdHVyYWwgc2hhcGUgd2UgbmVlZCBmcm9tIGFueSBpZC1iZWFyaW5nIGNvbXBvbmVudCBkZWZpbml0aW9uLlxuLy8gQWN0aW9ucyAvIFN0YXRlcyAvIENvdW50ZXIgYWxsIGV4cG9zZSBgZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpYCByZXR1cm5pbmdcbi8vIGEgdmFsdWUgd2l0aCBgLmlkOiBudW1iZXJgLCBidXQgdGhlaXIgYHZhbHVlYCBmaWVsZCB0eXBlcyBkaXZlcmdlIChBY3Rpb25bXVxuLy8gdnMgc3RyaW5nW10gdnMgbnVtYmVyKSB3aGljaCBtYWtlcyB0aGVtIGluY29tcGF0aWJsZSBhcyBhIFJlY29yZCB2YWx1ZVxuLy8gdHlwZS4gV2Ugb25seSBldmVyIHJlYWQvd3JpdGUgYC5pZGAsIHNvIHRoaXMgbmFycm93IHNoYXBlIGlzIGVub3VnaC5cbnR5cGUgSWRNdXRhYmxlQ29tcG9uZW50ID0ge1xuICBnZXRNdXRhYmxlT3JOdWxsKGVudGl0eTogRW50aXR5KTogeyBpZD86IG51bWJlciB9IHwgbnVsbDtcbn07XG5cbi8qKlxuICogRm9yIGVhY2ggY29tcG9zaXRlIGNvbXBvbmVudCBsaXN0ZWQgaW4gQ09NUE9ORU5UU19XSVRIX0lEIHdob3NlIHBheWxvYWRcbiAqIGNhcnJpZXMgYGlkOiAne3NlbGZ9J2AsIGFsbG9jYXRlIGEgZnJlc2ggbnVtZXJpYyBJRCB2aWEgYGdldE5leHRJZGAsXG4gKiB3cml0ZSBpdCBvbnRvIHRoZSBsaXZlIHNwYXduZWQgY29tcG9uZW50LCBhbmQgcmV0dXJuIHRoZSBtYXBwaW5nIHNvXG4gKiBUcmlnZ2VyIHJlZmVyZW5jZXMgY2FuIGJlIHJlbWFwcGVkIGluIGEgc2Vjb25kIHBhc3MuXG4gKlxuICogVGhlIGVuZ2luZSBsb29rcyB1cCB0aGUgY29tcG9uZW50IGRlZmluaXRpb24gYnkgbmFtZSBkaXJlY3RseSDigJQgbm9cbiAqIHBhcmFsbGVsIGBuYW1lIOKGkiBjb21wb25lbnRgIHRhYmxlIHRvIG1haW50YWluLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWxsb2NhdGVJZHNGb3JTcGF3bmVkQ29tcG9uZW50cyhcbiAgZW5naW5lOiBJRW5naW5lLFxuICBjb21wb3NpdGU6IENvbXBvc2l0ZS5EZWZpbml0aW9uLFxuICBzcGF3bmVkRW50aXR5QnlDb21wb3NpdGVJZDogTWFwPG51bWJlciwgRW50aXR5Pixcbik6IElkTWFwIHtcbiAgY29uc3QgaWRzOiBJZE1hcCA9IG5ldyBNYXAoKTtcbiAgZm9yIChjb25zdCBjb21wb25lbnQgb2YgY29tcG9zaXRlLmNvbXBvbmVudHMpIHtcbiAgICBpZiAoIUNPTVBPTkVOVFNfV0lUSF9JRC5pbmNsdWRlcyhjb21wb25lbnQubmFtZSkpIGNvbnRpbnVlO1xuICAgIGNvbnN0IENvbXBvbmVudERlZiA9IGVuZ2luZS5nZXRDb21wb25lbnRPck51bGwoY29tcG9uZW50Lm5hbWUpIGFzIElkTXV0YWJsZUNvbXBvbmVudCB8IG51bGw7XG4gICAgaWYgKCFDb21wb25lbnREZWYpIGNvbnRpbnVlO1xuXG4gICAgZm9yIChjb25zdCBbY29tcG9zaXRlRW50aXR5SWQsIGNvbXBvbmVudERhdGFdIG9mIGNvbXBvbmVudC5kYXRhKSB7XG4gICAgICBjb25zdCBwYXlsb2FkID0gZ2V0SnNvblBheWxvYWQ8eyBpZD86IHVua25vd24gfT4oY29tcG9uZW50RGF0YSk7XG4gICAgICBpZiAoIXBheWxvYWQgfHwgYCR7cGF5bG9hZC5pZH1gICE9PSAne3NlbGZ9JykgY29udGludWU7XG5cbiAgICAgIGNvbnN0IGRlc3RFbnRpdHkgPSBzcGF3bmVkRW50aXR5QnlDb21wb3NpdGVJZC5nZXQoY29tcG9zaXRlRW50aXR5SWQpO1xuICAgICAgaWYgKGRlc3RFbnRpdHkgPT09IHVuZGVmaW5lZCkgY29udGludWU7XG5cbiAgICAgIGNvbnN0IG5ld0lkID0gZ2V0TmV4dElkKGVuZ2luZSk7XG4gICAgICBpZHMuc2V0KGlkS2V5KGNvbXBvbmVudC5uYW1lLCBjb21wb3NpdGVFbnRpdHlJZCksIG5ld0lkKTtcbiAgICAgIGNvbnN0IGxpdmUgPSBDb21wb25lbnREZWYuZ2V0TXV0YWJsZU9yTnVsbChkZXN0RW50aXR5KTtcbiAgICAgIGlmIChsaXZlKSBsaXZlLmlkID0gbmV3SWQ7XG4gICAgfVxuICB9XG4gIHJldHVybiBpZHM7XG59XG5cbi8qKlxuICogUmV3cml0ZSBUcmlnZ2VyIGBhY3Rpb25zW10uaWRgIGFuZCBgY29uZGl0aW9uc1tdLmlkYCBwbGFjZWhvbGRlciBzdHJpbmdzXG4gKiAoYHtzZWxmOkNvbXBvbmVudH1gIC8gYHtlbnRpdHk6Q29tcG9uZW50fWApIGludG8gdGhlIG51bWVyaWMgSURzIGFsbG9jYXRlZFxuICogaW4gdGhlIHByZXZpb3VzIHBhc3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1hcFRyaWdnZXJSZWZlcmVuY2VzKFxuICBlbmdpbmU6IElFbmdpbmUsXG4gIHNwYXduZWRFbnRpdGllczogSXRlcmFibGU8W0VudGl0eSwgbnVtYmVyXT4sXG4gIGlkczogSWRNYXAsXG4pOiB2b2lkIHtcbiAgY29uc3QgeyBUcmlnZ2VycyB9ID0gZ2V0Q29tcG9uZW50cyhlbmdpbmUpO1xuXG4gIGNvbnN0IHJlc29sdmUgPSAoaWRSZWY6IHVua25vd24sIG93bkNvbXBvc2l0ZUVudGl0eUlkOiBudW1iZXIpOiB1bmtub3duID0+IHtcbiAgICBpZiAodHlwZW9mIGlkUmVmICE9PSAnc3RyaW5nJykgcmV0dXJuIGlkUmVmO1xuICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlUGxhY2Vob2xkZXJSZWYoaWRSZWYpO1xuICAgIGlmICghcGFyc2VkKSByZXR1cm4gaWRSZWY7XG4gICAgY29uc3QgbG9va3VwRW50aXR5SWQgPSBwYXJzZWQuZW50aXR5SWQgPz8gb3duQ29tcG9zaXRlRW50aXR5SWQ7XG4gICAgcmV0dXJuIGlkcy5nZXQoaWRLZXkocGFyc2VkLmNvbXBvbmVudE5hbWUsIGxvb2t1cEVudGl0eUlkKSkgPz8gaWRSZWY7XG4gIH07XG5cbiAgZm9yIChjb25zdCBbZGVzdEVudGl0eSwgY29tcG9zaXRlRW50aXR5SWRdIG9mIHNwYXduZWRFbnRpdGllcykge1xuICAgIGNvbnN0IHRyaWdnZXJzID0gVHJpZ2dlcnMuZ2V0TXV0YWJsZU9yTnVsbChkZXN0RW50aXR5KTtcbiAgICBpZiAoIXRyaWdnZXJzKSBjb250aW51ZTtcbiAgICBmb3IgKGNvbnN0IHRyaWdnZXIgb2YgdHJpZ2dlcnMudmFsdWUpIHtcbiAgICAgIGlmICh0cmlnZ2VyLmNvbmRpdGlvbnMpIHtcbiAgICAgICAgZm9yIChjb25zdCBjb25kaXRpb24gb2YgdHJpZ2dlci5jb25kaXRpb25zKSB7XG4gICAgICAgICAgKGNvbmRpdGlvbiBhcyB7IGlkOiB1bmtub3duIH0pLmlkID0gcmVzb2x2ZShjb25kaXRpb24uaWQsIGNvbXBvc2l0ZUVudGl0eUlkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBhY3Rpb24gb2YgdHJpZ2dlci5hY3Rpb25zKSB7XG4gICAgICAgIChhY3Rpb24gYXMgeyBpZDogdW5rbm93biB9KS5pZCA9IHJlc29sdmUoYWN0aW9uLmlkLCBjb21wb3NpdGVFbnRpdHlJZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUmV3cml0ZSBgY29yZS1zY2hlbWE6OlN5bmMtQ29tcG9uZW50c2AuYGNvbXBvbmVudElkc2Agb24gdGhlIHNwYXduZWQgc3VidHJlZVxuICogZnJvbSBjb21wb25lbnQtKm5hbWUqIHBsYWNlaG9sZGVycyB0byB0aGUgbnVtZXJpYyBjb21wb25lbnQgaWRzIHRoZSBlbmdpbmVcbiAqIHNlcmlhbGl6ZXMuXG4gKlxuICogQXNzZXQtcGFjayBjb21wb3NpdGVzIHN0b3JlIHRoZXNlIGlkcyBhcyBwb3J0YWJsZSBuYW1lcyAoZS5nLlxuICogYFwiYXNzZXQtcGFja3M6OlN0YXRlc1wiYCkg4oCUIHRoZSBzYW1lIGNvbnZlbnRpb24gdGhlIEluc3BlY3RvciByZXNvbHZlcyB2aWFcbiAqIGBwYXJzZVN5bmNDb21wb25lbnRzYCB3aGVuIHBsYWNpbmcgYSBzbWFydCBpdGVtIGZyb20gdGhlIGNhdGFsb2cuIFRoZVxuICogU1BBV05fRU5USVRZIHBhdGggbG9hZHMgdGhlIGNvbXBvc2l0ZS5qc29uIGRpcmVjdGx5LCBzbyB3aXRob3V0IHRoaXMgcGFzcyB0aGVcbiAqIHJhdyBuYW1lcyByZWFjaCB0aGUgbGl2ZSBgU3luY0NvbXBvbmVudHNgIGNvbXBvbmVudCwgd2hvc2Ugc2NoZW1hIGlzXG4gKiBgQXJyYXkoSW50NjQpYDsgdGhlIENSRFQgc2VyaWFsaXplciB0aGVuIHRocm93c1xuICogYENhbm5vdCBjb252ZXJ0IDxuYW1lPiB0byBhIEJpZ0ludGAgZXZlcnkgdGljay5cbiAqXG4gKiBSdW5zIHBvc3QtaW5zdGFuY2UgKGFsb25nc2lkZSBgcmVtYXBUcmlnZ2VyUmVmZXJlbmNlc2ApIHNvIGV2ZXJ5IGNvbXBvbmVudFxuICogdGhlIGNvbXBvc2l0ZSByZWZlcmVuY2VzIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCBhbmQgcmVzb2x2YWJsZSBieSBuYW1lLlxuICogTnVtZXJpYyBlbnRyaWVzIHBhc3MgdGhyb3VnaCB1bmNoYW5nZWQg4oCUIHNvbWUgcGFja3MgYWxyZWFkeSBzaGlwIHJlc29sdmVkXG4gKiBpZHMg4oCUIGFuZCB0aGUgd3JpdGUgaXMgc2tpcHBlZCBlbnRpcmVseSB3aGVuIG5vdGhpbmcgbmVlZGVkIHJlc29sdmluZywgdG9cbiAqIGF2b2lkIGEgcmVkdW5kYW50IENSRFQgdXBkYXRlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtYXBTeW5jQ29tcG9uZW50SWRzKFxuICBlbmdpbmU6IElFbmdpbmUsXG4gIHNwYXduZWRFbnRpdGllczogSXRlcmFibGU8W0VudGl0eSwgbnVtYmVyXT4sXG4pOiB2b2lkIHtcbiAgY29uc3QgeyBTeW5jQ29tcG9uZW50cyB9ID0gZ2V0RXhwbG9yZXJDb21wb25lbnRzKGVuZ2luZSk7XG4gIGZvciAoY29uc3QgW2Rlc3RFbnRpdHldIG9mIHNwYXduZWRFbnRpdGllcykge1xuICAgIGNvbnN0IHN5bmMgPSBTeW5jQ29tcG9uZW50cy5nZXRPck51bGwoZGVzdEVudGl0eSk7XG4gICAgaWYgKCFzeW5jIHx8ICFBcnJheS5pc0FycmF5KHN5bmMuY29tcG9uZW50SWRzKSkgY29udGludWU7XG5cbiAgICBsZXQgY2hhbmdlZCA9IGZhbHNlO1xuICAgIGNvbnN0IHJlc29sdmVkID0gKHN5bmMuY29tcG9uZW50SWRzIGFzIHVua25vd25bXSkucmVkdWNlPG51bWJlcltdPigoYWNjLCBpZCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgYWNjLnB1c2goaWQpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgICAgICBjb25zdCBjb21wb25lbnQgPSBlbmdpbmUuZ2V0Q29tcG9uZW50T3JOdWxsKGlkKTtcbiAgICAgICAgaWYgKGNvbXBvbmVudCkgYWNjLnB1c2goY29tcG9uZW50LmNvbXBvbmVudElkKTtcbiAgICAgICAgZWxzZSBjb25zb2xlLmVycm9yKGBbYXNzZXQtcGFja3NdIFN5bmNDb21wb25lbnRzIHJlZmVyZW5jZXMgdW5rbm93biBjb21wb25lbnQgXCIke2lkfVwiYCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIFtdKTtcblxuICAgIGlmIChjaGFuZ2VkKSBTeW5jQ29tcG9uZW50cy5jcmVhdGVPclJlcGxhY2UoZGVzdEVudGl0eSwgeyBjb21wb25lbnRJZHM6IHJlc29sdmVkIH0pO1xuICB9XG59XG5cbi8qKlxuICogQWZ0ZXIgYENvbXBvc2l0ZS5pbnN0YW5jZWAgc3Bhd25zIGEgc21hcnQtaXRlbSBzdWJ0cmVlLCByZXNvbHZlIGl0c1xuICogcGxhY2Vob2xkZXIgSURzIHNvIGhhbmRsZXJzIGNhbiBmaXJlOlxuICpcbiAqICAgMS4gQWxsb2NhdGUgZnJlc2ggbnVtZXJpYyBJRHMgZm9yIEFjdGlvbnMvU3RhdGVzL0NvdW50ZXIgY29tcG9uZW50cyB3aG9zZVxuICogICAgICBjb21wb3NpdGUtc2lkZSBpZCBpcyB0aGUgbGl0ZXJhbCBge3NlbGZ9YC5cbiAqICAgMi4gUmV3cml0ZSBUcmlnZ2VyIGBhY3Rpb25zW10uaWRgIC8gYGNvbmRpdGlvbnNbXS5pZGAgcGxhY2Vob2xkZXJzIHRvXG4gKiAgICAgIHBvaW50IGF0IHRoZSBuZXdseS1hbGxvY2F0ZWQgbnVtZXJpYyBJRHMuXG4gKiAgIDMuIFJlc29sdmUgYFN5bmNDb21wb25lbnRzLmNvbXBvbmVudElkc2AgY29tcG9uZW50LW5hbWUgcGxhY2Vob2xkZXJzIHRvXG4gKiAgICAgIHRoZWlyIG51bWVyaWMgY29tcG9uZW50IGlkcy5cbiAqXG4gKiBUaGUgY2FsbGVyIHN1cHBsaWVzIHRoZSBjb21wb3NpdGUtZW50aXR5IOKGkiBsaXZlLWVudGl0eSBtYXAgZGlyZWN0bHkgKHZpYVxuICogdGhlIGBFbnRpdHlNYXBgIHBvcHVsYXRlZCBieSBgRU1NX0RJUkVDVF9NQVBQSU5HYCkuIFdlIG5vIGxvbmdlciByZWFkIGl0XG4gKiBiYWNrIGZyb20gYENvbXBvc2l0ZVJvb3RgOiB0aGUgbmV3IFNESyBvbmx5IHdyaXRlcyB0aGF0IGNvbXBvbmVudCBmb3JcbiAqIGNvbXBvc2l0ZXMgY29udGFpbmluZyBuZXN0ZWQgY2hpbGRyZW4sIHNvIGxlYWYgY29tcG9zaXRlcyBoYXZlIG5vIHJvdyB0b1xuICogcmVhZC5cbiAqXG4gKiBNaXJyb3JzIHRoZSBpbnNwZWN0b3IncyBkcmFnLW4tZHJvcCBpbml0aWFsaXphdGlvbiBwYXNzOyBib3RoIHNob3VsZFxuICogZXZlbnR1YWxseSBjYWxsIHRoaXMgZnVuY3Rpb24gKHNlZSBUT0RPIGF0IHRvcCBvZiBmaWxlKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVDb21wb25lbnRJZHNGcm9tQ29tcG9zaXRlKFxuICBlbmdpbmU6IElFbmdpbmUsXG4gIGNvbXBvc2l0ZTogQ29tcG9zaXRlLkRlZmluaXRpb24sXG4gIGVudGl0eU1hcDogRW50aXR5TWFwLFxuKTogdm9pZCB7XG4gIGNvbnN0IHNwYXduZWRFbnRpdHlCeUNvbXBvc2l0ZUlkID0gbmV3IE1hcDxudW1iZXIsIEVudGl0eT4oKTtcbiAgY29uc3QgaW52ZXJzZTogW0VudGl0eSwgbnVtYmVyXVtdID0gW107XG4gIGZvciAoY29uc3QgW3NyYywgZHN0XSBvZiBlbnRpdHlNYXAuZW50cmllcygpKSB7XG4gICAgc3Bhd25lZEVudGl0eUJ5Q29tcG9zaXRlSWQuc2V0KHNyYyBhcyBudW1iZXIsIGRzdCk7XG4gICAgaW52ZXJzZS5wdXNoKFtkc3QsIHNyYyBhcyBudW1iZXJdKTtcbiAgfVxuXG4gIGNvbnN0IGlkcyA9IGFsbG9jYXRlSWRzRm9yU3Bhd25lZENvbXBvbmVudHMoZW5naW5lLCBjb21wb3NpdGUsIHNwYXduZWRFbnRpdHlCeUNvbXBvc2l0ZUlkKTtcbiAgcmVtYXBUcmlnZ2VyUmVmZXJlbmNlcyhlbmdpbmUsIGludmVyc2UsIGlkcyk7XG4gIHJlbWFwU3luY0NvbXBvbmVudElkcyhlbmdpbmUsIGludmVyc2UpO1xufVxuIl19
@@ -1,6 +1,6 @@
1
- import { IEngine } from '@dcl/ecs';
1
+ import type { IEngine } from '@dcl/ecs';
2
2
  import ReactEcs from '@dcl/react-ecs';
3
- import { SceneAdmin } from '.';
3
+ import type { SceneAdmin } from '.';
4
4
  export declare function RemoveAdminConfirmation({ admin, engine }: {
5
5
  admin: SceneAdmin;
6
6
  engine: IEngine;
@@ -1,11 +1,11 @@
1
1
  import { Color4 } from '@dcl/ecs-math';
2
2
  import ReactEcs, { UiEntity, Label } from '@dcl/react-ecs';
3
3
  import { Button } from '../Button';
4
- import { deleteSceneAdmin } from './api';
5
- import { moderationControlState } from '.';
6
4
  import { LoadingDots } from '../Loading';
7
5
  import { Error } from '../Error';
8
- import { fetchSceneAdmins } from '..';
6
+ import { fetchAndSyncSceneAdmins } from '..';
7
+ import { deleteSceneAdmin } from './api';
8
+ import { moderationControlState } from '.';
9
9
  export function RemoveAdminConfirmation({ admin, engine }) {
10
10
  const [isLoading, setIsLoading] = ReactEcs.useState(false);
11
11
  const [error, setError] = ReactEcs.useState('');
@@ -27,9 +27,9 @@ export function RemoveAdminConfirmation({ admin, engine }) {
27
27
  borderRadius: 12,
28
28
  }, uiBackground: { color: Color4.Black() } },
29
29
  ReactEcs.createElement(UiEntity, { uiTransform: { flexDirection: 'row', maxWidth: 675 } },
30
- ReactEcs.createElement(Label, { value: `Are you sure you want to remove `, fontSize: 18, color: Color4.White() }),
30
+ ReactEcs.createElement(Label, { value: 'Are you sure you want to remove ', fontSize: 18, color: Color4.White() }),
31
31
  ReactEcs.createElement(Label, { value: `<b>${admin.name || (admin.address ? `${admin.address.substring(0, 6)}...${admin.address.substring(admin.address.length - 4)}` : '')}</b>`, fontSize: 18, color: Color4.fromHexString('#FF2D55') }),
32
- ReactEcs.createElement(Label, { value: ` from the Admin list?`, fontSize: 18, color: Color4.White() })),
32
+ ReactEcs.createElement(Label, { value: ' from the Admin list?', fontSize: 18, color: Color4.White() })),
33
33
  ReactEcs.createElement(Label, { value: "If you proceed, they will lose access to tehe Admin Tools for this scene.", fontSize: 14, color: Color4.Gray(), uiTransform: {
34
34
  margin: { top: 12, bottom: 24 },
35
35
  } }),
@@ -64,7 +64,7 @@ export function RemoveAdminConfirmation({ admin, engine }) {
64
64
  }
65
65
  else {
66
66
  moderationControlState.adminToRemove = undefined;
67
- await fetchSceneAdmins();
67
+ await fetchAndSyncSceneAdmins();
68
68
  }
69
69
  setIsLoading(false);
70
70
  }
@@ -72,4 +72,4 @@ export function RemoveAdminConfirmation({ admin, engine }) {
72
72
  isLoading && ReactEcs.createElement(LoadingDots, { engine: engine }),
73
73
  error && (ReactEcs.createElement(Error, { uiTransform: { margin: { top: 16 } }, text: error })))));
74
74
  }
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVtb3ZlQWRtaW5Db25maXJtYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWRtaW4tdG9vbGtpdC11aS9Nb2RlcmF0aW9uQ29udHJvbC9SZW1vdmVBZG1pbkNvbmZpcm1hdGlvbi50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUN6QyxPQUFPLEVBQUUsc0JBQXNCLEVBQWMsTUFBTSxHQUFHLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN6QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLElBQUksQ0FBQztBQUV0QyxNQUFNLFVBQVUsdUJBQXVCLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUEwQztJQUMvRixNQUFNLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0QsTUFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRWhELE9BQU8sQ0FDTCx1QkFBQyxRQUFRLElBQ1AsV0FBVyxFQUFFO1lBQ1gsS0FBSyxFQUFFLE1BQU07WUFDYixNQUFNLEVBQUUsTUFBTTtZQUNkLE9BQU8sRUFBRSxNQUFNO1lBQ2YsY0FBYyxFQUFFLFFBQVE7WUFDeEIsVUFBVSxFQUFFLFFBQVE7U0FDckI7UUFFRCx1QkFBQyxR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QUNYLEtBQUssRUFBRSxHQUFHO3dCQUNWLE1BQU0sRUFBRSxFQUFFO3dCQUNWLGNBQWMsRUFBRSxRQUFRO3dCQUN4QixVQUFVLEVBQUUsUUFBUTtxQkFDckIsRUFDRCxZQUFZLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUN4RCxXQUFXLEVBQUUsS0FBSyxJQUFJLEVBQUU7d0JBQ3RCLElBQUksQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDOzRCQUNoQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7NEJBQ25CLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxNQUFNLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQzs0QkFDdEQsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQ0FDVixRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7NEJBQ2xCLENBQUM7aUNBQU0sQ0FBQztnQ0FDTixzQkFBc0IsQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO2dDQUNqRCxNQUFNLGdCQUFnQixFQUFFLENBQUM7NEJBQzNCLENBQUM7NEJBQ0QsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUN0QixDQUFDO29CQUNILENBQUMsR0FDRCxDQUNILENBQ1E7WUFDVixTQUFTLElBQUksdUJBQUMsV0FBVyxJQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUk7WUFDNUMsS0FBSyxJQUFJLENBQ1IsdUJBQUMsS0FBSyxJQUNKLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUNwQyxJQUFJLEVBQUUsS0FBSyxHQUNYLENBQ0gsQ0FDUSxDQUNGLENBQ1osQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJRW5naW5lIH0gZnJvbSAnQGRjbC9lY3MnO1xuaW1wb3J0IHsgQ29sb3I0IH0gZnJvbSAnQGRjbC9lY3MtbWF0aCc7XG5pbXBvcnQgUmVhY3RFY3MsIHsgVWlFbnRpdHksIExhYmVsIH0gZnJvbSAnQGRjbC9yZWFjdC1lY3MnO1xuXG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuLi9CdXR0b24nO1xuaW1wb3J0IHsgZGVsZXRlU2NlbmVBZG1pbiB9IGZyb20gJy4vYXBpJztcbmltcG9ydCB7IG1vZGVyYXRpb25Db250cm9sU3RhdGUsIFNjZW5lQWRtaW4gfSBmcm9tICcuJztcbmltcG9ydCB7IExvYWRpbmdEb3RzIH0gZnJvbSAnLi4vTG9hZGluZyc7XG5pbXBvcnQgeyBFcnJvciB9IGZyb20gJy4uL0Vycm9yJztcbmltcG9ydCB7IGZldGNoU2NlbmVBZG1pbnMgfSBmcm9tICcuLic7XG5cbmV4cG9ydCBmdW5jdGlvbiBSZW1vdmVBZG1pbkNvbmZpcm1hdGlvbih7IGFkbWluLCBlbmdpbmUgfTogeyBhZG1pbjogU2NlbmVBZG1pbjsgZW5naW5lOiBJRW5naW5lIH0pIHtcbiAgY29uc3QgW2lzTG9hZGluZywgc2V0SXNMb2FkaW5nXSA9IFJlYWN0RWNzLnVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSBSZWFjdEVjcy51c2VTdGF0ZSgnJyk7XG5cbiAgcmV0dXJuIChcbiAgICA8VWlFbnRpdHlcbiAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICB9fVxuICAgID5cbiAgICAgIDxVaUVudGl0eVxuICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgIHdpZHRoOiA2NzUsXG4gICAgICAgICAgbWluSGVpZ2h0OiAyNzksXG4gICAgICAgICAgcGFkZGluZzogMjQsXG4gICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICBib3JkZXJSYWRpdXM6IDEyLFxuICAgICAgICB9fVxuICAgICAgICB1aUJhY2tncm91bmQ9e3sgY29sb3I6IENvbG9yNC5CbGFjaygpIH19XG4gICAgICA+XG4gICAgICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgbWF4V2lkdGg6IDY3NSB9fT5cbiAgICAgICAgICA8TGFiZWxcbiAgICAgICAgICAgIHZhbHVlPXtgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSBgfVxuICAgICAgICAgICAgZm9udFNpemU9ezE4fVxuICAgICAgICAgICAgY29sb3I9e0NvbG9yNC5XaGl0ZSgpfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPExhYmVsXG4gICAgICAgICAgICB2YWx1ZT17YDxiPiR7YWRtaW4ubmFtZSB8fCAoYWRtaW4uYWRkcmVzcyA/IGAke2FkbWluLmFkZHJlc3Muc3Vic3RyaW5nKDAsIDYpfS4uLiR7YWRtaW4uYWRkcmVzcy5zdWJzdHJpbmcoYWRtaW4uYWRkcmVzcy5sZW5ndGggLSA0KX1gIDogJycpfTwvYj5gfVxuICAgICAgICAgICAgZm9udFNpemU9ezE4fVxuICAgICAgICAgICAgY29sb3I9e0NvbG9yNC5mcm9tSGV4U3RyaW5nKCcjRkYyRDU1Jyl9XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8TGFiZWxcbiAgICAgICAgICAgIHZhbHVlPXtgIGZyb20gdGhlIEFkbWluIGxpc3Q/YH1cbiAgICAgICAgICAgIGZvbnRTaXplPXsxOH1cbiAgICAgICAgICAgIGNvbG9yPXtDb2xvcjQuV2hpdGUoKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1VpRW50aXR5PlxuXG4gICAgICAgIDxMYWJlbFxuICAgICAgICAgIHZhbHVlPVwiSWYgeW91IHByb2NlZWQsIHRoZXkgd2lsbCBsb3NlIGFjY2VzcyB0byB0ZWhlIEFkbWluIFRvb2xzIGZvciB0aGlzIHNjZW5lLlwiXG4gICAgICAgICAgZm9udFNpemU9ezE0fVxuICAgICAgICAgIGNvbG9yPXtDb2xvcjQuR3JheSgpfVxuICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICBtYXJnaW46IHsgdG9wOiAxMiwgYm90dG9tOiAyNCB9LFxuICAgICAgICAgIH19XG4gICAgICAgIC8+XG5cbiAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdyb3cnLFxuICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7IWlzTG9hZGluZyAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIGlkPVwiY2FuY2VsLXJlbW92ZVwiXG4gICAgICAgICAgICAgIHZhbHVlPVwiPGI+Q2FuY2VsPC9iPlwiXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgZm9udFNpemU9ezE2fVxuICAgICAgICAgICAgICBjb2xvcj17Q29sb3I0LkJsYWNrKCl9XG4gICAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDkwLFxuICAgICAgICAgICAgICAgIGhlaWdodDogNDAsXG4gICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICBtYXJnaW46IHsgcmlnaHQ6IDMwLCBsZWZ0OiAzMCB9LFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4ge1xuICAgICAgICAgICAgICAgIG1vZGVyYXRpb25Db250cm9sU3RhdGUuYWRtaW5Ub1JlbW92ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7IWlzTG9hZGluZyAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIGlkPVwiY29uZmlybS1yZW1vdmVcIlxuICAgICAgICAgICAgICB2YWx1ZT17JzxiPlJlbW92ZTwvYj4nfVxuICAgICAgICAgICAgICB2YXJpYW50PVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgIGZvbnRTaXplPXsxNn1cbiAgICAgICAgICAgICAgY29sb3I9e0NvbG9yNC5XaGl0ZSgpfVxuICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxNjAsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA0MCxcbiAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIHVpQmFja2dyb3VuZD17eyBjb2xvcjogQ29sb3I0LmZyb21IZXhTdHJpbmcoJyNGRjJENTUnKSB9fVxuICAgICAgICAgICAgICBvbk1vdXNlRG93bj17YXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghaXNMb2FkaW5nICYmIGFkbWluLmFkZHJlc3MpIHtcbiAgICAgICAgICAgICAgICAgIHNldElzTG9hZGluZyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IFtlcnJvcl0gPSBhd2FpdCBkZWxldGVTY2VuZUFkbWluKGFkbWluLmFkZHJlc3MpO1xuICAgICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldEVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG1vZGVyYXRpb25Db250cm9sU3RhdGUuYWRtaW5Ub1JlbW92ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgZmV0Y2hTY2VuZUFkbWlucygpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgIHtpc0xvYWRpbmcgJiYgPExvYWRpbmdEb3RzIGVuZ2luZT17ZW5naW5lfSAvPn1cbiAgICAgICAge2Vycm9yICYmIChcbiAgICAgICAgICA8RXJyb3JcbiAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7IG1hcmdpbjogeyB0b3A6IDE2IH0gfX1cbiAgICAgICAgICAgIHRleHQ9e2Vycm9yfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L1VpRW50aXR5PlxuICAgIDwvVWlFbnRpdHk+XG4gICk7XG59XG4iXX0=
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVtb3ZlQWRtaW5Db25maXJtYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWRtaW4tdG9vbGtpdC11aS9Nb2RlcmF0aW9uQ29udHJvbC9SZW1vdmVBZG1pbkNvbmZpcm1hdGlvbi50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDekMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNqQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEdBQUcsQ0FBQztBQUczQyxNQUFNLFVBQVUsdUJBQXVCLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUEwQztJQUMvRixNQUFNLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0QsTUFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRWhELE9BQU8sQ0FDTCx1QkFBQyxRQUFRLElBQ1AsV0FBVyxFQUFFO1lBQ1gsS0FBSyxFQUFFLE1BQU07WUFDYixNQUFNLEVBQUUsTUFBTTtZQUNkLE9BQU8sRUFBRSxNQUFNO1lBQ2YsY0FBYyxFQUFFLFFBQVE7WUFDeEIsVUFBVSxFQUFFLFFBQVE7U0FDckI7UUFFRCx1QkFBQyxR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QUNYLEtBQUssRUFBRSxHQUFHO3dCQUNWLE1BQU0sRUFBRSxFQUFFO3dCQUNWLGNBQWMsRUFBRSxRQUFRO3dCQUN4QixVQUFVLEVBQUUsUUFBUTtxQkFDckIsRUFDRCxZQUFZLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUN4RCxXQUFXLEVBQUUsS0FBSyxJQUFJLEVBQUU7d0JBQ3RCLElBQUksQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDOzRCQUNoQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7NEJBQ25CLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxNQUFNLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQzs0QkFDdEQsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQ0FDVixRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7NEJBQ2xCLENBQUM7aUNBQU0sQ0FBQztnQ0FDTixzQkFBc0IsQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO2dDQUNqRCxNQUFNLHVCQUF1QixFQUFFLENBQUM7NEJBQ2xDLENBQUM7NEJBQ0QsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUN0QixDQUFDO29CQUNILENBQUMsR0FDRCxDQUNILENBQ1E7WUFDVixTQUFTLElBQUksdUJBQUMsV0FBVyxJQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUk7WUFDNUMsS0FBSyxJQUFJLENBQ1IsdUJBQUMsS0FBSyxJQUNKLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUNwQyxJQUFJLEVBQUUsS0FBSyxHQUNYLENBQ0gsQ0FDUSxDQUNGLENBQ1osQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IElFbmdpbmUgfSBmcm9tICdAZGNsL2Vjcyc7XG5pbXBvcnQgeyBDb2xvcjQgfSBmcm9tICdAZGNsL2Vjcy1tYXRoJztcbmltcG9ydCBSZWFjdEVjcywgeyBVaUVudGl0eSwgTGFiZWwgfSBmcm9tICdAZGNsL3JlYWN0LWVjcyc7XG5cbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4uL0J1dHRvbic7XG5pbXBvcnQgeyBMb2FkaW5nRG90cyB9IGZyb20gJy4uL0xvYWRpbmcnO1xuaW1wb3J0IHsgRXJyb3IgfSBmcm9tICcuLi9FcnJvcic7XG5pbXBvcnQgeyBmZXRjaEFuZFN5bmNTY2VuZUFkbWlucyB9IGZyb20gJy4uJztcbmltcG9ydCB7IGRlbGV0ZVNjZW5lQWRtaW4gfSBmcm9tICcuL2FwaSc7XG5pbXBvcnQgeyBtb2RlcmF0aW9uQ29udHJvbFN0YXRlIH0gZnJvbSAnLic7XG5pbXBvcnQgdHlwZSB7IFNjZW5lQWRtaW4gfSBmcm9tICcuJztcblxuZXhwb3J0IGZ1bmN0aW9uIFJlbW92ZUFkbWluQ29uZmlybWF0aW9uKHsgYWRtaW4sIGVuZ2luZSB9OiB7IGFkbWluOiBTY2VuZUFkbWluOyBlbmdpbmU6IElFbmdpbmUgfSkge1xuICBjb25zdCBbaXNMb2FkaW5nLCBzZXRJc0xvYWRpbmddID0gUmVhY3RFY3MudXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbZXJyb3IsIHNldEVycm9yXSA9IFJlYWN0RWNzLnVzZVN0YXRlKCcnKTtcblxuICByZXR1cm4gKFxuICAgIDxVaUVudGl0eVxuICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgIH19XG4gICAgPlxuICAgICAgPFVpRW50aXR5XG4gICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgd2lkdGg6IDY3NSxcbiAgICAgICAgICBtaW5IZWlnaHQ6IDI3OSxcbiAgICAgICAgICBwYWRkaW5nOiAyNCxcbiAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgIGJvcmRlclJhZGl1czogMTIsXG4gICAgICAgIH19XG4gICAgICAgIHVpQmFja2dyb3VuZD17eyBjb2xvcjogQ29sb3I0LkJsYWNrKCkgfX1cbiAgICAgID5cbiAgICAgICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBtYXhXaWR0aDogNjc1IH19PlxuICAgICAgICAgIDxMYWJlbFxuICAgICAgICAgICAgdmFsdWU9eydBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlICd9XG4gICAgICAgICAgICBmb250U2l6ZT17MTh9XG4gICAgICAgICAgICBjb2xvcj17Q29sb3I0LldoaXRlKCl9XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8TGFiZWxcbiAgICAgICAgICAgIHZhbHVlPXtgPGI+JHthZG1pbi5uYW1lIHx8IChhZG1pbi5hZGRyZXNzID8gYCR7YWRtaW4uYWRkcmVzcy5zdWJzdHJpbmcoMCwgNil9Li4uJHthZG1pbi5hZGRyZXNzLnN1YnN0cmluZyhhZG1pbi5hZGRyZXNzLmxlbmd0aCAtIDQpfWAgOiAnJyl9PC9iPmB9XG4gICAgICAgICAgICBmb250U2l6ZT17MTh9XG4gICAgICAgICAgICBjb2xvcj17Q29sb3I0LmZyb21IZXhTdHJpbmcoJyNGRjJENTUnKX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxMYWJlbFxuICAgICAgICAgICAgdmFsdWU9eycgZnJvbSB0aGUgQWRtaW4gbGlzdD8nfVxuICAgICAgICAgICAgZm9udFNpemU9ezE4fVxuICAgICAgICAgICAgY29sb3I9e0NvbG9yNC5XaGl0ZSgpfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvVWlFbnRpdHk+XG5cbiAgICAgICAgPExhYmVsXG4gICAgICAgICAgdmFsdWU9XCJJZiB5b3UgcHJvY2VlZCwgdGhleSB3aWxsIGxvc2UgYWNjZXNzIHRvIHRlaGUgQWRtaW4gVG9vbHMgZm9yIHRoaXMgc2NlbmUuXCJcbiAgICAgICAgICBmb250U2l6ZT17MTR9XG4gICAgICAgICAgY29sb3I9e0NvbG9yNC5HcmF5KCl9XG4gICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgIG1hcmdpbjogeyB0b3A6IDEyLCBib3R0b206IDI0IH0sXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cblxuICAgICAgICA8VWlFbnRpdHlcbiAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ3JvdycsXG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHshaXNMb2FkaW5nICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgaWQ9XCJjYW5jZWwtcmVtb3ZlXCJcbiAgICAgICAgICAgICAgdmFsdWU9XCI8Yj5DYW5jZWw8L2I+XCJcbiAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICBmb250U2l6ZT17MTZ9XG4gICAgICAgICAgICAgIGNvbG9yPXtDb2xvcjQuQmxhY2soKX1cbiAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgICB3aWR0aDogOTAsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA0MCxcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgIG1hcmdpbjogeyByaWdodDogMzAsIGxlZnQ6IDMwIH0sXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIG9uTW91c2VEb3duPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgbW9kZXJhdGlvbkNvbnRyb2xTdGF0ZS5hZG1pblRvUmVtb3ZlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICAgIHshaXNMb2FkaW5nICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgaWQ9XCJjb25maXJtLXJlbW92ZVwiXG4gICAgICAgICAgICAgIHZhbHVlPXsnPGI+UmVtb3ZlPC9iPid9XG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgZm9udFNpemU9ezE2fVxuICAgICAgICAgICAgICBjb2xvcj17Q29sb3I0LldoaXRlKCl9XG4gICAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDE2MCxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDQwLFxuICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgdWlCYWNrZ3JvdW5kPXt7IGNvbG9yOiBDb2xvcjQuZnJvbUhleFN0cmluZygnI0ZGMkQ1NScpIH19XG4gICAgICAgICAgICAgIG9uTW91c2VEb3duPXthc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc0xvYWRpbmcgJiYgYWRtaW4uYWRkcmVzcykge1xuICAgICAgICAgICAgICAgICAgc2V0SXNMb2FkaW5nKHRydWUpO1xuICAgICAgICAgICAgICAgICAgY29uc3QgW2Vycm9yXSA9IGF3YWl0IGRlbGV0ZVNjZW5lQWRtaW4oYWRtaW4uYWRkcmVzcyk7XG4gICAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0RXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbW9kZXJhdGlvbkNvbnRyb2xTdGF0ZS5hZG1pblRvUmVtb3ZlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBmZXRjaEFuZFN5bmNTY2VuZUFkbWlucygpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgIHtpc0xvYWRpbmcgJiYgPExvYWRpbmdEb3RzIGVuZ2luZT17ZW5naW5lfSAvPn1cbiAgICAgICAge2Vycm9yICYmIChcbiAgICAgICAgICA8RXJyb3JcbiAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7IG1hcmdpbjogeyB0b3A6IDE2IH0gfX1cbiAgICAgICAgICAgIHRleHQ9e2Vycm9yfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L1VpRW50aXR5PlxuICAgIDwvVWlFbnRpdHk+XG4gICk7XG59XG4iXX0=
@@ -1,4 +1,4 @@
1
- import { fetchSceneAdmins, fetchSceneBans } from '..';
1
+ import { fetchAndSyncSceneAdmins, fetchSceneBans } from '..';
2
2
  import { postSceneAdmin, postSceneBan, deleteSceneBan } from './api';
3
3
  export const handleAddAdmin = async (adminData, setError, setLoading, clearInput) => {
4
4
  setLoading(true);
@@ -9,7 +9,7 @@ export const handleAddAdmin = async (adminData, setError, setLoading, clearInput
9
9
  else {
10
10
  setError('');
11
11
  clearInput();
12
- await fetchSceneAdmins();
12
+ await fetchAndSyncSceneAdmins();
13
13
  }
14
14
  setLoading(false);
15
15
  };
@@ -38,4 +38,4 @@ export const handleUnbanUser = async (address) => {
38
38
  return true;
39
39
  }
40
40
  };
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWRtaW4tdG9vbGtpdC11aS9Nb2RlcmF0aW9uQ29udHJvbC91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUVyRSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsS0FBSyxFQUNqQyxTQUErQyxFQUMvQyxRQUFpQyxFQUNqQyxVQUFzQyxFQUN0QyxVQUFzQixFQUN0QixFQUFFO0lBQ0YsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEdBQUcsTUFBTSxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkQsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNWLFFBQVEsQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7U0FBTSxDQUFDO1FBQ04sUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2IsVUFBVSxFQUFFLENBQUM7UUFDYixNQUFNLGdCQUFnQixFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUNELFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNwQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsS0FBSyxFQUNoQyxPQUE2RCxFQUM3RCxRQUFpQyxFQUNqQyxVQUFzQyxFQUN0QyxVQUFzQixFQUN0QixFQUFFO0lBQ0YsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEdBQUcsTUFBTSxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFL0MsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNWLFFBQVEsQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7U0FBTSxDQUFDO1FBQ04sUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2IsVUFBVSxFQUFFLENBQUM7UUFDYixNQUFNLGNBQWMsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFDRCxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDcEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEtBQUssRUFBRSxPQUFlLEVBQW9CLEVBQUU7SUFDekUsSUFBSSxDQUFDLE9BQU87UUFBRSxPQUFPLEtBQUssQ0FBQztJQUMzQixNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHLE1BQU0sY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELElBQUksS0FBSyxFQUFFLENBQUM7UUFDVixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxjQUFjLEVBQUUsQ0FBQztRQUN2QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmZXRjaFNjZW5lQWRtaW5zLCBmZXRjaFNjZW5lQmFucyB9IGZyb20gJy4uJztcbmltcG9ydCB7IHBvc3RTY2VuZUFkbWluLCBwb3N0U2NlbmVCYW4sIGRlbGV0ZVNjZW5lQmFuIH0gZnJvbSAnLi9hcGknO1xuXG5leHBvcnQgY29uc3QgaGFuZGxlQWRkQWRtaW4gPSBhc3luYyAoXG4gIGFkbWluRGF0YTogeyBhZG1pbjogc3RyaW5nIH0gfCB7IG5hbWU6IHN0cmluZyB9LFxuICBzZXRFcnJvcjogKGVycm9yOiBzdHJpbmcpID0+IHZvaWQsXG4gIHNldExvYWRpbmc6IChsb2FkaW5nOiBib29sZWFuKSA9PiB2b2lkLFxuICBjbGVhcklucHV0OiAoKSA9PiB2b2lkLFxuKSA9PiB7XG4gIHNldExvYWRpbmcodHJ1ZSk7XG4gIGNvbnN0IFtlcnJvciwgX10gPSBhd2FpdCBwb3N0U2NlbmVBZG1pbihhZG1pbkRhdGEpO1xuICBpZiAoZXJyb3IpIHtcbiAgICBzZXRFcnJvcignUGxlYXNlIHRyeSBhZ2FpbiB3aXRoIGEgdmFsaWQgTkFNRSBvciB3YWxsZXQgYWRkcmVzcy4nKTtcbiAgfSBlbHNlIHtcbiAgICBzZXRFcnJvcignJyk7XG4gICAgY2xlYXJJbnB1dCgpO1xuICAgIGF3YWl0IGZldGNoU2NlbmVBZG1pbnMoKTtcbiAgfVxuICBzZXRMb2FkaW5nKGZhbHNlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVCYW5Vc2VyID0gYXN5bmMgKFxuICBiYW5EYXRhOiB7IGJhbm5lZF9hZGRyZXNzOiBzdHJpbmcgfSB8IHsgYmFubmVkX25hbWU6IHN0cmluZyB9LFxuICBzZXRFcnJvcjogKGVycm9yOiBzdHJpbmcpID0+IHZvaWQsXG4gIHNldExvYWRpbmc6IChsb2FkaW5nOiBib29sZWFuKSA9PiB2b2lkLFxuICBjbGVhcklucHV0OiAoKSA9PiB2b2lkLFxuKSA9PiB7XG4gIHNldExvYWRpbmcodHJ1ZSk7XG4gIGNvbnN0IFtlcnJvciwgX10gPSBhd2FpdCBwb3N0U2NlbmVCYW4oYmFuRGF0YSk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgc2V0RXJyb3IoJ1BsZWFzZSB0cnkgYWdhaW4gd2l0aCBhIHZhbGlkIE5BTUUgb3Igd2FsbGV0IGFkZHJlc3MuJyk7XG4gIH0gZWxzZSB7XG4gICAgc2V0RXJyb3IoJycpO1xuICAgIGNsZWFySW5wdXQoKTtcbiAgICBhd2FpdCBmZXRjaFNjZW5lQmFucygpO1xuICB9XG4gIHNldExvYWRpbmcoZmFsc2UpO1xufTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZVVuYmFuVXNlciA9IGFzeW5jIChhZGRyZXNzOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgaWYgKCFhZGRyZXNzKSByZXR1cm4gZmFsc2U7XG4gIGNvbnN0IFtlcnJvciwgX10gPSBhd2FpdCBkZWxldGVTY2VuZUJhbihhZGRyZXNzKTtcbiAgaWYgKGVycm9yKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9IGVsc2Uge1xuICAgIGF3YWl0IGZldGNoU2NlbmVCYW5zKCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn07XG4iXX0=
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWRtaW4tdG9vbGtpdC11aS9Nb2RlcmF0aW9uQ29udHJvbC91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsY0FBYyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUVyRSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsS0FBSyxFQUNqQyxTQUErQyxFQUMvQyxRQUFpQyxFQUNqQyxVQUFzQyxFQUN0QyxVQUFzQixFQUN0QixFQUFFO0lBQ0YsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEdBQUcsTUFBTSxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkQsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNWLFFBQVEsQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7U0FBTSxDQUFDO1FBQ04sUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2IsVUFBVSxFQUFFLENBQUM7UUFDYixNQUFNLHVCQUF1QixFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUNELFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNwQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsS0FBSyxFQUNoQyxPQUE2RCxFQUM3RCxRQUFpQyxFQUNqQyxVQUFzQyxFQUN0QyxVQUFzQixFQUN0QixFQUFFO0lBQ0YsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEdBQUcsTUFBTSxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFL0MsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNWLFFBQVEsQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7U0FBTSxDQUFDO1FBQ04sUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2IsVUFBVSxFQUFFLENBQUM7UUFDYixNQUFNLGNBQWMsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFDRCxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDcEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEtBQUssRUFBRSxPQUFlLEVBQW9CLEVBQUU7SUFDekUsSUFBSSxDQUFDLE9BQU87UUFBRSxPQUFPLEtBQUssQ0FBQztJQUMzQixNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHLE1BQU0sY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELElBQUksS0FBSyxFQUFFLENBQUM7UUFDVixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxjQUFjLEVBQUUsQ0FBQztRQUN2QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmZXRjaEFuZFN5bmNTY2VuZUFkbWlucywgZmV0Y2hTY2VuZUJhbnMgfSBmcm9tICcuLic7XG5pbXBvcnQgeyBwb3N0U2NlbmVBZG1pbiwgcG9zdFNjZW5lQmFuLCBkZWxldGVTY2VuZUJhbiB9IGZyb20gJy4vYXBpJztcblxuZXhwb3J0IGNvbnN0IGhhbmRsZUFkZEFkbWluID0gYXN5bmMgKFxuICBhZG1pbkRhdGE6IHsgYWRtaW46IHN0cmluZyB9IHwgeyBuYW1lOiBzdHJpbmcgfSxcbiAgc2V0RXJyb3I6IChlcnJvcjogc3RyaW5nKSA9PiB2b2lkLFxuICBzZXRMb2FkaW5nOiAobG9hZGluZzogYm9vbGVhbikgPT4gdm9pZCxcbiAgY2xlYXJJbnB1dDogKCkgPT4gdm9pZCxcbikgPT4ge1xuICBzZXRMb2FkaW5nKHRydWUpO1xuICBjb25zdCBbZXJyb3IsIF9dID0gYXdhaXQgcG9zdFNjZW5lQWRtaW4oYWRtaW5EYXRhKTtcbiAgaWYgKGVycm9yKSB7XG4gICAgc2V0RXJyb3IoJ1BsZWFzZSB0cnkgYWdhaW4gd2l0aCBhIHZhbGlkIE5BTUUgb3Igd2FsbGV0IGFkZHJlc3MuJyk7XG4gIH0gZWxzZSB7XG4gICAgc2V0RXJyb3IoJycpO1xuICAgIGNsZWFySW5wdXQoKTtcbiAgICBhd2FpdCBmZXRjaEFuZFN5bmNTY2VuZUFkbWlucygpO1xuICB9XG4gIHNldExvYWRpbmcoZmFsc2UpO1xufTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZUJhblVzZXIgPSBhc3luYyAoXG4gIGJhbkRhdGE6IHsgYmFubmVkX2FkZHJlc3M6IHN0cmluZyB9IHwgeyBiYW5uZWRfbmFtZTogc3RyaW5nIH0sXG4gIHNldEVycm9yOiAoZXJyb3I6IHN0cmluZykgPT4gdm9pZCxcbiAgc2V0TG9hZGluZzogKGxvYWRpbmc6IGJvb2xlYW4pID0+IHZvaWQsXG4gIGNsZWFySW5wdXQ6ICgpID0+IHZvaWQsXG4pID0+IHtcbiAgc2V0TG9hZGluZyh0cnVlKTtcbiAgY29uc3QgW2Vycm9yLCBfXSA9IGF3YWl0IHBvc3RTY2VuZUJhbihiYW5EYXRhKTtcblxuICBpZiAoZXJyb3IpIHtcbiAgICBzZXRFcnJvcignUGxlYXNlIHRyeSBhZ2FpbiB3aXRoIGEgdmFsaWQgTkFNRSBvciB3YWxsZXQgYWRkcmVzcy4nKTtcbiAgfSBlbHNlIHtcbiAgICBzZXRFcnJvcignJyk7XG4gICAgY2xlYXJJbnB1dCgpO1xuICAgIGF3YWl0IGZldGNoU2NlbmVCYW5zKCk7XG4gIH1cbiAgc2V0TG9hZGluZyhmYWxzZSk7XG59O1xuXG5leHBvcnQgY29uc3QgaGFuZGxlVW5iYW5Vc2VyID0gYXN5bmMgKGFkZHJlc3M6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICBpZiAoIWFkZHJlc3MpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgW2Vycm9yLCBfXSA9IGF3YWl0IGRlbGV0ZVNjZW5lQmFuKGFkZHJlc3MpO1xuICBpZiAoZXJyb3IpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgYXdhaXQgZmV0Y2hTY2VuZUJhbnMoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcbiJdfQ==
@@ -1,10 +1,10 @@
1
1
  import ReactEcs, { Label, UiEntity, Input } from '@dcl/react-ecs';
2
2
  import { Color4 } from '@dcl/sdk/math';
3
- import { getComponents } from '../definitions';
4
3
  import { Button } from './Button';
5
4
  import { getContentUrl } from './constants';
6
5
  import { Header } from './Header';
7
6
  import { Card } from './Card';
7
+ import { getAdminMessageBus } from './admin-message-bus';
8
8
  const ICONS = {
9
9
  get TEXT_ANNOUNCEMENT_CONTROL() {
10
10
  return `${getContentUrl()}/admin_toolkit/assets/icons/text-announcement-control.png`;
@@ -75,32 +75,19 @@ export function TextAnnouncementsControl({ engine, state, player, }) {
75
75
  display: ANNOUNCEMENT_STATE !== undefined ? 'flex' : 'none',
76
76
  }, value: `Message ${ANNOUNCEMENT_STATE === 'sent' ? 'sent' : 'cleared'}!`, fontSize: 14, color: Color4.create(187 / 255, 187 / 255, 187 / 255, 1) })))));
77
77
  }
78
- function handleClearTextAnnouncement(engine, state) {
79
- const { TextAnnouncements } = getComponents(engine);
80
- const textAnnouncement = TextAnnouncements.getMutableOrNull(state.adminToolkitUiEntity);
81
- if (textAnnouncement) {
82
- textAnnouncement.text = '';
83
- textAnnouncement.id = '';
84
- textAnnouncement.author = '';
85
- }
78
+ function handleClearTextAnnouncement(_engine, state) {
79
+ getAdminMessageBus().emitClearAnnouncement();
86
80
  state.textAnnouncementControl.announcements = [];
87
81
  ANNOUNCEMENT_STATE = 'cleared';
88
82
  }
89
- function handleSendTextAnnouncement(engine, state, text, player) {
83
+ function handleSendTextAnnouncement(_engine, state, text, player) {
90
84
  if (!text) {
91
85
  return;
92
86
  }
93
- const { TextAnnouncements } = getComponents(engine);
94
- const textAnnouncement = TextAnnouncements.getMutableOrNull(state.adminToolkitUiEntity);
95
- if (textAnnouncement) {
96
- const author = player?.name;
97
- const timestamp = Date.now();
98
- textAnnouncement.author = author;
99
- textAnnouncement.id = `${timestamp}-${author}`;
100
- textAnnouncement.text = text.slice(0, 90);
101
- }
87
+ const author = player?.name;
88
+ const timestamp = Date.now();
89
+ getAdminMessageBus().emitSetAnnouncement(text.slice(0, 90), author, `${timestamp}-${author}`);
102
90
  state.textAnnouncementControl.text = '';
103
91
  ANNOUNCEMENT_STATE = 'sent';
104
- return;
105
92
  }
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGV4dEFubm91bmNlbWVudHNDb250cm9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FkbWluLXRvb2xraXQtdWkvVGV4dEFubm91bmNlbWVudHNDb250cm9sLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLFFBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNsQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbEMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUc5QixNQUFNLEtBQUssR0FBRztJQUNaLElBQUkseUJBQXlCO1FBQzNCLE9BQU8sR0FBRyxhQUFhLEVBQUUsMkRBQTJELENBQUM7SUFDdkYsQ0FBQztJQUNELElBQUksS0FBSztRQUNQLE9BQU8sR0FBRyxhQUFhLEVBQUUseURBQXlELENBQUM7SUFDckYsQ0FBQztJQUNELElBQUksMkJBQTJCO1FBQzdCLE9BQU8sR0FBRyxhQUFhLEVBQUUsZ0VBQWdFLENBQUM7SUFDNUYsQ0FBQztJQUNELElBQUksaUJBQWlCO1FBQ25CLE9BQU8sR0FBRyxhQUFhLEVBQUUsZ0VBQWdFLENBQUM7SUFDNUYsQ0FBQztDQUNGLENBQUM7QUFFRixJQUFJLGtCQUFzQyxDQUFDO0FBRTNDLE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxFQUN2QyxNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sR0FLUDtJQUNDLE9BQU8sQ0FDTCx1QkFBQyxJQUFJO1FBQ0gsdUJBQUMsUUFBUSxJ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Q0FBQyxFQUFFLEdBQUcsR0FBRyxTQUFTLElBQUksTUFBTSxFQUFFLENBQUM7UUFDL0MsZ0JBQWdCLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxLQUFLLENBQUMsdUJBQXVCLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUV4QyxrQkFBa0IsR0FBRyxNQUFNLENBQUM7SUFFNUIsT0FBTztBQUNULENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIElFbmdpbmUgfSBmcm9tICdAZGNsL2Vjcyc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5pbXBvcnQgUmVhY3RFY3MsIHsgTGFiZWwsIFVpRW50aXR5LCBJbnB1dCB9IGZyb20gJ0BkY2wvcmVhY3QtZWNzJztcbmltcG9ydCB7IENvbG9yNCB9IGZyb20gJ0BkY2wvc2RrL21hdGgnO1xuaW1wb3J0IHsgZ2V0Q29tcG9uZW50cyB9IGZyb20gJy4uL2RlZmluaXRpb25zJztcbmltcG9ydCB7IHR5cGUgR2V0UGxheWVyRGF0YVJlcyB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4vQnV0dG9uJztcbmltcG9ydCB7IGdldENvbnRlbnRVcmwgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBIZWFkZXIgfSBmcm9tICcuL0hlYWRlcic7XG5pbXBvcnQgeyBDYXJkIH0gZnJvbSAnLi9DYXJkJztcbmltcG9ydCB7IHR5cGUgU3RhdGUgfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgSUNPTlMgPSB7XG4gIGdldCBURVhUX0FOTk9VTkNFTUVOVF9DT05UUk9MKCkge1xuICAgIHJldHVybiBgJHtnZXRDb250ZW50VXJsKCl9L2FkbWluX3Rvb2xraXQvYXNzZXRzL2ljb25zL3RleHQtYW5ub3VuY2VtZW50LWNvbnRyb2wucG5nYDtcbiAgfSxcbiAgZ2V0IENIRUNLKCkge1xuICAgIHJldHVybiBgJHtnZXRDb250ZW50VXJsKCl9L2FkbWluX3Rvb2xraXQvYXNzZXRzL2ljb25zL3RleHQtYW5ub3VuY2VtZW50LWNoZWNrLnBuZ2A7XG4gIH0sXG4gIGdldCBCVE5fQ0xPU0VfVEVYVF9BTk5PVU5DRU1FTlQoKSB7XG4gICAgcmV0dXJuIGAke2dldENvbnRlbnRVcmwoKX0vYWRtaW5fdG9vbGtpdC9hc3NldHMvaWNvbnMvdGV4dC1hbm5vdW5jZW1lbnQtY2xvc2UtYnV0dG9uLnBuZ2A7XG4gIH0sXG4gIGdldCBDSEFUX01FU1NBR0VfSUNPTigpIHtcbiAgICByZXR1cm4gYCR7Z2V0Q29udGVudFVybCgpfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy90ZXh0LWFubm91bmNlbWVudC1jaGF0LW1lc3NhZ2UucG5nYDtcbiAgfSxcbn07XG5cbmxldCBBTk5PVU5DRU1FTlRfU1RBVEU6ICdzZW50JyB8ICdjbGVhcmVkJztcblxuZXhwb3J0IGZ1bmN0aW9uIFRleHRBbm5vdW5jZW1lbnRzQ29udHJvbCh7XG4gIGVuZ2luZSxcbiAgc3RhdGUsXG4gIHBsYXllcixcbn06IHtcbiAgZW5naW5lOiBJRW5naW5lO1xuICBzdGF0ZTogU3RhdGU7XG4gIHBsYXllcj86IEdldFBsYXllckRhdGFSZXMgfCBudWxsO1xufSkge1xuICByZXR1cm4gKFxuICAgIDxDYXJkPlxuICAgICAgPFVpRW50aXR5XG4gICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgey8qIEhlYWRlciAqL31cbiAgICAgICAgPEhlYWRlclxuICAgICAgICAgIGljb25TcmM9e0lDT05TLlRFWFRfQU5OT1VOQ0VNRU5UX0NPTlRST0x9XG4gICAgICAgICAgdGl0bGU9XCJURVhUIEFOTk9VTkNFTUVOVFNcIlxuICAgICAgICAvPlxuICAgICAgICA8VWlFbnRpdHkgdWlUcmFuc2Zvcm09e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicgfX0+XG4gICAgICAgICAgPExhYmVsXG4gICAgICAgICAgICB2YWx1ZT1cIjxiPk1lc3NhZ2Ugd2luZG93PC9iPlwiXG4gICAgICAgICAgICBmb250U2l6ZT17MTZ9XG4gICAgICAgICAgICBjb2xvcj17Q29sb3I0LldoaXRlKCl9XG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17eyBtYXJnaW46IHsgYm90dG9tOiAxNiB9IH19XG4gICAgICAgICAgLz5cblxuICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgb25TdWJtaXQ9e3ZhbHVlID0+IHtcbiAgICAgICAgICAgICAgaGFuZGxlU2VuZFRleHRBbm5vdW5jZW1lbnQoZW5naW5lLCBzdGF0ZSwgdmFsdWUsIHBsYXllcik7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb25DaGFuZ2U9e3ZhbHVlID0+IHtcbiAgICAgICAgICAgICAgc3RhdGUudGV4dEFubm91bmNlbWVudENvbnRyb2wudGV4dCA9IHZhbHVlO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGZvbnRTaXplPXsxNn1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPXsnV3JpdGUgeW91ciBhbm5vdW5jZW1lbnQgaGVyZSd9XG4gICAgICAgICAgICBwbGFjZWhvbGRlckNvbG9yPXtDb2xvcjQuY3JlYXRlKDE2MCAvIDI1NSwgMTU1IC8gMjU1LCAxNjggLyAyNTUsIDEpfVxuICAgICAgICAgICAgY29sb3I9e0NvbG9yNC5CbGFjaygpfVxuICAgICAgICAgICAgdWlCYWNrZ3JvdW5kPXt7IGNvbG9yOiBDb2xvcjQuV2hpdGUoKSB9fVxuICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgaGVpZ2h0OiA4MCxcbiAgICAgICAgICAgICAgbWFyZ2luOiB7IGJvdHRvbTogMTYgfSxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cblxuICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgaGVpZ2h0OiA0MCxcbiAgICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ3JvdycsXG4gICAgICAgICAgICAgIG1hcmdpbjoge1xuICAgICAgICAgICAgICAgIGJvdHRvbTogMTAsXG4gICAgICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiAwLFxuICAgICAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxMYWJlbFxuICAgICAgICAgICAgICB2YWx1ZT17YCR7c3RhdGUudGV4dEFubm91bmNlbWVudENvbnRyb2wudGV4dD8ubGVuZ3RoID8/IDB9IC8gOTBgfVxuICAgICAgICAgICAgICBmb250U2l6ZT17MTR9XG4gICAgICAgICAgICAgIGNvbG9yPXtDb2xvcjQuY3JlYXRlKDE4NyAvIDI1NSwgMTg3IC8gMjU1LCAxODcgLyAyNTUsIDEpfVxuICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17eyBmbGV4R3JvdzogMSB9fVxuICAgICAgICAgICAgICB0ZXh0QWxpZ249XCJ0b3AtbGVmdFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICBpZD1cInRleHRfYW5ub3VuY2VtZW50X2NvbnRyb2xfY2xlYXJcIlxuICAgICAgICAgICAgICB2YWx1ZT1cIjxiPkNsZWFyIEFubm91bmNlbWVudHM8L2I+XCJcbiAgICAgICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgICAgICBmb250U2l6ZT17MTZ9XG4gICAgICAgICAgICAgIGNvbG9yPXtDb2xvcjQuV2hpdGUoKX1cbiAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDQwLFxuICAgICAgICAgICAgICAgIG1hcmdpbjogeyByaWdodDogOCB9LFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGhhbmRsZUNsZWFyVGV4dEFubm91bmNlbWVudChlbmdpbmUsIHN0YXRlKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIGlkPVwidGV4dF9hbm5vdW5jZW1lbnRfY29udHJvbF9zaGFyZVwiXG4gICAgICAgICAgICAgIHZhbHVlPVwiPGI+U2hhcmU8L2I+XCJcbiAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICBmb250U2l6ZT17MTZ9XG4gICAgICAgICAgICAgIGxhYmVsVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiB7IGxlZnQ6IDIwLCByaWdodDogMjAgfSxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3sgaGVpZ2h0OiA0MCB9fVxuICAgICAgICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGhhbmRsZVNlbmRUZXh0QW5ub3VuY2VtZW50KFxuICAgICAgICAgICAgICAgICAgZW5naW5lLFxuICAgICAgICAgICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgICAgICAgICBzdGF0ZS50ZXh0QW5ub3VuY2VtZW50Q29udHJvbC50ZXh0LFxuICAgICAgICAgICAgICAgICAgcGxheWVyLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgIDwvVWlFbnRpdHk+XG5cbiAgICAgICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXt7IG1pbkhlaWdodDogMzAgfX0+XG4gICAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICBkaXNwbGF5OiBBTk5PVU5DRU1FTlRfU1RBVEUgIT09IHVuZGVmaW5lZCA/ICdmbGV4JyA6ICdub25lJyxcbiAgICAgICAgICAgICAgd2lkdGg6IDMwLFxuICAgICAgICAgICAgICBoZWlnaHQ6IDMwLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHVpQmFja2dyb3VuZD17e1xuICAgICAgICAgICAgICB0ZXh0dXJlOiB7IHNyYzogSUNPTlMuQ0hFQ0sgfSxcbiAgICAgICAgICAgICAgdGV4dHVyZU1vZGU6ICdzdHJldGNoJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8TGFiZWxcbiAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgIGRpc3BsYXk6IEFOTk9VTkNFTUVOVF9TVEFURSAhPT0gdW5kZWZpbmVkID8gJ2ZsZXgnIDogJ25vbmUnLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHZhbHVlPXtgTWVzc2FnZSAke0FOTk9VTkNFTUVOVF9TVEFURSA9PT0gJ3NlbnQnID8gJ3NlbnQnIDogJ2NsZWFyZWQnfSFgfVxuICAgICAgICAgICAgZm9udFNpemU9ezE0fVxuICAgICAgICAgICAgY29sb3I9e0NvbG9yNC5jcmVhdGUoMTg3IC8gMjU1LCAxODcgLyAyNTUsIDE4NyAvIDI1NSwgMSl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgIDwvVWlFbnRpdHk+XG4gICAgPC9DYXJkPlxuICApO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVDbGVhclRleHRBbm5vdW5jZW1lbnQoZW5naW5lOiBJRW5naW5lLCBzdGF0ZTogU3RhdGUpIHtcbiAgY29uc3QgeyBUZXh0QW5ub3VuY2VtZW50cyB9ID0gZ2V0Q29tcG9uZW50cyhlbmdpbmUpO1xuICBjb25zdCB0ZXh0QW5ub3VuY2VtZW50ID0gVGV4dEFubm91bmNlbWVudHMuZ2V0TXV0YWJsZU9yTnVsbChzdGF0ZS5hZG1pblRvb2xraXRVaUVudGl0eSk7XG4gIGlmICh0ZXh0QW5ub3VuY2VtZW50KSB7XG4gICAgdGV4dEFubm91bmNlbWVudC50ZXh0ID0gJyc7XG4gICAgdGV4dEFubm91bmNlbWVudC5pZCA9ICcnO1xuICAgIHRleHRBbm5vdW5jZW1lbnQuYXV0aG9yID0gJyc7XG4gIH1cbiAgc3RhdGUudGV4dEFubm91bmNlbWVudENvbnRyb2wuYW5ub3VuY2VtZW50cyA9IFtdO1xuICBBTk5PVU5DRU1FTlRfU1RBVEUgPSAnY2xlYXJlZCc7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZVNlbmRUZXh0QW5ub3VuY2VtZW50KFxuICBlbmdpbmU6IElFbmdpbmUsXG4gIHN0YXRlOiBTdGF0ZSxcbiAgdGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBwbGF5ZXI/OiBHZXRQbGF5ZXJEYXRhUmVzIHwgbnVsbCxcbikge1xuICBpZiAoIXRleHQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB7IFRleHRBbm5vdW5jZW1lbnRzIH0gPSBnZXRDb21wb25lbnRzKGVuZ2luZSk7XG4gIGNvbnN0IHRleHRBbm5vdW5jZW1lbnQgPSBUZXh0QW5ub3VuY2VtZW50cy5nZXRNdXRhYmxlT3JOdWxsKHN0YXRlLmFkbWluVG9vbGtpdFVpRW50aXR5KTtcblxuICBpZiAodGV4dEFubm91bmNlbWVudCkge1xuICAgIGNvbnN0IGF1dGhvciA9IHBsYXllcj8ubmFtZTtcbiAgICAvLyBHZXQgY3VycmVudCB0aW1lc3RhbXAgYW5kIGVuc3VyZSB1bmlxdWVuZXNzXG4gICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcblxuICAgIHRleHRBbm5vdW5jZW1lbnQuYXV0aG9yID0gYXV0aG9yO1xuICAgIHRleHRBbm5vdW5jZW1lbnQuaWQgPSBgJHt0aW1lc3RhbXB9LSR7YXV0aG9yfWA7XG4gICAgdGV4dEFubm91bmNlbWVudC50ZXh0ID0gdGV4dC5zbGljZSgwLCA5MCk7XG4gIH1cblxuICBzdGF0ZS50ZXh0QW5ub3VuY2VtZW50Q29udHJvbC50ZXh0ID0gJyc7XG5cbiAgQU5OT1VOQ0VNRU5UX1NUQVRFID0gJ3NlbnQnO1xuXG4gIHJldHVybjtcbn1cbiJdfQ==
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGV4dEFubm91bmNlbWVudHNDb250cm9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FkbWluLXRvb2xraXQtdWkvVGV4dEFubm91bmNlbWVudHNDb250cm9sLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLFFBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNsQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRTlCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXpELE1BQU0sS0FBSyxHQUFHO0lBQ1osSUFBSSx5QkFBeUI7UUFDM0IsT0FBTyxHQUFHLGFBQWEsRUFBRSwyREFBMkQsQ0FBQztJQUN2RixDQUFDO0lBQ0QsSUFBSSxLQUFLO1FBQ1AsT0FBTyxHQUFHLGFBQWEsRUFBRSx5REFBeUQsQ0FBQztJQUNyRixDQUFDO0lBQ0QsSUFBSSwyQkFBMkI7UUFDN0IsT0FBTyxHQUFHLGFBQWEsRUFBRSxnRUFBZ0UsQ0FBQztJQUM1RixDQUFDO0lBQ0QsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxHQUFHLGFBQWEsRUFBRSxnRUFBZ0UsQ0FBQztJQUM1RixDQUFDO0NBQ0YsQ0FBQztBQUVGLElBQUksa0JBQXNDLENBQUM7QUFFM0MsTUFBTSxVQUFVLHdCQUF3QixDQUFDLEVBQ3ZDLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxHQUtQO0lBQ0MsT0FBTyxDQUNMLHVCQUFDLElBQUk7UUFDSCx1QkFBQyxRQUFR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QUFHLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUN4RCxDQUNPLENBQ0YsQ0FDTixDQUNSLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUywyQkFBMkIsQ0FBQyxPQUFnQixFQUFFLEtBQVk7SUFDakUsa0JBQWtCLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQzdDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO0lBQ2pELGtCQUFrQixHQUFHLFNBQVMsQ0FBQztBQUNqQyxDQUFDO0FBRUQsU0FBUywwQkFBMEIsQ0FDakMsT0FBZ0IsRUFDaEIsS0FBWSxFQUNaLElBQXdCLEVBQ3hCLE1BQWdDO0lBRWhDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNWLE9BQU87SUFDVCxDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxFQUFFLElBQUksQ0FBQztJQUM1QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDN0Isa0JBQWtCLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxTQUFTLElBQUksTUFBTSxFQUFFLENBQUMsQ0FBQztJQUU5RixLQUFLLENBQUMsdUJBQXVCLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUN4QyxrQkFBa0IsR0FBRyxNQUFNLENBQUM7QUFDOUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgSUVuZ2luZSB9IGZyb20gJ0BkY2wvZWNzJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbmltcG9ydCBSZWFjdEVjcywgeyBMYWJlbCwgVWlFbnRpdHksIElucHV0IH0gZnJvbSAnQGRjbC9yZWFjdC1lY3MnO1xuaW1wb3J0IHsgQ29sb3I0IH0gZnJvbSAnQGRjbC9zZGsvbWF0aCc7XG5pbXBvcnQgeyB0eXBlIEdldFBsYXllckRhdGFSZXMgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuL0J1dHRvbic7XG5pbXBvcnQgeyBnZXRDb250ZW50VXJsIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgSGVhZGVyIH0gZnJvbSAnLi9IZWFkZXInO1xuaW1wb3J0IHsgQ2FyZCB9IGZyb20gJy4vQ2FyZCc7XG5pbXBvcnQgeyB0eXBlIFN0YXRlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBnZXRBZG1pbk1lc3NhZ2VCdXMgfSBmcm9tICcuL2FkbWluLW1lc3NhZ2UtYnVzJztcblxuY29uc3QgSUNPTlMgPSB7XG4gIGdldCBURVhUX0FOTk9VTkNFTUVOVF9DT05UUk9MKCkge1xuICAgIHJldHVybiBgJHtnZXRDb250ZW50VXJsKCl9L2FkbWluX3Rvb2xraXQvYXNzZXRzL2ljb25zL3RleHQtYW5ub3VuY2VtZW50LWNvbnRyb2wucG5nYDtcbiAgfSxcbiAgZ2V0IENIRUNLKCkge1xuICAgIHJldHVybiBgJHtnZXRDb250ZW50VXJsKCl9L2FkbWluX3Rvb2xraXQvYXNzZXRzL2ljb25zL3RleHQtYW5ub3VuY2VtZW50LWNoZWNrLnBuZ2A7XG4gIH0sXG4gIGdldCBCVE5fQ0xPU0VfVEVYVF9BTk5PVU5DRU1FTlQoKSB7XG4gICAgcmV0dXJuIGAke2dldENvbnRlbnRVcmwoKX0vYWRtaW5fdG9vbGtpdC9hc3NldHMvaWNvbnMvdGV4dC1hbm5vdW5jZW1lbnQtY2xvc2UtYnV0dG9uLnBuZ2A7XG4gIH0sXG4gIGdldCBDSEFUX01FU1NBR0VfSUNPTigpIHtcbiAgICByZXR1cm4gYCR7Z2V0Q29udGVudFVybCgpfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy90ZXh0LWFubm91bmNlbWVudC1jaGF0LW1lc3NhZ2UucG5nYDtcbiAgfSxcbn07XG5cbmxldCBBTk5PVU5DRU1FTlRfU1RBVEU6ICdzZW50JyB8ICdjbGVhcmVkJztcblxuZXhwb3J0IGZ1bmN0aW9uIFRleHRBbm5vdW5jZW1lbnRzQ29udHJvbCh7XG4gIGVuZ2luZSxcbiAgc3RhdGUsXG4gIHBsYXllcixcbn06IHtcbiAgZW5naW5lOiBJRW5naW5lO1xuICBzdGF0ZTogU3RhdGU7XG4gIHBsYXllcj86IEdldFBsYXllckRhdGFSZXMgfCBudWxsO1xufSkge1xuICByZXR1cm4gKFxuICAgIDxDYXJkPlxuICAgICAgPFVpRW50aXR5XG4gICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgey8qIEhlYWRlciAqL31cbiAgICAgICAgPEhlYWRlclxuICAgICAgICAgIGljb25TcmM9e0lDT05TLlRFWFRfQU5OT1VOQ0VNRU5UX0NPTlRST0x9XG4gICAgICAgICAgdGl0bGU9XCJURVhUIEFOTk9VTkNFTUVOVFNcIlxuICAgICAgICAvPlxuICAgICAgICA8VWlFbnRpdHkgdWlUcmFuc2Zvcm09e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicgfX0+XG4gICAgICAgICAgPExhYmVsXG4gICAgICAgICAgICB2YWx1ZT1cIjxiPk1lc3NhZ2Ugd2luZG93PC9iPlwiXG4gICAgICAgICAgICBmb250U2l6ZT17MTZ9XG4gICAgICAgICAgICBjb2xvcj17Q29sb3I0LldoaXRlKCl9XG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17eyBtYXJnaW46IHsgYm90dG9tOiAxNiB9IH19XG4gICAgICAgICAgLz5cblxuICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgb25TdWJtaXQ9e3ZhbHVlID0+IHtcbiAgICAgICAgICAgICAgaGFuZGxlU2VuZFRleHRBbm5vdW5jZW1lbnQoZW5naW5lLCBzdGF0ZSwgdmFsdWUsIHBsYXllcik7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb25DaGFuZ2U9e3ZhbHVlID0+IHtcbiAgICAgICAgICAgICAgc3RhdGUudGV4dEFubm91bmNlbWVudENvbnRyb2wudGV4dCA9IHZhbHVlO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGZvbnRTaXplPXsxNn1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPXsnV3JpdGUgeW91ciBhbm5vdW5jZW1lbnQgaGVyZSd9XG4gICAgICAgICAgICBwbGFjZWhvbGRlckNvbG9yPXtDb2xvcjQuY3JlYXRlKDE2MCAvIDI1NSwgMTU1IC8gMjU1LCAxNjggLyAyNTUsIDEpfVxuICAgICAgICAgICAgY29sb3I9e0NvbG9yNC5CbGFjaygpfVxuICAgICAgICAgICAgdWlCYWNrZ3JvdW5kPXt7IGNvbG9yOiBDb2xvcjQuV2hpdGUoKSB9fVxuICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgaGVpZ2h0OiA4MCxcbiAgICAgICAgICAgICAgbWFyZ2luOiB7IGJvdHRvbTogMTYgfSxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cblxuICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgaGVpZ2h0OiA0MCxcbiAgICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ3JvdycsXG4gICAgICAgICAgICAgIG1hcmdpbjoge1xuICAgICAgICAgICAgICAgIGJvdHRvbTogMTAsXG4gICAgICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiAwLFxuICAgICAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxMYWJlbFxuICAgICAgICAgICAgICB2YWx1ZT17YCR7c3RhdGUudGV4dEFubm91bmNlbWVudENvbnRyb2wudGV4dD8ubGVuZ3RoID8/IDB9IC8gOTBgfVxuICAgICAgICAgICAgICBmb250U2l6ZT17MTR9XG4gICAgICAgICAgICAgIGNvbG9yPXtDb2xvcjQuY3JlYXRlKDE4NyAvIDI1NSwgMTg3IC8gMjU1LCAxODcgLyAyNTUsIDEpfVxuICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17eyBmbGV4R3JvdzogMSB9fVxuICAgICAgICAgICAgICB0ZXh0QWxpZ249XCJ0b3AtbGVmdFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICBpZD1cInRleHRfYW5ub3VuY2VtZW50X2NvbnRyb2xfY2xlYXJcIlxuICAgICAgICAgICAgICB2YWx1ZT1cIjxiPkNsZWFyIEFubm91bmNlbWVudHM8L2I+XCJcbiAgICAgICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgICAgICBmb250U2l6ZT17MTZ9XG4gICAgICAgICAgICAgIGNvbG9yPXtDb2xvcjQuV2hpdGUoKX1cbiAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDQwLFxuICAgICAgICAgICAgICAgIG1hcmdpbjogeyByaWdodDogOCB9LFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGhhbmRsZUNsZWFyVGV4dEFubm91bmNlbWVudChlbmdpbmUsIHN0YXRlKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIGlkPVwidGV4dF9hbm5vdW5jZW1lbnRfY29udHJvbF9zaGFyZVwiXG4gICAgICAgICAgICAgIHZhbHVlPVwiPGI+U2hhcmU8L2I+XCJcbiAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICBmb250U2l6ZT17MTZ9XG4gICAgICAgICAgICAgIGxhYmVsVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiB7IGxlZnQ6IDIwLCByaWdodDogMjAgfSxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3sgaGVpZ2h0OiA0MCB9fVxuICAgICAgICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGhhbmRsZVNlbmRUZXh0QW5ub3VuY2VtZW50KFxuICAgICAgICAgICAgICAgICAgZW5naW5lLFxuICAgICAgICAgICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgICAgICAgICBzdGF0ZS50ZXh0QW5ub3VuY2VtZW50Q29udHJvbC50ZXh0LFxuICAgICAgICAgICAgICAgICAgcGxheWVyLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgIDwvVWlFbnRpdHk+XG5cbiAgICAgICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXt7IG1pbkhlaWdodDogMzAgfX0+XG4gICAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICBkaXNwbGF5OiBBTk5PVU5DRU1FTlRfU1RBVEUgIT09IHVuZGVmaW5lZCA/ICdmbGV4JyA6ICdub25lJyxcbiAgICAgICAgICAgICAgd2lkdGg6IDMwLFxuICAgICAgICAgICAgICBoZWlnaHQ6IDMwLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHVpQmFja2dyb3VuZD17e1xuICAgICAgICAgICAgICB0ZXh0dXJlOiB7IHNyYzogSUNPTlMuQ0hFQ0sgfSxcbiAgICAgICAgICAgICAgdGV4dHVyZU1vZGU6ICdzdHJldGNoJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8TGFiZWxcbiAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgIGRpc3BsYXk6IEFOTk9VTkNFTUVOVF9TVEFURSAhPT0gdW5kZWZpbmVkID8gJ2ZsZXgnIDogJ25vbmUnLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHZhbHVlPXtgTWVzc2FnZSAke0FOTk9VTkNFTUVOVF9TVEFURSA9PT0gJ3NlbnQnID8gJ3NlbnQnIDogJ2NsZWFyZWQnfSFgfVxuICAgICAgICAgICAgZm9udFNpemU9ezE0fVxuICAgICAgICAgICAgY29sb3I9e0NvbG9yNC5jcmVhdGUoMTg3IC8gMjU1LCAxODcgLyAyNTUsIDE4NyAvIDI1NSwgMSl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgIDwvVWlFbnRpdHk+XG4gICAgPC9DYXJkPlxuICApO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVDbGVhclRleHRBbm5vdW5jZW1lbnQoX2VuZ2luZTogSUVuZ2luZSwgc3RhdGU6IFN0YXRlKSB7XG4gIGdldEFkbWluTWVzc2FnZUJ1cygpLmVtaXRDbGVhckFubm91bmNlbWVudCgpO1xuICBzdGF0ZS50ZXh0QW5ub3VuY2VtZW50Q29udHJvbC5hbm5vdW5jZW1lbnRzID0gW107XG4gIEFOTk9VTkNFTUVOVF9TVEFURSA9ICdjbGVhcmVkJztcbn1cblxuZnVuY3Rpb24gaGFuZGxlU2VuZFRleHRBbm5vdW5jZW1lbnQoXG4gIF9lbmdpbmU6IElFbmdpbmUsXG4gIHN0YXRlOiBTdGF0ZSxcbiAgdGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBwbGF5ZXI/OiBHZXRQbGF5ZXJEYXRhUmVzIHwgbnVsbCxcbikge1xuICBpZiAoIXRleHQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBhdXRob3IgPSBwbGF5ZXI/Lm5hbWU7XG4gIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gIGdldEFkbWluTWVzc2FnZUJ1cygpLmVtaXRTZXRBbm5vdW5jZW1lbnQodGV4dC5zbGljZSgwLCA5MCksIGF1dGhvciwgYCR7dGltZXN0YW1wfS0ke2F1dGhvcn1gKTtcblxuICBzdGF0ZS50ZXh0QW5ub3VuY2VtZW50Q29udHJvbC50ZXh0ID0gJyc7XG4gIEFOTk9VTkNFTUVOVF9TVEFURSA9ICdzZW50Jztcbn1cbiJdfQ==