decentrand 3.21.0
Sign up to get free protection for your applications and to get access to all the features.
- package/LICENSE +201 -0
- package/README.md +56 -0
- package/abi/EstateRegistry.json +1226 -0
- package/abi/LANDRegistry.json +1372 -0
- package/abi/MANAToken.json +410 -0
- package/dist/commands/build.d.ts +3 -0
- package/dist/commands/build.d.ts.map +1 -0
- package/dist/commands/build.js +108 -0
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/coords.d.ts +3 -0
- package/dist/commands/coords.d.ts.map +1 -0
- package/dist/commands/coords.js +122 -0
- package/dist/commands/coords.js.map +1 -0
- package/dist/commands/deploy.d.ts +4 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +280 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/export.d.ts +3 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +20 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/index.d.ts +3 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +19 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/info.d.ts +3 -0
- package/dist/commands/info.d.ts.map +1 -0
- package/dist/commands/info.js +186 -0
- package/dist/commands/info.js.map +1 -0
- package/dist/commands/init/help.d.ts +12 -0
- package/dist/commands/init/help.d.ts.map +1 -0
- package/dist/commands/init/help.js +41 -0
- package/dist/commands/init/help.js.map +1 -0
- package/dist/commands/init/index.d.ts +3 -0
- package/dist/commands/init/index.d.ts.map +1 -0
- package/dist/commands/init/index.js +96 -0
- package/dist/commands/init/index.js.map +1 -0
- package/dist/commands/init/library.d.ts +1 -0
- package/dist/commands/init/library.d.ts.map +1 -0
- package/dist/commands/init/library.js +2 -0
- package/dist/commands/init/library.js.map +1 -0
- package/dist/commands/init/repositories.d.ts +11 -0
- package/dist/commands/init/repositories.d.ts.map +1 -0
- package/dist/commands/init/repositories.js +40 -0
- package/dist/commands/init/repositories.js.map +1 -0
- package/dist/commands/init/scene.d.ts +3 -0
- package/dist/commands/init/scene.d.ts.map +1 -0
- package/dist/commands/init/scene.js +56 -0
- package/dist/commands/init/scene.js.map +1 -0
- package/dist/commands/init/types.d.ts +22 -0
- package/dist/commands/init/types.d.ts.map +1 -0
- package/dist/commands/init/types.js +3 -0
- package/dist/commands/init/types.js.map +1 -0
- package/dist/commands/init/utils.d.ts +6 -0
- package/dist/commands/init/utils.d.ts.map +1 -0
- package/dist/commands/init/utils.js +76 -0
- package/dist/commands/init/utils.js.map +1 -0
- package/dist/commands/install.d.ts +3 -0
- package/dist/commands/install.d.ts.map +1 -0
- package/dist/commands/install.js +92 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/pack.d.ts +3 -0
- package/dist/commands/pack.d.ts.map +1 -0
- package/dist/commands/pack.js +102 -0
- package/dist/commands/pack.js.map +1 -0
- package/dist/commands/start.d.ts +3 -0
- package/dist/commands/start.d.ts.map +1 -0
- package/dist/commands/start.js +235 -0
- package/dist/commands/start.js.map +1 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +80 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/workspace.d.ts +3 -0
- package/dist/commands/workspace.d.ts.map +1 -0
- package/dist/commands/workspace.js +81 -0
- package/dist/commands/workspace.js.map +1 -0
- package/dist/commands/world-acl.d.ts +22 -0
- package/dist/commands/world-acl.d.ts.map +1 -0
- package/dist/commands/world-acl.js +262 -0
- package/dist/commands/world-acl.js.map +1 -0
- package/dist/config.d.ts +31 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +128 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/API.d.ts +23 -0
- package/dist/lib/API.d.ts.map +1 -0
- package/dist/lib/API.js +175 -0
- package/dist/lib/API.js.map +1 -0
- package/dist/lib/Decentraland.d.ts +75 -0
- package/dist/lib/Decentraland.d.ts.map +1 -0
- package/dist/lib/Decentraland.js +227 -0
- package/dist/lib/Decentraland.js.map +1 -0
- package/dist/lib/Ethereum.d.ts +52 -0
- package/dist/lib/Ethereum.d.ts.map +1 -0
- package/dist/lib/Ethereum.js +245 -0
- package/dist/lib/Ethereum.js.map +1 -0
- package/dist/lib/IEthereumDataProvider.d.ts +17 -0
- package/dist/lib/IEthereumDataProvider.d.ts.map +1 -0
- package/dist/lib/IEthereumDataProvider.js +3 -0
- package/dist/lib/IEthereumDataProvider.js.map +1 -0
- package/dist/lib/LinkerAPI.d.ts +28 -0
- package/dist/lib/LinkerAPI.d.ts.map +1 -0
- package/dist/lib/LinkerAPI.js +151 -0
- package/dist/lib/LinkerAPI.js.map +1 -0
- package/dist/lib/Preview.d.ts +17 -0
- package/dist/lib/Preview.d.ts.map +1 -0
- package/dist/lib/Preview.js +113 -0
- package/dist/lib/Preview.js.map +1 -0
- package/dist/lib/Project.d.ts +152 -0
- package/dist/lib/Project.d.ts.map +1 -0
- package/dist/lib/Project.js +446 -0
- package/dist/lib/Project.js.map +1 -0
- package/dist/lib/Workspace.d.ts +21 -0
- package/dist/lib/Workspace.d.ts.map +1 -0
- package/dist/lib/Workspace.js +140 -0
- package/dist/lib/Workspace.js.map +1 -0
- package/dist/lib/WorldsContentServer.d.ts +27 -0
- package/dist/lib/WorldsContentServer.d.ts.map +1 -0
- package/dist/lib/WorldsContentServer.js +79 -0
- package/dist/lib/WorldsContentServer.js.map +1 -0
- package/dist/lib/WorldsContentServerLinkerAPI.d.ts +21 -0
- package/dist/lib/WorldsContentServerLinkerAPI.d.ts.map +1 -0
- package/dist/lib/WorldsContentServerLinkerAPI.js +105 -0
- package/dist/lib/WorldsContentServerLinkerAPI.js.map +1 -0
- package/dist/lib/adapters/proto/broker.d.ts +2 -0
- package/dist/lib/adapters/proto/broker.d.ts.map +1 -0
- package/dist/lib/adapters/proto/broker.js +2189 -0
- package/dist/lib/adapters/proto/broker.js.map +1 -0
- package/dist/lib/adapters/proto/comms.d.ts +2 -0
- package/dist/lib/adapters/proto/comms.d.ts.map +1 -0
- package/dist/lib/adapters/proto/comms.js +965 -0
- package/dist/lib/adapters/proto/comms.js.map +1 -0
- package/dist/lib/adapters/ws.d.ts +12 -0
- package/dist/lib/adapters/ws.d.ts.map +1 -0
- package/dist/lib/adapters/ws.js +20 -0
- package/dist/lib/adapters/ws.js.map +1 -0
- package/dist/lib/content/ContentService.d.ts +27 -0
- package/dist/lib/content/ContentService.d.ts.map +1 -0
- package/dist/lib/content/ContentService.js +60 -0
- package/dist/lib/content/ContentService.js.map +1 -0
- package/dist/lib/content/types.d.ts +12 -0
- package/dist/lib/content/types.d.ts.map +1 -0
- package/dist/lib/content/types.js +3 -0
- package/dist/lib/content/types.js.map +1 -0
- package/dist/lib/controllers/bff.d.ts +8 -0
- package/dist/lib/controllers/bff.d.ts.map +1 -0
- package/dist/lib/controllers/bff.js +58 -0
- package/dist/lib/controllers/bff.js.map +1 -0
- package/dist/lib/controllers/debugger.d.ts +4 -0
- package/dist/lib/controllers/debugger.d.ts.map +1 -0
- package/dist/lib/controllers/debugger.js +42 -0
- package/dist/lib/controllers/debugger.js.map +1 -0
- package/dist/lib/controllers/ecs6-endpoints.d.ts +11 -0
- package/dist/lib/controllers/ecs6-endpoints.d.ts.map +1 -0
- package/dist/lib/controllers/ecs6-endpoints.js +543 -0
- package/dist/lib/controllers/ecs6-endpoints.js.map +1 -0
- package/dist/lib/controllers/legacy-comms-v1.d.ts +7 -0
- package/dist/lib/controllers/legacy-comms-v1.d.ts.map +1 -0
- package/dist/lib/controllers/legacy-comms-v1.js +98 -0
- package/dist/lib/controllers/legacy-comms-v1.js.map +1 -0
- package/dist/lib/smartItems/buildSmartItem.d.ts +2 -0
- package/dist/lib/smartItems/buildSmartItem.d.ts.map +1 -0
- package/dist/lib/smartItems/buildSmartItem.js +18 -0
- package/dist/lib/smartItems/buildSmartItem.js.map +1 -0
- package/dist/lib/smartItems/packProject.d.ts +2 -0
- package/dist/lib/smartItems/packProject.d.ts.map +1 -0
- package/dist/lib/smartItems/packProject.js +31 -0
- package/dist/lib/smartItems/packProject.js.map +1 -0
- package/dist/main.d.ts +2 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +151 -0
- package/dist/main.js.map +1 -0
- package/dist/project/installDependencies.d.ts +2 -0
- package/dist/project/installDependencies.d.ts.map +1 -0
- package/dist/project/installDependencies.js +57 -0
- package/dist/project/installDependencies.js.map +1 -0
- package/dist/project/isTypescriptProject.d.ts +2 -0
- package/dist/project/isTypescriptProject.d.ts.map +1 -0
- package/dist/project/isTypescriptProject.js +14 -0
- package/dist/project/isTypescriptProject.js.map +1 -0
- package/dist/project/projectInfo.d.ts +8 -0
- package/dist/project/projectInfo.d.ts.map +1 -0
- package/dist/project/projectInfo.js +89 -0
- package/dist/project/projectInfo.js.map +1 -0
- package/dist/project/updateBundleDependenciesField.d.ts +4 -0
- package/dist/project/updateBundleDependenciesField.d.ts.map +1 -0
- package/dist/project/updateBundleDependenciesField.js +67 -0
- package/dist/project/updateBundleDependenciesField.js.map +1 -0
- package/dist/sceneJson/index.d.ts +4 -0
- package/dist/sceneJson/index.d.ts.map +1 -0
- package/dist/sceneJson/index.js +24 -0
- package/dist/sceneJson/index.js.map +1 -0
- package/dist/sceneJson/lintSceneFile.d.ts +2 -0
- package/dist/sceneJson/lintSceneFile.d.ts.map +1 -0
- package/dist/sceneJson/lintSceneFile.js +13 -0
- package/dist/sceneJson/lintSceneFile.js.map +1 -0
- package/dist/sceneJson/utils.d.ts +3 -0
- package/dist/sceneJson/utils.d.ts.map +1 -0
- package/dist/sceneJson/utils.js +66 -0
- package/dist/sceneJson/utils.js.map +1 -0
- package/dist/utils/analytics.d.ts +42 -0
- package/dist/utils/analytics.d.ts.map +1 -0
- package/dist/utils/analytics.js +111 -0
- package/dist/utils/analytics.js.map +1 -0
- package/dist/utils/buildProject.d.ts +2 -0
- package/dist/utils/buildProject.d.ts.map +1 -0
- package/dist/utils/buildProject.js +26 -0
- package/dist/utils/buildProject.js.map +1 -0
- package/dist/utils/catalystPointers.d.ts +20 -0
- package/dist/utils/catalystPointers.d.ts.map +1 -0
- package/dist/utils/catalystPointers.js +51 -0
- package/dist/utils/catalystPointers.js.map +1 -0
- package/dist/utils/coordinateHelpers.d.ts +65 -0
- package/dist/utils/coordinateHelpers.d.ts.map +1 -0
- package/dist/utils/coordinateHelpers.js +126 -0
- package/dist/utils/coordinateHelpers.js.map +1 -0
- package/dist/utils/download.d.ts +3 -0
- package/dist/utils/download.d.ts.map +1 -0
- package/dist/utils/download.js +42 -0
- package/dist/utils/download.js.map +1 -0
- package/dist/utils/env.d.ts +6 -0
- package/dist/utils/env.d.ts.map +1 -0
- package/dist/utils/env.js +31 -0
- package/dist/utils/env.js.map +1 -0
- package/dist/utils/errors.d.ts +18 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +27 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/filesystem.d.ts +41 -0
- package/dist/utils/filesystem.d.ts.map +1 -0
- package/dist/utils/filesystem.js +84 -0
- package/dist/utils/filesystem.js.map +1 -0
- package/dist/utils/getDummyMappings.d.ts +3 -0
- package/dist/utils/getDummyMappings.d.ts.map +1 -0
- package/dist/utils/getDummyMappings.js +19 -0
- package/dist/utils/getDummyMappings.js.map +1 -0
- package/dist/utils/getProjectFilePaths.d.ts +2 -0
- package/dist/utils/getProjectFilePaths.d.ts.map +1 -0
- package/dist/utils/getProjectFilePaths.js +40 -0
- package/dist/utils/getProjectFilePaths.js.map +1 -0
- package/dist/utils/index.d.ts +11 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +33 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/installedDependencies.d.ts +6 -0
- package/dist/utils/installedDependencies.d.ts.map +1 -0
- package/dist/utils/installedDependencies.js +44 -0
- package/dist/utils/installedDependencies.js.map +1 -0
- package/dist/utils/land.d.ts +4 -0
- package/dist/utils/land.d.ts.map +1 -0
- package/dist/utils/land.js +35 -0
- package/dist/utils/land.js.map +1 -0
- package/dist/utils/logging.d.ts +19 -0
- package/dist/utils/logging.d.ts.map +1 -0
- package/dist/utils/logging.js +97 -0
- package/dist/utils/logging.js.map +1 -0
- package/dist/utils/moduleHelpers.d.ts +22 -0
- package/dist/utils/moduleHelpers.d.ts.map +1 -0
- package/dist/utils/moduleHelpers.js +163 -0
- package/dist/utils/moduleHelpers.js.map +1 -0
- package/dist/utils/nodeAndNpmVersion.d.ts +5 -0
- package/dist/utils/nodeAndNpmVersion.d.ts.map +1 -0
- package/dist/utils/nodeAndNpmVersion.js +64 -0
- package/dist/utils/nodeAndNpmVersion.js.map +1 -0
- package/dist/utils/pathsExistOnDir.d.ts +2 -0
- package/dist/utils/pathsExistOnDir.d.ts.map +1 -0
- package/dist/utils/pathsExistOnDir.js +12 -0
- package/dist/utils/pathsExistOnDir.js.map +1 -0
- package/dist/utils/project.d.ts +29 -0
- package/dist/utils/project.d.ts.map +1 -0
- package/dist/utils/project.js +48 -0
- package/dist/utils/project.js.map +1 -0
- package/dist/utils/shellCommands.d.ts +19 -0
- package/dist/utils/shellCommands.d.ts.map +1 -0
- package/dist/utils/shellCommands.js +73 -0
- package/dist/utils/shellCommands.js.map +1 -0
- package/dist/utils/spinner.d.ts +6 -0
- package/dist/utils/spinner.d.ts.map +1 -0
- package/dist/utils/spinner.js +58 -0
- package/dist/utils/spinner.js.map +1 -0
- package/package.json +115 -0
- package/samples/workspace/Dockerfile +21 -0
- package/samples/workspace/package.json +16 -0
- package/sbzkmrj2.cjs +1 -0
@@ -0,0 +1,262 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
15
|
+
}) : function(o, v) {
|
16
|
+
o["default"] = v;
|
17
|
+
});
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
19
|
+
if (mod && mod.__esModule) return mod;
|
20
|
+
var result = {};
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
22
|
+
__setModuleDefault(result, mod);
|
23
|
+
return result;
|
24
|
+
};
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
27
|
+
};
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
29
|
+
exports.getAuthHeaders = exports.AUTH_METADATA_HEADER = exports.AUTH_TIMESTAMP_HEADER = exports.AUTH_CHAIN_HEADER_PREFIX = exports.WorldPermissionType = exports.main = exports.help = void 0;
|
30
|
+
const chalk_1 = __importDefault(require("chalk"));
|
31
|
+
const errors_1 = require("../utils/errors");
|
32
|
+
const spinner = __importStar(require("../utils/spinner"));
|
33
|
+
const node_fetch_1 = __importDefault(require("node-fetch"));
|
34
|
+
const arg_1 = __importDefault(require("arg"));
|
35
|
+
const opn_1 = __importDefault(require("opn"));
|
36
|
+
const crypto_1 = require("@dcl/crypto");
|
37
|
+
const WorldsContentServer_1 = require("../lib/WorldsContentServer");
|
38
|
+
const analytics_1 = require("../utils/analytics");
|
39
|
+
const spec = {
|
40
|
+
'--help': Boolean,
|
41
|
+
'-h': '--help',
|
42
|
+
'--https': Boolean,
|
43
|
+
'--target-content': String,
|
44
|
+
'-t': '--target-content',
|
45
|
+
'--port': String,
|
46
|
+
'-p': '--port'
|
47
|
+
};
|
48
|
+
function help() {
|
49
|
+
return `
|
50
|
+
Usage: ${chalk_1.default.bold('dcl world-acl [world-name] SUBCOMMAND [options]')}
|
51
|
+
|
52
|
+
${chalk_1.default.dim('Sub commands:')}
|
53
|
+
show List all addresses allowed to deploy a scene to a specified world.
|
54
|
+
grant addr Grant permission to new address to deploy a scene to a specified world.
|
55
|
+
revoke addr Remove permission for given address to deploy a scene to a specified world.
|
56
|
+
|
57
|
+
|
58
|
+
${chalk_1.default.dim('Options:')}
|
59
|
+
|
60
|
+
-h, --help Displays complete help
|
61
|
+
-p, --port [port] Select a custom port for the linker app (for signing with browser wallet)
|
62
|
+
-t, --target-content [url] Specifies the base URL for the target Worlds Content Server. Example: 'https://worlds-content-server.decentraland.org'.
|
63
|
+
|
64
|
+
${chalk_1.default.dim('Examples:')}
|
65
|
+
- Show which addresses were given permission to deploy name.dcl.eth
|
66
|
+
${chalk_1.default.green('$ dcl world-acl name.dcl.eth show')}
|
67
|
+
|
68
|
+
- Grant address 0x1 permission to deploy name.dcl.eth
|
69
|
+
${chalk_1.default.green('$ dcl world-acl name.dcl.eth grant 0x1')}
|
70
|
+
|
71
|
+
- Revoke address 0x1 permission to deploy name.dcl.eth
|
72
|
+
${chalk_1.default.green('$ dcl world-acl name.dcl.eth revoke 0x1')}
|
73
|
+
`;
|
74
|
+
}
|
75
|
+
exports.help = help;
|
76
|
+
async function main() {
|
77
|
+
if (process.argv.length <= 4) {
|
78
|
+
(0, errors_1.fail)(errors_1.ErrorType.WORLD_CONTENT_SERVER_ERROR, `The subcommand is not recognized`);
|
79
|
+
}
|
80
|
+
const args = (0, arg_1.default)(spec);
|
81
|
+
if (!args['--target-content']) {
|
82
|
+
args['--target-content'] = 'https://worlds-content-server.decentraland.org';
|
83
|
+
}
|
84
|
+
analytics_1.Analytics.worldAcl({
|
85
|
+
action: args._[2].toLowerCase()
|
86
|
+
});
|
87
|
+
const subcommandList = {
|
88
|
+
show: showAcl,
|
89
|
+
grant: grantAcl,
|
90
|
+
revoke: revokeAcl,
|
91
|
+
help: async () => console.log(help())
|
92
|
+
};
|
93
|
+
const subcommand = args._[2].toLowerCase();
|
94
|
+
if (subcommand in subcommandList) {
|
95
|
+
await subcommandList[subcommand](args);
|
96
|
+
}
|
97
|
+
else {
|
98
|
+
(0, errors_1.fail)(errors_1.ErrorType.WORLD_CONTENT_SERVER_ERROR, `The subcommand ${subcommand} is not recognized`);
|
99
|
+
}
|
100
|
+
}
|
101
|
+
exports.main = main;
|
102
|
+
class HTTPResponseError extends Error {
|
103
|
+
constructor(response) {
|
104
|
+
super(`HTTP Error Response: ${response.status} ${response.statusText} for URL ${response.url}`);
|
105
|
+
this.response = response;
|
106
|
+
}
|
107
|
+
}
|
108
|
+
const checkStatus = (response) => {
|
109
|
+
if (response.ok) {
|
110
|
+
// response.status >= 200 && response.status < 300
|
111
|
+
return response;
|
112
|
+
}
|
113
|
+
throw new HTTPResponseError(response);
|
114
|
+
};
|
115
|
+
var WorldPermissionType;
|
116
|
+
(function (WorldPermissionType) {
|
117
|
+
WorldPermissionType["Unrestricted"] = "unrestricted";
|
118
|
+
WorldPermissionType["AllowList"] = "allow-list";
|
119
|
+
})(WorldPermissionType = exports.WorldPermissionType || (exports.WorldPermissionType = {}));
|
120
|
+
async function fetchAcl(worldName, targetContent) {
|
121
|
+
spinner.create(`Fetching acl for world ${worldName}`);
|
122
|
+
try {
|
123
|
+
const data = await (0, node_fetch_1.default)(`${targetContent}/world/${worldName}/permissions`)
|
124
|
+
.then(checkStatus)
|
125
|
+
.then((res) => res.json());
|
126
|
+
spinner.succeed();
|
127
|
+
return data.permissions.deployment;
|
128
|
+
}
|
129
|
+
catch (error) {
|
130
|
+
spinner.fail(await error.response.text());
|
131
|
+
throw error;
|
132
|
+
}
|
133
|
+
}
|
134
|
+
async function storeAcl(worldName, headers, targetContent, path, method) {
|
135
|
+
spinner.create(`Storing acl for world ${worldName}`);
|
136
|
+
try {
|
137
|
+
await (0, node_fetch_1.default)(`${targetContent}${path}`, {
|
138
|
+
method: method,
|
139
|
+
headers: Object.assign(Object.assign({}, headers), { 'Content-Type': 'application/json' })
|
140
|
+
}).then(checkStatus);
|
141
|
+
spinner.succeed(`Stored acl for world ${worldName}`);
|
142
|
+
return true;
|
143
|
+
}
|
144
|
+
catch (error) {
|
145
|
+
const message = error.response.headers.get('content-type') === 'application/json'
|
146
|
+
? (await error.response.json()).message
|
147
|
+
: await error.response.text();
|
148
|
+
spinner.fail(message);
|
149
|
+
throw Error(message);
|
150
|
+
}
|
151
|
+
}
|
152
|
+
function displayPermissionToConsole(data, worldName) {
|
153
|
+
if (data.wallets.length === 0) {
|
154
|
+
console.log(`${chalk_1.default.dim('Only the owner of')} ${chalk_1.default.bold(worldName)} ${chalk_1.default.dim('can deploy scenes under that name.')}`);
|
155
|
+
}
|
156
|
+
else {
|
157
|
+
console.log(`${chalk_1.default.dim('The following addresses are authorized to deploy scenes under')} ${chalk_1.default.bold(worldName)}${chalk_1.default.dim(':')}`);
|
158
|
+
data.wallets.forEach((address) => {
|
159
|
+
console.log(` ${chalk_1.default.bold(address)}`);
|
160
|
+
});
|
161
|
+
}
|
162
|
+
}
|
163
|
+
async function showAcl(args) {
|
164
|
+
const worldName = args._[1];
|
165
|
+
const targetContent = args['--target-content'];
|
166
|
+
try {
|
167
|
+
const data = await fetchAcl(worldName, targetContent);
|
168
|
+
displayPermissionToConsole(data, worldName);
|
169
|
+
}
|
170
|
+
catch (_) {
|
171
|
+
process.exit(1);
|
172
|
+
}
|
173
|
+
}
|
174
|
+
async function grantAcl(args) {
|
175
|
+
const worldName = args._[1];
|
176
|
+
const addresses = args._.slice(3);
|
177
|
+
try {
|
178
|
+
if (addresses.length > 1) {
|
179
|
+
(0, errors_1.fail)(errors_1.ErrorType.WORLD_CONTENT_SERVER_ERROR, `Only one address can be granted at a time.`);
|
180
|
+
}
|
181
|
+
await signAndStoreAcl(args, { resource: worldName, allowed: addresses[0], method: 'put' });
|
182
|
+
}
|
183
|
+
catch (error) {
|
184
|
+
spinner.fail(error.message);
|
185
|
+
throw Error(error.message);
|
186
|
+
}
|
187
|
+
}
|
188
|
+
async function revokeAcl(args) {
|
189
|
+
const worldName = args._[1];
|
190
|
+
const addresses = args._.slice(3);
|
191
|
+
try {
|
192
|
+
if (addresses.length > 1) {
|
193
|
+
(0, errors_1.fail)(errors_1.ErrorType.WORLD_CONTENT_SERVER_ERROR, `Only one address can be revoke at a time.`);
|
194
|
+
}
|
195
|
+
await signAndStoreAcl(args, { resource: worldName, allowed: addresses[0], method: 'delete' });
|
196
|
+
}
|
197
|
+
catch (error) {
|
198
|
+
spinner.fail(error.message);
|
199
|
+
throw Error(error.message);
|
200
|
+
}
|
201
|
+
}
|
202
|
+
async function signAndStoreAcl(args, acl) {
|
203
|
+
const path = `/world/${acl.resource}/permissions/deployment/${acl.allowed}`;
|
204
|
+
const timestamp = Date.now().toString();
|
205
|
+
const payload = [acl.method, path, timestamp, '{}'].join(':').toLowerCase();
|
206
|
+
const port = args['--port'];
|
207
|
+
const parsedPort = port ? parseInt(port, 10) : void 0;
|
208
|
+
const linkerPort = parsedPort && Number.isInteger(parsedPort) ? parsedPort : void 0;
|
209
|
+
const targetContent = args['--target-content'];
|
210
|
+
const worldsContentServer = new WorldsContentServer_1.WorldsContentServer({
|
211
|
+
worldName: acl.resource,
|
212
|
+
allowed: [acl.allowed],
|
213
|
+
oldAllowed: [],
|
214
|
+
isHttps: !!args['--https'],
|
215
|
+
targetContent,
|
216
|
+
linkerPort,
|
217
|
+
method: acl.method
|
218
|
+
});
|
219
|
+
worldsContentServer.on('link:ready', ({ url }) => {
|
220
|
+
console.log(chalk_1.default.bold('You need to sign the acl:'));
|
221
|
+
spinner.create(`Signing app ready at ${url}`);
|
222
|
+
setTimeout(async () => {
|
223
|
+
try {
|
224
|
+
await (0, opn_1.default)(`${url}/acl`);
|
225
|
+
}
|
226
|
+
catch (e) {
|
227
|
+
console.log(`Unable to open browser automatically`);
|
228
|
+
}
|
229
|
+
}, 5000);
|
230
|
+
worldsContentServer.on('link:success', ({ address, signature }) => {
|
231
|
+
spinner.succeed(`ACL successfully signed.`);
|
232
|
+
console.log(`${chalk_1.default.bold('Address:')} ${address}`);
|
233
|
+
console.log(`${chalk_1.default.bold('Signature:')} ${signature}`);
|
234
|
+
});
|
235
|
+
});
|
236
|
+
const { signature, address } = await worldsContentServer.getAddressAndSignature(payload);
|
237
|
+
const authChain = crypto_1.Authenticator.createSimpleAuthChain(payload, address, signature);
|
238
|
+
const headers = getAuthHeaders(authChain, timestamp);
|
239
|
+
try {
|
240
|
+
await storeAcl(acl.resource, headers, targetContent, path, acl.method);
|
241
|
+
const data = await fetchAcl(acl.resource, targetContent);
|
242
|
+
displayPermissionToConsole(data, acl.resource);
|
243
|
+
}
|
244
|
+
catch (error) {
|
245
|
+
process.exit(1);
|
246
|
+
}
|
247
|
+
process.exit();
|
248
|
+
}
|
249
|
+
exports.AUTH_CHAIN_HEADER_PREFIX = 'x-identity-auth-chain-';
|
250
|
+
exports.AUTH_TIMESTAMP_HEADER = 'x-identity-timestamp';
|
251
|
+
exports.AUTH_METADATA_HEADER = 'x-identity-metadata';
|
252
|
+
function getAuthHeaders(authChain, timestamp) {
|
253
|
+
const headers = {};
|
254
|
+
authChain.forEach((link, index) => {
|
255
|
+
headers[`${exports.AUTH_CHAIN_HEADER_PREFIX}${index}`] = JSON.stringify(link);
|
256
|
+
});
|
257
|
+
headers[exports.AUTH_TIMESTAMP_HEADER] = timestamp;
|
258
|
+
headers[exports.AUTH_METADATA_HEADER] = JSON.stringify({});
|
259
|
+
return headers;
|
260
|
+
}
|
261
|
+
exports.getAuthHeaders = getAuthHeaders;
|
262
|
+
//# sourceMappingURL=world-acl.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"world-acl.js","sourceRoot":"","sources":["../../src/commands/world-acl.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
export declare type DCLInfo = {
|
2
|
+
fileExists?: boolean;
|
3
|
+
userId: string;
|
4
|
+
trackStats: boolean;
|
5
|
+
provider?: string;
|
6
|
+
MANAToken?: string;
|
7
|
+
LANDRegistry?: string;
|
8
|
+
EstateRegistry?: string;
|
9
|
+
catalystUrl?: string;
|
10
|
+
dclApiUrl?: string;
|
11
|
+
segmentKey?: string;
|
12
|
+
};
|
13
|
+
/**
|
14
|
+
* Creates the `.dclinfo` file in the HOME directory
|
15
|
+
*/
|
16
|
+
export declare function createDCLInfo(dclInfo: DCLInfo): Promise<void>;
|
17
|
+
/**
|
18
|
+
* Add new configuration to `.dclinfo` file
|
19
|
+
*/
|
20
|
+
export declare function writeDCLInfo(newInfo: DCLInfo): Promise<void>;
|
21
|
+
/**
|
22
|
+
* Reads `.dclinfo` file and loads it in-memory to be sync-obtained with `getDCLInfo()` function
|
23
|
+
*/
|
24
|
+
export declare function loadConfig(network: string): Promise<DCLInfo>;
|
25
|
+
/**
|
26
|
+
* Returns the contents of the `.dclinfo` file. It needs to be loaded first with `loadConfig()` function
|
27
|
+
*/
|
28
|
+
export declare function getDCLInfo(): DCLInfo;
|
29
|
+
export declare function getConfig(network?: string): DCLInfo;
|
30
|
+
export declare function getCustomConfig(): Partial<DCLInfo>;
|
31
|
+
//# sourceMappingURL=config.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAOA,oBAAY,OAAO,GAAG;IACpB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAyBD;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,iBAG7C;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,OAAO,iBAElD;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAIlE;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAED,wBAAgB,SAAS,CAAC,OAAO,GAAE,MAAoB,GAAG,OAAO,CAMhE;AAED,wBAAgB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAIlD"}
|
package/dist/config.js
ADDED
@@ -0,0 +1,128 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.getCustomConfig = exports.getConfig = exports.getDCLInfo = exports.loadConfig = exports.writeDCLInfo = exports.createDCLInfo = void 0;
|
7
|
+
const path_1 = __importDefault(require("path"));
|
8
|
+
const filesystem_1 = require("./utils/filesystem");
|
9
|
+
const utils_1 = require("./utils");
|
10
|
+
const moduleHelpers_1 = require("./utils/moduleHelpers");
|
11
|
+
const env_1 = require("./utils/env");
|
12
|
+
let networkFlag = 'mainnet';
|
13
|
+
let config;
|
14
|
+
/**
|
15
|
+
* Returns the path to the `.dclinfo` file located in the local HOME folder
|
16
|
+
*/
|
17
|
+
function getDCLInfoPath() {
|
18
|
+
return path_1.default.resolve((0, filesystem_1.getUserHome)(), '.dclinfo');
|
19
|
+
}
|
20
|
+
/**
|
21
|
+
* Reads the contents of the `.dclinfo` file
|
22
|
+
*/
|
23
|
+
async function readDCLInfo() {
|
24
|
+
const filePath = getDCLInfoPath();
|
25
|
+
try {
|
26
|
+
const file = await (0, filesystem_1.readJSON)(filePath);
|
27
|
+
return file;
|
28
|
+
}
|
29
|
+
catch (e) {
|
30
|
+
return null;
|
31
|
+
}
|
32
|
+
}
|
33
|
+
/**
|
34
|
+
* Creates the `.dclinfo` file in the HOME directory
|
35
|
+
*/
|
36
|
+
function createDCLInfo(dclInfo) {
|
37
|
+
config = dclInfo;
|
38
|
+
return (0, filesystem_1.writeJSON)(getDCLInfoPath(), dclInfo);
|
39
|
+
}
|
40
|
+
exports.createDCLInfo = createDCLInfo;
|
41
|
+
/**
|
42
|
+
* Add new configuration to `.dclinfo` file
|
43
|
+
*/
|
44
|
+
async function writeDCLInfo(newInfo) {
|
45
|
+
return (0, filesystem_1.writeJSON)(getDCLInfoPath(), Object.assign(Object.assign({}, config), { newInfo }));
|
46
|
+
}
|
47
|
+
exports.writeDCLInfo = writeDCLInfo;
|
48
|
+
/**
|
49
|
+
* Reads `.dclinfo` file and loads it in-memory to be sync-obtained with `getDCLInfo()` function
|
50
|
+
*/
|
51
|
+
async function loadConfig(network) {
|
52
|
+
networkFlag = network;
|
53
|
+
config = (await readDCLInfo());
|
54
|
+
return config;
|
55
|
+
}
|
56
|
+
exports.loadConfig = loadConfig;
|
57
|
+
/**
|
58
|
+
* Returns the contents of the `.dclinfo` file. It needs to be loaded first with `loadConfig()` function
|
59
|
+
*/
|
60
|
+
function getDCLInfo() {
|
61
|
+
return config;
|
62
|
+
}
|
63
|
+
exports.getDCLInfo = getDCLInfo;
|
64
|
+
function getConfig(network = networkFlag) {
|
65
|
+
const envConfig = getEnvConfig();
|
66
|
+
const dclInfoConfig = getDclInfoConfig();
|
67
|
+
const defaultConfig = getDefaultConfig(network);
|
68
|
+
const config = Object.assign(Object.assign(Object.assign({}, defaultConfig), dclInfoConfig), envConfig);
|
69
|
+
return config;
|
70
|
+
}
|
71
|
+
exports.getConfig = getConfig;
|
72
|
+
function getCustomConfig() {
|
73
|
+
const envConfig = getEnvConfig();
|
74
|
+
const dclInfoConfig = getDclInfoConfig();
|
75
|
+
return Object.assign(Object.assign({}, dclInfoConfig), envConfig);
|
76
|
+
}
|
77
|
+
exports.getCustomConfig = getCustomConfig;
|
78
|
+
function getDefaultConfig(network) {
|
79
|
+
const isMainnet = network === 'mainnet';
|
80
|
+
return {
|
81
|
+
userId: '',
|
82
|
+
trackStats: false,
|
83
|
+
provider: (0, env_1.isDevelopment)() ? 'https://sepolia.infura.io/' : 'https://mainnet.infura.io/',
|
84
|
+
MANAToken: isMainnet ? '0x0f5d2fb29fb7d3cfee444a200298f468908cc942' : '0xfa04d2e2ba9aec166c93dfeeba7427b2303befa9',
|
85
|
+
LANDRegistry: isMainnet
|
86
|
+
? '0xf87e31492faf9a91b02ee0deaad50d51d56d5d4d'
|
87
|
+
: '0x42f4ba48791e2de32f5fbf553441c2672864bb33',
|
88
|
+
EstateRegistry: isMainnet
|
89
|
+
? '0x959e104e1a4db6317fa58f8295f586e1a978c297'
|
90
|
+
: '0x369a7fbe718c870c79f99fb423882e8dd8b20486',
|
91
|
+
catalystUrl: isMainnet ? 'https://peer.decentraland.org' : 'https://peer-ue-2.decentraland.zone',
|
92
|
+
dclApiUrl: isMainnet
|
93
|
+
? 'https://subgraph.decentraland.org/land-manager'
|
94
|
+
: 'https://api.studio.thegraph.com/query/49472/land-manager-sepolia/version/latest',
|
95
|
+
segmentKey: (0, moduleHelpers_1.isStableVersion)() && !(0, env_1.isDevelopment)() ? 'sFdziRVDJo0taOnGzTZwafEL9nLIANZ3' : 'mjCV5Dc4VAKXLJAH5g7LyHyW1jrIR3to'
|
96
|
+
};
|
97
|
+
}
|
98
|
+
function getDclInfoConfig() {
|
99
|
+
const dclInfo = getDCLInfo();
|
100
|
+
const fileExists = !!dclInfo;
|
101
|
+
if (!fileExists) {
|
102
|
+
return { fileExists };
|
103
|
+
}
|
104
|
+
const dclInfoConfig = {
|
105
|
+
fileExists,
|
106
|
+
userId: dclInfo.userId,
|
107
|
+
trackStats: !!dclInfo.trackStats,
|
108
|
+
MANAToken: dclInfo.MANAToken,
|
109
|
+
LANDRegistry: dclInfo.LANDRegistry,
|
110
|
+
EstateRegistry: dclInfo.EstateRegistry,
|
111
|
+
catalystUrl: dclInfo.catalystUrl,
|
112
|
+
segmentKey: dclInfo.segmentKey
|
113
|
+
};
|
114
|
+
return (0, utils_1.removeEmptyKeys)(dclInfoConfig);
|
115
|
+
}
|
116
|
+
function getEnvConfig() {
|
117
|
+
const { RPC_URL, MANA_TOKEN, LAND_REGISTRY, ESTATE_REGISTRY, CONTENT_URL, SEGMENT_KEY } = process.env;
|
118
|
+
const envConfig = {
|
119
|
+
provider: RPC_URL,
|
120
|
+
MANAToken: MANA_TOKEN,
|
121
|
+
LANDRegistry: LAND_REGISTRY,
|
122
|
+
EstateRegistry: ESTATE_REGISTRY,
|
123
|
+
contentUrl: CONTENT_URL,
|
124
|
+
segmentKey: SEGMENT_KEY
|
125
|
+
};
|
126
|
+
return (0, utils_1.removeEmptyKeys)(envConfig);
|
127
|
+
}
|
128
|
+
//# sourceMappingURL=config.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
#!/usr/bin/env node
|
2
|
+
"use strict";
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
5
|
+
};
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
8
|
+
const path_1 = __importDefault(require("path"));
|
9
|
+
const main_1 = require("./main");
|
10
|
+
fs_1.default.readFile(path_1.default.resolve(__dirname, '../package.json'), 'utf8', (err, data) => {
|
11
|
+
if (err) {
|
12
|
+
console.error('There was an unexpected error.', err);
|
13
|
+
process.exit(1);
|
14
|
+
}
|
15
|
+
const { version } = JSON.parse(data);
|
16
|
+
(0, main_1.main)(version).catch((err) => {
|
17
|
+
console.error(err);
|
18
|
+
process.exit(1);
|
19
|
+
});
|
20
|
+
});
|
21
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAEA,4CAAmB;AACnB,gDAAuB;AAEvB,iCAA6B;AAE7B,YAAE,CAAC,QAAQ,CAAC,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;IAC5E,IAAI,GAAG,EAAE;QACP,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAA;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;KAChB;IAED,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACpC,IAAA,WAAI,EAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE;QAC/B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
import { LANDData } from './Ethereum';
|
2
|
+
import { IEthereumDataProvider } from './IEthereumDataProvider';
|
3
|
+
import { Coords } from '../utils/coordinateHelpers';
|
4
|
+
export declare class API implements IEthereumDataProvider {
|
5
|
+
private readonly fetcher;
|
6
|
+
getEstateIdOfLand({ x, y }: Coords): Promise<number>;
|
7
|
+
getEstateData(estateId: number): Promise<LANDData>;
|
8
|
+
getEstateOwner(estateId: number): Promise<string>;
|
9
|
+
getEstateOperator(estateId: number): Promise<string>;
|
10
|
+
getEstateUpdateOperator(estateId: number): Promise<string>;
|
11
|
+
getLandOfEstate(estateId: number): Promise<Coords[]>;
|
12
|
+
getLandData({ x, y }: Coords): Promise<LANDData>;
|
13
|
+
getLandOwner({ x, y }: Coords): Promise<string>;
|
14
|
+
getLandOperator({ x, y }: Coords): Promise<string>;
|
15
|
+
getLandUpdateOperator({ x, y }: Coords): Promise<string>;
|
16
|
+
getLandOf(owner: string): Promise<Coords[]>;
|
17
|
+
getEstatesOf(owner: string): Promise<number[]>;
|
18
|
+
/**
|
19
|
+
* We are making paginated queries to the subgraph, sorting by id and asking for the next ones
|
20
|
+
*/
|
21
|
+
private queryGraphPaginated;
|
22
|
+
}
|
23
|
+
//# sourceMappingURL=API.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"API.d.ts","sourceRoot":"","sources":["../../src/lib/API.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAMnD,qBAAa,GAAI,YAAW,qBAAqB;IAC/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IAE3C,iBAAiB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAepD,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAiBlD,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAejD,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAapD,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAc1D,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAyBpD,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAiBhD,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAa/C,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAWlD,qBAAqB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAWxD,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAoB3C,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAepD;;OAEG;YACW,mBAAmB;CAwBlC"}
|