@campnetwork/origin 0.0.1 → 0.0.3

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.
@@ -1,42 +1,13 @@
1
1
  'use client';
2
- import React, { createContext, useState, useContext, useLayoutEffect, useEffect, useRef, useSyncExternalStore } from 'react';
3
- import { Auth } from '../core.esm';
2
+ import React, { createContext, useState, useContext, useEffect, useLayoutEffect, useRef, useSyncExternalStore } from 'react';
3
+ import { custom, createWalletClient, createPublicClient, http, erc20Abi, getAbiItem, encodeFunctionData, zeroAddress } from 'viem';
4
+ import { toAccount } from 'viem/accounts';
5
+ import { createSiweMessage } from 'viem/siwe';
6
+ import axios from 'axios';
4
7
  import { WagmiContext, useAccount, useConnectorClient } from 'wagmi';
5
- import 'axios';
6
- import 'viem';
7
- import 'viem/accounts';
8
- import 'viem/siwe';
9
- import { EthereumProvider } from '@walletconnect/ethereum-provider';
10
8
  import ReactDOM, { createPortal } from 'react-dom';
11
9
  import { useQuery } from '@tanstack/react-query';
12
10
 
13
- const ModalContext = createContext({
14
- isButtonDisabled: false,
15
- setIsButtonDisabled: () => { },
16
- isVisible: false,
17
- setIsVisible: () => { },
18
- isLinkingVisible: false,
19
- setIsLinkingVisible: () => { },
20
- currentlyLinking: null,
21
- setCurrentlyLinking: () => { },
22
- });
23
- const ModalProvider = ({ children }) => {
24
- const [isVisible, setIsVisible] = useState(false);
25
- const [isLinkingVisible, setIsLinkingVisible] = useState(false);
26
- const [currentlyLinking, setCurrentlyLinking] = useState(null);
27
- const [isButtonDisabled, setIsButtonDisabled] = useState(false);
28
- return (React.createElement(ModalContext.Provider, { value: {
29
- isButtonDisabled,
30
- setIsButtonDisabled,
31
- isVisible,
32
- setIsVisible,
33
- isLinkingVisible,
34
- setIsLinkingVisible,
35
- currentlyLinking,
36
- setCurrentlyLinking,
37
- } }, children));
38
- };
39
-
40
11
  /******************************************************************************
41
12
  Copyright (c) Microsoft Corporation.
42
13
 
@@ -76,42 +47,39 @@ function __awaiter(thisArg, _arguments, P, generator) {
76
47
  });
77
48
  }
78
49
 
50
+ function __classPrivateFieldGet(receiver, state, kind, f) {
51
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
52
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
53
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
54
+ }
55
+
56
+ function __classPrivateFieldSet(receiver, state, value, kind, f) {
57
+ if (kind === "m") throw new TypeError("Private method is not writable");
58
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
59
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
60
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
61
+ }
62
+
79
63
  typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
80
64
  var e = new Error(message);
81
65
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
82
66
  };
83
67
 
84
- /**
85
- * Formats an Ethereum address by truncating it to the first and last n characters.
86
- * @param {string} address - The Ethereum address to format.
87
- * @param {number} n - The number of characters to keep from the start and end of the address.
88
- * @return {string} - The formatted address.
89
- */
90
- const formatAddress = (address, n = 8) => {
91
- return `${address.slice(0, n)}...${address.slice(-n)}`;
92
- };
93
- /**
94
- * Capitalizes the first letter of a string.
95
- * @param {string} str - The string to capitalize.
96
- * @return {string} - The capitalized string.
97
- */
98
- const capitalize = (str) => {
99
- return str.charAt(0).toUpperCase() + str.slice(1);
100
- };
101
- /**
102
- * Formats a Camp amount to a human-readable string.
103
- * @param {number} amount - The Camp amount to format.
104
- * @returns {string} - The formatted Camp amount.
105
- */
106
- const formatCampAmount = (amount) => {
107
- if (amount >= 1000) {
108
- const formatted = (amount / 1000).toFixed(1);
109
- return formatted.endsWith(".0")
110
- ? formatted.slice(0, -2) + "k"
111
- : formatted + "k";
68
+ class APIError extends Error {
69
+ constructor(message, statusCode) {
70
+ super(message);
71
+ this.name = "APIError";
72
+ this.statusCode = statusCode || 500;
73
+ Error.captureStackTrace(this, this.constructor);
112
74
  }
113
- return amount.toString();
114
- };
75
+ toJSON() {
76
+ return {
77
+ error: this.name,
78
+ message: this.message,
79
+ statusCode: this.statusCode || 500,
80
+ };
81
+ }
82
+ }
115
83
 
116
84
  const testnet = {
117
85
  id: 123420001114,
@@ -137,6 +105,41 @@ const testnet = {
137
105
  },
138
106
  };
139
107
 
108
+ // @ts-ignore
109
+ let client = null;
110
+ let publicClient = null;
111
+ const getClient = (provider, name = "window.ethereum", address) => {
112
+ var _a;
113
+ if (!provider && !client) {
114
+ console.warn("Provider is required to create a client.");
115
+ return null;
116
+ }
117
+ if (!client ||
118
+ (client.transport.name !== name && provider) ||
119
+ (address !== ((_a = client.account) === null || _a === void 0 ? void 0 : _a.address) && provider)) {
120
+ const obj = {
121
+ chain: testnet,
122
+ transport: custom(provider, {
123
+ name: name,
124
+ }),
125
+ };
126
+ if (address) {
127
+ obj.account = toAccount(address);
128
+ }
129
+ client = createWalletClient(obj);
130
+ }
131
+ return client;
132
+ };
133
+ const getPublicClient = () => {
134
+ if (!publicClient) {
135
+ publicClient = createPublicClient({
136
+ chain: testnet,
137
+ transport: http(),
138
+ });
139
+ }
140
+ return publicClient;
141
+ };
142
+
140
143
  var constants = {
141
144
  SIWE_MESSAGE_STATEMENT: "Connect with Camp Network",
142
145
  AUTH_HUB_BASE_API: "https://wv2h4to5qa.execute-api.us-east-2.amazonaws.com/dev",
@@ -150,7 +153,7 @@ var constants = {
150
153
  SUPPORTED_VIDEO_FORMATS: ["video/mp4", "video/webm"],
151
154
  SUPPORTED_AUDIO_FORMATS: ["audio/mpeg", "audio/wav", "audio/ogg"],
152
155
  SUPPORTED_TEXT_FORMATS: ["text/plain"],
153
- AVAILABLE_SOCIALS: ["twitter", "discord", "spotify", "tiktok", "telegram"],
156
+ AVAILABLE_SOCIALS: ["twitter", "spotify", "tiktok"],
154
157
  ACKEE_INSTANCE: "https://ackee-production-01bd.up.railway.app",
155
158
  ACKEE_EVENTS: {
156
159
  USER_CONNECTED: "ed42542d-b676-4112-b6d9-6db98048b2e0",
@@ -161,6 +164,8 @@ var constants = {
161
164
  TIKTOK_LINKED: "4a2ffdd3-f0e9-4784-8b49-ff76ec1c0a6a",
162
165
  TELEGRAM_LINKED: "9006bc5d-bcc9-4d01-a860-4f1a201e8e47",
163
166
  },
167
+ DATANFT_CONTRACT_ADDRESS: "0xd064817Dc0Af032c3fb5dd4671fd10E0a5F0515D",
168
+ MARKETPLACE_CONTRACT_ADDRESS: "0x3B782d053de8910cC0EF3DC09EEA055229a70c6b",
164
169
  };
165
170
 
166
171
  let providers = [];
@@ -182,391 +187,2933 @@ const providerStore = {
182
187
  };
183
188
 
184
189
  /**
185
- The MIT License (MIT)
186
-
187
- Copyright (c) Tobias Reich
188
-
189
- Permission is hereby granted, free of charge, to any person obtaining a copy
190
- of this software and associated documentation files (the "Software"), to deal
191
- in the Software without restriction, including without limitation the rights
192
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
193
- copies of the Software, and to permit persons to whom the Software is
194
- furnished to do so, subject to the following conditions:
195
-
196
- The above copyright notice and this permission notice shall be included in
197
- all copies or substantial portions of the Software.
198
-
199
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
200
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
201
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
202
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
203
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
204
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
205
- THE SOFTWARE.
206
- */
207
- const isBrowser = typeof window !== "undefined";
208
- const navigator = isBrowser
209
- ? window === null || window === void 0 ? void 0 : window.navigator
210
- : {
211
- userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3",
212
- language: "en",
213
- languages: [],
214
- platform: "",
215
- vendor: "",
216
- maxTouchPoints: 0,
217
- hardwareConcurrency: 0,
218
- deviceMemory: 0,
219
- };
220
- const location = isBrowser
221
- ? window === null || window === void 0 ? void 0 : window.location
222
- : {
223
- href: "",
224
- protocol: "",
225
- host: "",
226
- hostname: "",
227
- port: "",
228
- pathname: "",
229
- search: "",
230
- hash: "",
231
- };
232
- /**
233
- * Validates options and sets defaults for undefined properties.
234
- * @param {?Object} opts
235
- * @returns {Object} opts - Validated options.
236
- */
237
- const validate = function (opts = {}) {
238
- // Create new object to avoid changes by reference
239
- const _opts = {};
240
- // Defaults to false
241
- _opts.detailed = opts.detailed === true;
242
- // Defaults to true
243
- _opts.ignoreLocalhost = opts.ignoreLocalhost !== false;
244
- // Defaults to true
245
- _opts.ignoreOwnVisits = opts.ignoreOwnVisits !== false;
246
- return _opts;
247
- };
248
- /**
249
- * Determines if a host is a localhost.
250
- * @param {String} hostname - Hostname that should be tested.
251
- * @returns {Boolean} isLocalhost
252
- */
253
- const isLocalhost = function (hostname) {
254
- return (hostname === "" ||
255
- hostname === "localhost" ||
256
- hostname === "127.0.0.1" ||
257
- hostname === "::1");
258
- };
259
- /**
260
- * Determines if user agent is a bot. Approach is to get most bots, assuming other bots don't run JS.
261
- * Source: https://stackoverflow.com/questions/20084513/detect-search-crawlers-via-javascript/20084661
262
- * @param {String} userAgent - User agent that should be tested.
263
- * @returns {Boolean} isBot
264
- */
265
- const isBot = function (userAgent) {
266
- return /bot|crawler|spider|crawling/i.test(userAgent);
267
- };
268
- /**
269
- * Checks if an id is a fake id. This is the case when Ackee ignores you because of the `ackee_ignore` cookie.
270
- * @param {String} id - Id that should be tested.
271
- * @returns {Boolean} isFakeId
272
- */
273
- const isFakeId = function (id) {
274
- return id === "88888888-8888-8888-8888-888888888888";
275
- };
276
- /**
277
- * Checks if the website is in background (e.g. user has minimzed or switched tabs).
278
- * @returns {boolean}
279
- */
280
- const isInBackground = function () {
281
- return document.visibilityState === "hidden";
282
- };
283
- /**
284
- * Get the optional source parameter.
285
- * @returns {String} source
286
- */
287
- const source = function () {
288
- const source = (location.search.split(`source=`)[1] || "").split("&")[0];
289
- return source === "" ? undefined : source;
290
- };
291
- /**
292
- * Gathers all platform-, screen- and user-related information.
293
- * @param {Boolean} detailed - Include personal data.
294
- * @returns {Object} attributes - User-related information.
190
+ * Formats an Ethereum address by truncating it to the first and last n characters.
191
+ * @param {string} address - The Ethereum address to format.
192
+ * @param {number} n - The number of characters to keep from the start and end of the address.
193
+ * @return {string} - The formatted address.
295
194
  */
296
- const attributes = function (detailed = false) {
297
- var _a;
298
- const defaultData = {
299
- siteLocation: (_a = window === null || window === void 0 ? void 0 : window.location) === null || _a === void 0 ? void 0 : _a.href,
300
- siteReferrer: document.referrer,
301
- source: source(),
302
- };
303
- const detailedData = {
304
- siteLanguage: navigator
305
- ? ((navigator === null || navigator === void 0 ? void 0 : navigator.language) || (navigator === null || navigator === void 0 ? void 0 : navigator.language) || "").substr(0, 2)
306
- : "",
307
- screenWidth: screen.width,
308
- screenHeight: screen.height,
309
- screenColorDepth: screen.colorDepth,
310
- browserWidth: window === null || window === void 0 ? void 0 : window.outerWidth,
311
- browserHeight: window === null || window === void 0 ? void 0 : window.outerHeight,
312
- };
313
- return Object.assign(Object.assign({}, defaultData), (detailed === true ? detailedData : {}));
195
+ const formatAddress = (address, n = 8) => {
196
+ return `${address.slice(0, n)}...${address.slice(-n)}`;
314
197
  };
315
198
  /**
316
- * Creates an object with a query and variables property to create a record on the server.
317
- * @param {String} domainId - Id of the domain.
318
- * @param {Object} input - Data that should be transferred to the server.
319
- * @returns {Object} Create record body.
199
+ * Capitalizes the first letter of a string.
200
+ * @param {string} str - The string to capitalize.
201
+ * @return {string} - The capitalized string.
320
202
  */
321
- const createRecordBody = function (domainId, input) {
322
- return {
323
- query: `
324
- mutation createRecord($domainId: ID!, $input: CreateRecordInput!) {
325
- createRecord(domainId: $domainId, input: $input) {
326
- payload {
327
- id
328
- }
329
- }
330
- }
331
- `,
332
- variables: {
333
- domainId,
334
- input,
335
- },
336
- };
203
+ const capitalize = (str) => {
204
+ return str.charAt(0).toUpperCase() + str.slice(1);
337
205
  };
338
206
  /**
339
- * Creates an object with a query and variables property to update a record on the server.
340
- * @param {String} recordId - Id of the record.
341
- * @returns {Object} Update record body.
207
+ * Formats a Camp amount to a human-readable string.
208
+ * @param {number} amount - The Camp amount to format.
209
+ * @returns {string} - The formatted Camp amount.
342
210
  */
343
- const updateRecordBody = function (recordId) {
344
- return {
345
- query: `
346
- mutation updateRecord($recordId: ID!) {
347
- updateRecord(id: $recordId) {
348
- success
349
- }
350
- }
351
- `,
352
- variables: {
353
- recordId,
354
- },
355
- };
211
+ const formatCampAmount = (amount) => {
212
+ if (amount >= 1000) {
213
+ const formatted = (amount / 1000).toFixed(1);
214
+ return formatted.endsWith(".0")
215
+ ? formatted.slice(0, -2) + "k"
216
+ : formatted + "k";
217
+ }
218
+ return amount.toString();
356
219
  };
357
220
  /**
358
- * Creates an object with a query and variables property to create an action on the server.
359
- * @param {String} eventId - Id of the event.
360
- * @param {Object} input - Data that should be transferred to the server.
361
- * @returns {Object} Create action body.
221
+ * Uploads a file to a specified URL with progress tracking.
222
+ * Falls back to a simple fetch request if XMLHttpRequest is not available.
223
+ * @param {File} file - The file to upload.
224
+ * @param {string} url - The URL to upload the file to.
225
+ * @param {UploadProgressCallback} onProgress - A callback function to track upload progress.
226
+ * @returns {Promise<string>} - A promise that resolves with the response from the server.
362
227
  */
363
- const createActionBody = function (eventId, input) {
364
- return {
365
- query: `
366
- mutation createAction($eventId: ID!, $input: CreateActionInput!) {
367
- createAction(eventId: $eventId, input: $input) {
368
- payload {
369
- id
370
- }
371
- }
372
- }
373
- `,
374
- variables: {
375
- eventId,
376
- input,
377
- },
378
- };
228
+ const uploadWithProgress = (file, url, onProgress) => {
229
+ return new Promise((resolve, reject) => {
230
+ axios
231
+ .put(url, file, Object.assign({ headers: {
232
+ "Content-Type": file.type,
233
+ } }, (typeof window !== "undefined" && typeof onProgress === "function"
234
+ ? {
235
+ onUploadProgress: (progressEvent) => {
236
+ if (progressEvent.total) {
237
+ const percent = (progressEvent.loaded / progressEvent.total) * 100;
238
+ onProgress(percent);
239
+ }
240
+ },
241
+ }
242
+ : {})))
243
+ .then((res) => {
244
+ resolve(res.data);
245
+ })
246
+ .catch((error) => {
247
+ var _a;
248
+ const message = ((_a = error === null || error === void 0 ? void 0 : error.response) === null || _a === void 0 ? void 0 : _a.data) || (error === null || error === void 0 ? void 0 : error.message) || "Upload failed";
249
+ reject(message);
250
+ });
251
+ });
379
252
  };
380
- /**
381
- * Creates an object with a query and variables property to update an action on the server.
382
- * @param {String} actionId - Id of the action.
383
- * @param {Object} input - Data that should be transferred to the server.
384
- * @returns {Object} Update action body.
385
- */
386
- const updateActionBody = function (actionId, input) {
387
- return {
388
- query: `
389
- mutation updateAction($actionId: ID!, $input: UpdateActionInput!) {
390
- updateAction(id: $actionId, input: $input) {
391
- success
392
- }
393
- }
394
- `,
395
- variables: {
396
- actionId,
397
- input,
398
- },
399
- };
253
+
254
+ var abi$1 = [
255
+ {
256
+ inputs: [
257
+ {
258
+ internalType: "string",
259
+ name: "_name",
260
+ type: "string"
261
+ },
262
+ {
263
+ internalType: "string",
264
+ name: "_symbol",
265
+ type: "string"
266
+ },
267
+ {
268
+ internalType: "string",
269
+ name: "_baseURI",
270
+ type: "string"
271
+ }
272
+ ],
273
+ stateMutability: "nonpayable",
274
+ type: "constructor"
275
+ },
276
+ {
277
+ inputs: [
278
+ ],
279
+ name: "DurationZero",
280
+ type: "error"
281
+ },
282
+ {
283
+ inputs: [
284
+ {
285
+ internalType: "uint16",
286
+ name: "royaltyBps",
287
+ type: "uint16"
288
+ }
289
+ ],
290
+ name: "InvalidRoyalty",
291
+ type: "error"
292
+ },
293
+ {
294
+ inputs: [
295
+ {
296
+ internalType: "uint256",
297
+ name: "tokenId",
298
+ type: "uint256"
299
+ },
300
+ {
301
+ internalType: "address",
302
+ name: "caller",
303
+ type: "address"
304
+ }
305
+ ],
306
+ name: "NotTokenOwner",
307
+ type: "error"
308
+ },
309
+ {
310
+ inputs: [
311
+ {
312
+ internalType: "uint256",
313
+ name: "tokenId",
314
+ type: "uint256"
315
+ }
316
+ ],
317
+ name: "TokenAlreadyExists",
318
+ type: "error"
319
+ },
320
+ {
321
+ inputs: [
322
+ ],
323
+ name: "URIQueryForNonexistentToken",
324
+ type: "error"
325
+ },
326
+ {
327
+ inputs: [
328
+ ],
329
+ name: "Unauthorized",
330
+ type: "error"
331
+ },
332
+ {
333
+ inputs: [
334
+ ],
335
+ name: "Verifier_InvalidDeadline",
336
+ type: "error"
337
+ },
338
+ {
339
+ inputs: [
340
+ ],
341
+ name: "Verifier_InvalidSignature",
342
+ type: "error"
343
+ },
344
+ {
345
+ inputs: [
346
+ ],
347
+ name: "ZeroAddress",
348
+ type: "error"
349
+ },
350
+ {
351
+ anonymous: false,
352
+ inputs: [
353
+ {
354
+ indexed: true,
355
+ internalType: "uint256",
356
+ name: "tokenId",
357
+ type: "uint256"
358
+ },
359
+ {
360
+ indexed: true,
361
+ internalType: "address",
362
+ name: "buyer",
363
+ type: "address"
364
+ },
365
+ {
366
+ indexed: false,
367
+ internalType: "uint32",
368
+ name: "periods",
369
+ type: "uint32"
370
+ },
371
+ {
372
+ indexed: false,
373
+ internalType: "uint64",
374
+ name: "newExpiry",
375
+ type: "uint64"
376
+ },
377
+ {
378
+ indexed: false,
379
+ internalType: "uint256",
380
+ name: "amountPaid",
381
+ type: "uint256"
382
+ }
383
+ ],
384
+ name: "AccessPurchased",
385
+ type: "event"
386
+ },
387
+ {
388
+ anonymous: false,
389
+ inputs: [
390
+ {
391
+ indexed: true,
392
+ internalType: "address",
393
+ name: "owner",
394
+ type: "address"
395
+ },
396
+ {
397
+ indexed: true,
398
+ internalType: "address",
399
+ name: "approved",
400
+ type: "address"
401
+ },
402
+ {
403
+ indexed: true,
404
+ internalType: "uint256",
405
+ name: "tokenId",
406
+ type: "uint256"
407
+ }
408
+ ],
409
+ name: "Approval",
410
+ type: "event"
411
+ },
412
+ {
413
+ anonymous: false,
414
+ inputs: [
415
+ {
416
+ indexed: true,
417
+ internalType: "address",
418
+ name: "owner",
419
+ type: "address"
420
+ },
421
+ {
422
+ indexed: true,
423
+ internalType: "address",
424
+ name: "operator",
425
+ type: "address"
426
+ },
427
+ {
428
+ indexed: false,
429
+ internalType: "bool",
430
+ name: "approved",
431
+ type: "bool"
432
+ }
433
+ ],
434
+ name: "ApprovalForAll",
435
+ type: "event"
436
+ },
437
+ {
438
+ anonymous: false,
439
+ inputs: [
440
+ {
441
+ indexed: true,
442
+ internalType: "uint256",
443
+ name: "tokenId",
444
+ type: "uint256"
445
+ }
446
+ ],
447
+ name: "DataDeleted",
448
+ type: "event"
449
+ },
450
+ {
451
+ anonymous: false,
452
+ inputs: [
453
+ {
454
+ indexed: true,
455
+ internalType: "uint256",
456
+ name: "tokenId",
457
+ type: "uint256"
458
+ },
459
+ {
460
+ indexed: true,
461
+ internalType: "address",
462
+ name: "creator",
463
+ type: "address"
464
+ }
465
+ ],
466
+ name: "DataDeletionRequested",
467
+ type: "event"
468
+ },
469
+ {
470
+ anonymous: false,
471
+ inputs: [
472
+ {
473
+ indexed: true,
474
+ internalType: "uint256",
475
+ name: "tokenId",
476
+ type: "uint256"
477
+ },
478
+ {
479
+ indexed: true,
480
+ internalType: "address",
481
+ name: "creator",
482
+ type: "address"
483
+ },
484
+ {
485
+ indexed: false,
486
+ internalType: "bytes32",
487
+ name: "contentHash",
488
+ type: "bytes32"
489
+ }
490
+ ],
491
+ name: "DataMinted",
492
+ type: "event"
493
+ },
494
+ {
495
+ anonymous: false,
496
+ inputs: [
497
+ {
498
+ indexed: true,
499
+ internalType: "uint256",
500
+ name: "tokenId",
501
+ type: "uint256"
502
+ },
503
+ {
504
+ indexed: false,
505
+ internalType: "uint256",
506
+ name: "royaltyAmount",
507
+ type: "uint256"
508
+ },
509
+ {
510
+ indexed: false,
511
+ internalType: "address",
512
+ name: "creator",
513
+ type: "address"
514
+ },
515
+ {
516
+ indexed: false,
517
+ internalType: "uint256",
518
+ name: "protocolAmount",
519
+ type: "uint256"
520
+ }
521
+ ],
522
+ name: "RoyaltyPaid",
523
+ type: "event"
524
+ },
525
+ {
526
+ anonymous: false,
527
+ inputs: [
528
+ {
529
+ indexed: true,
530
+ internalType: "uint256",
531
+ name: "tokenId",
532
+ type: "uint256"
533
+ },
534
+ {
535
+ indexed: false,
536
+ internalType: "uint128",
537
+ name: "newPrice",
538
+ type: "uint128"
539
+ },
540
+ {
541
+ indexed: false,
542
+ internalType: "uint32",
543
+ name: "newDuration",
544
+ type: "uint32"
545
+ },
546
+ {
547
+ indexed: false,
548
+ internalType: "uint16",
549
+ name: "newRoyaltyBps",
550
+ type: "uint16"
551
+ },
552
+ {
553
+ indexed: false,
554
+ internalType: "address",
555
+ name: "paymentToken",
556
+ type: "address"
557
+ }
558
+ ],
559
+ name: "TermsUpdated",
560
+ type: "event"
561
+ },
562
+ {
563
+ anonymous: false,
564
+ inputs: [
565
+ {
566
+ indexed: true,
567
+ internalType: "address",
568
+ name: "from",
569
+ type: "address"
570
+ },
571
+ {
572
+ indexed: true,
573
+ internalType: "address",
574
+ name: "to",
575
+ type: "address"
576
+ },
577
+ {
578
+ indexed: true,
579
+ internalType: "uint256",
580
+ name: "tokenId",
581
+ type: "uint256"
582
+ }
583
+ ],
584
+ name: "Transfer",
585
+ type: "event"
586
+ },
587
+ {
588
+ inputs: [
589
+ {
590
+ internalType: "address",
591
+ name: "creator",
592
+ type: "address"
593
+ }
594
+ ],
595
+ name: "addCreator",
596
+ outputs: [
597
+ ],
598
+ stateMutability: "nonpayable",
599
+ type: "function"
600
+ },
601
+ {
602
+ inputs: [
603
+ {
604
+ internalType: "address",
605
+ name: "pauser",
606
+ type: "address"
607
+ }
608
+ ],
609
+ name: "addPauser",
610
+ outputs: [
611
+ ],
612
+ stateMutability: "nonpayable",
613
+ type: "function"
614
+ },
615
+ {
616
+ inputs: [
617
+ {
618
+ internalType: "address",
619
+ name: "to",
620
+ type: "address"
621
+ },
622
+ {
623
+ internalType: "uint256",
624
+ name: "tokenId",
625
+ type: "uint256"
626
+ }
627
+ ],
628
+ name: "approve",
629
+ outputs: [
630
+ ],
631
+ stateMutability: "nonpayable",
632
+ type: "function"
633
+ },
634
+ {
635
+ inputs: [
636
+ {
637
+ internalType: "address",
638
+ name: "owner_",
639
+ type: "address"
640
+ }
641
+ ],
642
+ name: "balanceOf",
643
+ outputs: [
644
+ {
645
+ internalType: "uint256",
646
+ name: "",
647
+ type: "uint256"
648
+ }
649
+ ],
650
+ stateMutability: "view",
651
+ type: "function"
652
+ },
653
+ {
654
+ inputs: [
655
+ ],
656
+ name: "baseURI",
657
+ outputs: [
658
+ {
659
+ internalType: "string",
660
+ name: "",
661
+ type: "string"
662
+ }
663
+ ],
664
+ stateMutability: "view",
665
+ type: "function"
666
+ },
667
+ {
668
+ inputs: [
669
+ {
670
+ internalType: "uint256",
671
+ name: "",
672
+ type: "uint256"
673
+ }
674
+ ],
675
+ name: "contentHash",
676
+ outputs: [
677
+ {
678
+ internalType: "bytes32",
679
+ name: "",
680
+ type: "bytes32"
681
+ }
682
+ ],
683
+ stateMutability: "view",
684
+ type: "function"
685
+ },
686
+ {
687
+ inputs: [
688
+ {
689
+ internalType: "address",
690
+ name: "",
691
+ type: "address"
692
+ }
693
+ ],
694
+ name: "creators",
695
+ outputs: [
696
+ {
697
+ internalType: "bool",
698
+ name: "",
699
+ type: "bool"
700
+ }
701
+ ],
702
+ stateMutability: "view",
703
+ type: "function"
704
+ },
705
+ {
706
+ inputs: [
707
+ {
708
+ internalType: "uint256",
709
+ name: "",
710
+ type: "uint256"
711
+ }
712
+ ],
713
+ name: "dataStatus",
714
+ outputs: [
715
+ {
716
+ internalType: "enum DataNFT.DataStatus",
717
+ name: "",
718
+ type: "uint8"
719
+ }
720
+ ],
721
+ stateMutability: "view",
722
+ type: "function"
723
+ },
724
+ {
725
+ inputs: [
726
+ {
727
+ internalType: "uint256",
728
+ name: "tokenId",
729
+ type: "uint256"
730
+ }
731
+ ],
732
+ name: "finalizeDelete",
733
+ outputs: [
734
+ ],
735
+ stateMutability: "nonpayable",
736
+ type: "function"
737
+ },
738
+ {
739
+ inputs: [
740
+ {
741
+ internalType: "uint256",
742
+ name: "tokenId",
743
+ type: "uint256"
744
+ }
745
+ ],
746
+ name: "getApproved",
747
+ outputs: [
748
+ {
749
+ internalType: "address",
750
+ name: "",
751
+ type: "address"
752
+ }
753
+ ],
754
+ stateMutability: "view",
755
+ type: "function"
756
+ },
757
+ {
758
+ inputs: [
759
+ {
760
+ internalType: "uint256",
761
+ name: "tokenId",
762
+ type: "uint256"
763
+ }
764
+ ],
765
+ name: "getTerms",
766
+ outputs: [
767
+ {
768
+ components: [
769
+ {
770
+ internalType: "uint128",
771
+ name: "price",
772
+ type: "uint128"
773
+ },
774
+ {
775
+ internalType: "uint32",
776
+ name: "duration",
777
+ type: "uint32"
778
+ },
779
+ {
780
+ internalType: "uint16",
781
+ name: "royaltyBps",
782
+ type: "uint16"
783
+ },
784
+ {
785
+ internalType: "address",
786
+ name: "paymentToken",
787
+ type: "address"
788
+ }
789
+ ],
790
+ internalType: "struct DataNFT.LicenseTerms",
791
+ name: "",
792
+ type: "tuple"
793
+ }
794
+ ],
795
+ stateMutability: "view",
796
+ type: "function"
797
+ },
798
+ {
799
+ inputs: [
800
+ {
801
+ internalType: "address",
802
+ name: "owner_",
803
+ type: "address"
804
+ },
805
+ {
806
+ internalType: "address",
807
+ name: "operator",
808
+ type: "address"
809
+ }
810
+ ],
811
+ name: "isApprovedForAll",
812
+ outputs: [
813
+ {
814
+ internalType: "bool",
815
+ name: "",
816
+ type: "bool"
817
+ }
818
+ ],
819
+ stateMutability: "view",
820
+ type: "function"
821
+ },
822
+ {
823
+ inputs: [
824
+ {
825
+ internalType: "address",
826
+ name: "to",
827
+ type: "address"
828
+ },
829
+ {
830
+ internalType: "uint256",
831
+ name: "tokenId",
832
+ type: "uint256"
833
+ },
834
+ {
835
+ internalType: "bytes32",
836
+ name: "hash",
837
+ type: "bytes32"
838
+ },
839
+ {
840
+ internalType: "string",
841
+ name: "uri",
842
+ type: "string"
843
+ },
844
+ {
845
+ components: [
846
+ {
847
+ internalType: "uint128",
848
+ name: "price",
849
+ type: "uint128"
850
+ },
851
+ {
852
+ internalType: "uint32",
853
+ name: "duration",
854
+ type: "uint32"
855
+ },
856
+ {
857
+ internalType: "uint16",
858
+ name: "royaltyBps",
859
+ type: "uint16"
860
+ },
861
+ {
862
+ internalType: "address",
863
+ name: "paymentToken",
864
+ type: "address"
865
+ }
866
+ ],
867
+ internalType: "struct DataNFT.LicenseTerms",
868
+ name: "licenseTerms",
869
+ type: "tuple"
870
+ },
871
+ {
872
+ internalType: "uint256",
873
+ name: "deadline",
874
+ type: "uint256"
875
+ },
876
+ {
877
+ internalType: "uint8",
878
+ name: "v",
879
+ type: "uint8"
880
+ },
881
+ {
882
+ internalType: "bytes32",
883
+ name: "r",
884
+ type: "bytes32"
885
+ },
886
+ {
887
+ internalType: "bytes32",
888
+ name: "s",
889
+ type: "bytes32"
890
+ }
891
+ ],
892
+ name: "mintWithSignature",
893
+ outputs: [
894
+ ],
895
+ stateMutability: "nonpayable",
896
+ type: "function"
897
+ },
898
+ {
899
+ inputs: [
900
+ ],
901
+ name: "name",
902
+ outputs: [
903
+ {
904
+ internalType: "string",
905
+ name: "",
906
+ type: "string"
907
+ }
908
+ ],
909
+ stateMutability: "view",
910
+ type: "function"
911
+ },
912
+ {
913
+ inputs: [
914
+ ],
915
+ name: "owner",
916
+ outputs: [
917
+ {
918
+ internalType: "address",
919
+ name: "",
920
+ type: "address"
921
+ }
922
+ ],
923
+ stateMutability: "view",
924
+ type: "function"
925
+ },
926
+ {
927
+ inputs: [
928
+ {
929
+ internalType: "uint256",
930
+ name: "tokenId",
931
+ type: "uint256"
932
+ }
933
+ ],
934
+ name: "ownerOf",
935
+ outputs: [
936
+ {
937
+ internalType: "address",
938
+ name: "",
939
+ type: "address"
940
+ }
941
+ ],
942
+ stateMutability: "view",
943
+ type: "function"
944
+ },
945
+ {
946
+ inputs: [
947
+ ],
948
+ name: "pause",
949
+ outputs: [
950
+ ],
951
+ stateMutability: "nonpayable",
952
+ type: "function"
953
+ },
954
+ {
955
+ inputs: [
956
+ ],
957
+ name: "paused",
958
+ outputs: [
959
+ {
960
+ internalType: "bool",
961
+ name: "",
962
+ type: "bool"
963
+ }
964
+ ],
965
+ stateMutability: "view",
966
+ type: "function"
967
+ },
968
+ {
969
+ inputs: [
970
+ {
971
+ internalType: "address",
972
+ name: "",
973
+ type: "address"
974
+ }
975
+ ],
976
+ name: "pausers",
977
+ outputs: [
978
+ {
979
+ internalType: "bool",
980
+ name: "",
981
+ type: "bool"
982
+ }
983
+ ],
984
+ stateMutability: "view",
985
+ type: "function"
986
+ },
987
+ {
988
+ inputs: [
989
+ {
990
+ internalType: "address",
991
+ name: "creator",
992
+ type: "address"
993
+ }
994
+ ],
995
+ name: "removeCreator",
996
+ outputs: [
997
+ ],
998
+ stateMutability: "nonpayable",
999
+ type: "function"
1000
+ },
1001
+ {
1002
+ inputs: [
1003
+ {
1004
+ internalType: "address",
1005
+ name: "pauser",
1006
+ type: "address"
1007
+ }
1008
+ ],
1009
+ name: "removePauser",
1010
+ outputs: [
1011
+ ],
1012
+ stateMutability: "nonpayable",
1013
+ type: "function"
1014
+ },
1015
+ {
1016
+ inputs: [
1017
+ {
1018
+ internalType: "uint256",
1019
+ name: "tokenId",
1020
+ type: "uint256"
1021
+ }
1022
+ ],
1023
+ name: "requestDelete",
1024
+ outputs: [
1025
+ ],
1026
+ stateMutability: "nonpayable",
1027
+ type: "function"
1028
+ },
1029
+ {
1030
+ inputs: [
1031
+ {
1032
+ internalType: "uint256",
1033
+ name: "tokenId",
1034
+ type: "uint256"
1035
+ },
1036
+ {
1037
+ internalType: "uint256",
1038
+ name: "salePrice",
1039
+ type: "uint256"
1040
+ }
1041
+ ],
1042
+ name: "royaltyInfo",
1043
+ outputs: [
1044
+ {
1045
+ internalType: "address",
1046
+ name: "receiver",
1047
+ type: "address"
1048
+ },
1049
+ {
1050
+ internalType: "uint256",
1051
+ name: "royaltyAmount",
1052
+ type: "uint256"
1053
+ }
1054
+ ],
1055
+ stateMutability: "view",
1056
+ type: "function"
1057
+ },
1058
+ {
1059
+ inputs: [
1060
+ {
1061
+ internalType: "uint256",
1062
+ name: "",
1063
+ type: "uint256"
1064
+ }
1065
+ ],
1066
+ name: "royaltyPercentages",
1067
+ outputs: [
1068
+ {
1069
+ internalType: "uint16",
1070
+ name: "",
1071
+ type: "uint16"
1072
+ }
1073
+ ],
1074
+ stateMutability: "view",
1075
+ type: "function"
1076
+ },
1077
+ {
1078
+ inputs: [
1079
+ {
1080
+ internalType: "uint256",
1081
+ name: "",
1082
+ type: "uint256"
1083
+ }
1084
+ ],
1085
+ name: "royaltyReceivers",
1086
+ outputs: [
1087
+ {
1088
+ internalType: "address",
1089
+ name: "",
1090
+ type: "address"
1091
+ }
1092
+ ],
1093
+ stateMutability: "view",
1094
+ type: "function"
1095
+ },
1096
+ {
1097
+ inputs: [
1098
+ {
1099
+ internalType: "address",
1100
+ name: "from",
1101
+ type: "address"
1102
+ },
1103
+ {
1104
+ internalType: "address",
1105
+ name: "to",
1106
+ type: "address"
1107
+ },
1108
+ {
1109
+ internalType: "uint256",
1110
+ name: "tokenId",
1111
+ type: "uint256"
1112
+ }
1113
+ ],
1114
+ name: "safeTransferFrom",
1115
+ outputs: [
1116
+ ],
1117
+ stateMutability: "nonpayable",
1118
+ type: "function"
1119
+ },
1120
+ {
1121
+ inputs: [
1122
+ {
1123
+ internalType: "address",
1124
+ name: "from",
1125
+ type: "address"
1126
+ },
1127
+ {
1128
+ internalType: "address",
1129
+ name: "to",
1130
+ type: "address"
1131
+ },
1132
+ {
1133
+ internalType: "uint256",
1134
+ name: "tokenId",
1135
+ type: "uint256"
1136
+ },
1137
+ {
1138
+ internalType: "bytes",
1139
+ name: "data",
1140
+ type: "bytes"
1141
+ }
1142
+ ],
1143
+ name: "safeTransferFrom",
1144
+ outputs: [
1145
+ ],
1146
+ stateMutability: "nonpayable",
1147
+ type: "function"
1148
+ },
1149
+ {
1150
+ inputs: [
1151
+ {
1152
+ internalType: "address",
1153
+ name: "operator",
1154
+ type: "address"
1155
+ },
1156
+ {
1157
+ internalType: "bool",
1158
+ name: "approved",
1159
+ type: "bool"
1160
+ }
1161
+ ],
1162
+ name: "setApprovalForAll",
1163
+ outputs: [
1164
+ ],
1165
+ stateMutability: "nonpayable",
1166
+ type: "function"
1167
+ },
1168
+ {
1169
+ inputs: [
1170
+ ],
1171
+ name: "symbol",
1172
+ outputs: [
1173
+ {
1174
+ internalType: "string",
1175
+ name: "",
1176
+ type: "string"
1177
+ }
1178
+ ],
1179
+ stateMutability: "view",
1180
+ type: "function"
1181
+ },
1182
+ {
1183
+ inputs: [
1184
+ {
1185
+ internalType: "uint256",
1186
+ name: "",
1187
+ type: "uint256"
1188
+ }
1189
+ ],
1190
+ name: "terms",
1191
+ outputs: [
1192
+ {
1193
+ internalType: "uint128",
1194
+ name: "price",
1195
+ type: "uint128"
1196
+ },
1197
+ {
1198
+ internalType: "uint32",
1199
+ name: "duration",
1200
+ type: "uint32"
1201
+ },
1202
+ {
1203
+ internalType: "uint16",
1204
+ name: "royaltyBps",
1205
+ type: "uint16"
1206
+ },
1207
+ {
1208
+ internalType: "address",
1209
+ name: "paymentToken",
1210
+ type: "address"
1211
+ }
1212
+ ],
1213
+ stateMutability: "view",
1214
+ type: "function"
1215
+ },
1216
+ {
1217
+ inputs: [
1218
+ {
1219
+ internalType: "uint256",
1220
+ name: "",
1221
+ type: "uint256"
1222
+ }
1223
+ ],
1224
+ name: "tokenURI",
1225
+ outputs: [
1226
+ {
1227
+ internalType: "string",
1228
+ name: "",
1229
+ type: "string"
1230
+ }
1231
+ ],
1232
+ stateMutability: "view",
1233
+ type: "function"
1234
+ },
1235
+ {
1236
+ inputs: [
1237
+ {
1238
+ internalType: "address",
1239
+ name: "from",
1240
+ type: "address"
1241
+ },
1242
+ {
1243
+ internalType: "address",
1244
+ name: "to",
1245
+ type: "address"
1246
+ },
1247
+ {
1248
+ internalType: "uint256",
1249
+ name: "tokenId",
1250
+ type: "uint256"
1251
+ }
1252
+ ],
1253
+ name: "transferFrom",
1254
+ outputs: [
1255
+ ],
1256
+ stateMutability: "nonpayable",
1257
+ type: "function"
1258
+ },
1259
+ {
1260
+ inputs: [
1261
+ ],
1262
+ name: "unpause",
1263
+ outputs: [
1264
+ ],
1265
+ stateMutability: "nonpayable",
1266
+ type: "function"
1267
+ },
1268
+ {
1269
+ inputs: [
1270
+ {
1271
+ internalType: "uint256",
1272
+ name: "tokenId",
1273
+ type: "uint256"
1274
+ },
1275
+ {
1276
+ components: [
1277
+ {
1278
+ internalType: "uint128",
1279
+ name: "price",
1280
+ type: "uint128"
1281
+ },
1282
+ {
1283
+ internalType: "uint32",
1284
+ name: "duration",
1285
+ type: "uint32"
1286
+ },
1287
+ {
1288
+ internalType: "uint16",
1289
+ name: "royaltyBps",
1290
+ type: "uint16"
1291
+ },
1292
+ {
1293
+ internalType: "address",
1294
+ name: "paymentToken",
1295
+ type: "address"
1296
+ }
1297
+ ],
1298
+ internalType: "struct DataNFT.LicenseTerms",
1299
+ name: "newTerms",
1300
+ type: "tuple"
1301
+ }
1302
+ ],
1303
+ name: "updateTerms",
1304
+ outputs: [
1305
+ ],
1306
+ stateMutability: "nonpayable",
1307
+ type: "function"
1308
+ }
1309
+ ];
1310
+
1311
+ /**
1312
+ * Mints a Data NFT with a signature.
1313
+ * @param to The address to mint the NFT to.
1314
+ * @param tokenId The ID of the token to mint.
1315
+ * @param hash The hash of the data associated with the NFT.
1316
+ * @param uri The URI of the NFT metadata.
1317
+ * @param licenseTerms The terms of the license for the NFT.
1318
+ * @param deadline The deadline for the minting operation.
1319
+ * @param signature The signature for the minting operation.
1320
+ * @returns A promise that resolves when the minting is complete.
1321
+ */
1322
+ function mintWithSignature(to, tokenId, hash, uri, licenseTerms, deadline, signature) {
1323
+ return __awaiter(this, void 0, void 0, function* () {
1324
+ return yield this.callContractMethod(constants.DATANFT_CONTRACT_ADDRESS, abi$1, "mintWithSignature", [
1325
+ to,
1326
+ tokenId,
1327
+ hash,
1328
+ uri,
1329
+ licenseTerms,
1330
+ deadline,
1331
+ signature.v,
1332
+ signature.r,
1333
+ signature.s,
1334
+ ], { waitForReceipt: true });
1335
+ });
1336
+ }
1337
+ /**
1338
+ * Registers a Data NFT with the Origin service in order to obtain a signature for minting.
1339
+ * @param source The source of the Data NFT (e.g., "spotify", "twitter", "tiktok", or "file").
1340
+ * @param deadline The deadline for the registration operation.
1341
+ * @param fileKey Optional file key for file uploads.
1342
+ * @return A promise that resolves with the registration data.
1343
+ */
1344
+ function registerDataNFT(source, deadline, fileKey) {
1345
+ return __awaiter(this, void 0, void 0, function* () {
1346
+ const body = {
1347
+ source,
1348
+ deadline: deadline.toString(),
1349
+ };
1350
+ if (fileKey !== undefined) {
1351
+ body.fileKey = fileKey;
1352
+ }
1353
+ const res = yield fetch(`${constants.AUTH_HUB_BASE_API}/auth/origin/register`, {
1354
+ method: "POST",
1355
+ headers: {
1356
+ Authorization: `Bearer ${this.getJwt()}`,
1357
+ },
1358
+ body: JSON.stringify(body),
1359
+ });
1360
+ if (!res.ok) {
1361
+ throw new Error(`Failed to get signature: ${res.statusText}`);
1362
+ }
1363
+ const data = yield res.json();
1364
+ if (data.isError) {
1365
+ throw new Error(`Failed to get signature: ${data.message}`);
1366
+ }
1367
+ return data.data;
1368
+ });
1369
+ }
1370
+
1371
+ function updateTerms(tokenId, newTerms) {
1372
+ return this.callContractMethod(constants.DATANFT_CONTRACT_ADDRESS, abi$1, "updateTerms", [tokenId, newTerms], { waitForReceipt: true });
1373
+ }
1374
+
1375
+ function requestDelete(tokenId) {
1376
+ return this.callContractMethod(constants.DATANFT_CONTRACT_ADDRESS, abi$1, "requestDelete", [tokenId]);
1377
+ }
1378
+
1379
+ function getTerms(tokenId) {
1380
+ return this.callContractMethod(constants.DATANFT_CONTRACT_ADDRESS, abi$1, "getTerms", [tokenId]);
1381
+ }
1382
+
1383
+ function ownerOf(tokenId) {
1384
+ return this.callContractMethod(constants.DATANFT_CONTRACT_ADDRESS, abi$1, "ownerOf", [tokenId]);
1385
+ }
1386
+
1387
+ function balanceOf(owner) {
1388
+ return this.callContractMethod(constants.DATANFT_CONTRACT_ADDRESS, abi$1, "balanceOf", [owner]);
1389
+ }
1390
+
1391
+ function contentHash(tokenId) {
1392
+ return this.callContractMethod(constants.DATANFT_CONTRACT_ADDRESS, abi$1, "contentHash", [tokenId]);
1393
+ }
1394
+
1395
+ function tokenURI(tokenId) {
1396
+ return this.callContractMethod(constants.DATANFT_CONTRACT_ADDRESS, abi$1, "tokenURI", [tokenId]);
1397
+ }
1398
+
1399
+ function dataStatus(tokenId) {
1400
+ return this.callContractMethod(constants.DATANFT_CONTRACT_ADDRESS, abi$1, "dataStatus", [tokenId]);
1401
+ }
1402
+
1403
+ function royaltyInfo(tokenId, salePrice) {
1404
+ return __awaiter(this, void 0, void 0, function* () {
1405
+ return this.callContractMethod(constants.DATANFT_CONTRACT_ADDRESS, abi$1, "royaltyInfo", [tokenId, salePrice]);
1406
+ });
1407
+ }
1408
+
1409
+ function getApproved(tokenId) {
1410
+ return this.callContractMethod(constants.DATANFT_CONTRACT_ADDRESS, abi$1, "getApproved", [tokenId]);
1411
+ }
1412
+
1413
+ function isApprovedForAll(owner, operator) {
1414
+ return this.callContractMethod(constants.DATANFT_CONTRACT_ADDRESS, abi$1, "isApprovedForAll", [owner, operator]);
1415
+ }
1416
+
1417
+ function transferFrom(from, to, tokenId) {
1418
+ return this.callContractMethod(constants.DATANFT_CONTRACT_ADDRESS, abi$1, "transferFrom", [from, to, tokenId]);
1419
+ }
1420
+
1421
+ function safeTransferFrom(from, to, tokenId, data) {
1422
+ const args = data ? [from, to, tokenId, data] : [from, to, tokenId];
1423
+ return this.callContractMethod(constants.DATANFT_CONTRACT_ADDRESS, abi$1, "safeTransferFrom", args);
1424
+ }
1425
+
1426
+ function approve(to, tokenId) {
1427
+ return this.callContractMethod(constants.DATANFT_CONTRACT_ADDRESS, abi$1, "approve", [to, tokenId]);
1428
+ }
1429
+
1430
+ function setApprovalForAll(operator, approved) {
1431
+ return this.callContractMethod(constants.DATANFT_CONTRACT_ADDRESS, abi$1, "setApprovalForAll", [operator, approved]);
1432
+ }
1433
+
1434
+ var abi = [
1435
+ {
1436
+ type: "constructor",
1437
+ inputs: [
1438
+ {
1439
+ name: "dataNFT_",
1440
+ type: "address",
1441
+ internalType: "address"
1442
+ },
1443
+ {
1444
+ name: "router_",
1445
+ type: "address",
1446
+ internalType: "address"
1447
+ },
1448
+ {
1449
+ name: "protocolFeeBps_",
1450
+ type: "uint16",
1451
+ internalType: "uint16"
1452
+ }
1453
+ ],
1454
+ stateMutability: "nonpayable"
1455
+ },
1456
+ {
1457
+ type: "function",
1458
+ name: "addFeeManager",
1459
+ inputs: [
1460
+ {
1461
+ name: "feeManager",
1462
+ type: "address",
1463
+ internalType: "address"
1464
+ }
1465
+ ],
1466
+ outputs: [
1467
+ ],
1468
+ stateMutability: "nonpayable"
1469
+ },
1470
+ {
1471
+ type: "function",
1472
+ name: "addPauser",
1473
+ inputs: [
1474
+ {
1475
+ name: "pauser",
1476
+ type: "address",
1477
+ internalType: "address"
1478
+ }
1479
+ ],
1480
+ outputs: [
1481
+ ],
1482
+ stateMutability: "nonpayable"
1483
+ },
1484
+ {
1485
+ type: "function",
1486
+ name: "buyAccess",
1487
+ inputs: [
1488
+ {
1489
+ name: "tokenId",
1490
+ type: "uint256",
1491
+ internalType: "uint256"
1492
+ },
1493
+ {
1494
+ name: "periods",
1495
+ type: "uint32",
1496
+ internalType: "uint32"
1497
+ }
1498
+ ],
1499
+ outputs: [
1500
+ ],
1501
+ stateMutability: "payable"
1502
+ },
1503
+ {
1504
+ type: "function",
1505
+ name: "dataNFT",
1506
+ inputs: [
1507
+ ],
1508
+ outputs: [
1509
+ {
1510
+ name: "",
1511
+ type: "address",
1512
+ internalType: "contract DataNFT"
1513
+ }
1514
+ ],
1515
+ stateMutability: "view"
1516
+ },
1517
+ {
1518
+ type: "function",
1519
+ name: "feeManagers",
1520
+ inputs: [
1521
+ {
1522
+ name: "",
1523
+ type: "address",
1524
+ internalType: "address"
1525
+ }
1526
+ ],
1527
+ outputs: [
1528
+ {
1529
+ name: "",
1530
+ type: "bool",
1531
+ internalType: "bool"
1532
+ }
1533
+ ],
1534
+ stateMutability: "view"
1535
+ },
1536
+ {
1537
+ type: "function",
1538
+ name: "hasAccess",
1539
+ inputs: [
1540
+ {
1541
+ name: "user",
1542
+ type: "address",
1543
+ internalType: "address"
1544
+ },
1545
+ {
1546
+ name: "tokenId",
1547
+ type: "uint256",
1548
+ internalType: "uint256"
1549
+ }
1550
+ ],
1551
+ outputs: [
1552
+ {
1553
+ name: "",
1554
+ type: "bool",
1555
+ internalType: "bool"
1556
+ }
1557
+ ],
1558
+ stateMutability: "view"
1559
+ },
1560
+ {
1561
+ type: "function",
1562
+ name: "owner",
1563
+ inputs: [
1564
+ ],
1565
+ outputs: [
1566
+ {
1567
+ name: "",
1568
+ type: "address",
1569
+ internalType: "address"
1570
+ }
1571
+ ],
1572
+ stateMutability: "view"
1573
+ },
1574
+ {
1575
+ type: "function",
1576
+ name: "pause",
1577
+ inputs: [
1578
+ ],
1579
+ outputs: [
1580
+ ],
1581
+ stateMutability: "nonpayable"
1582
+ },
1583
+ {
1584
+ type: "function",
1585
+ name: "paused",
1586
+ inputs: [
1587
+ ],
1588
+ outputs: [
1589
+ {
1590
+ name: "",
1591
+ type: "bool",
1592
+ internalType: "bool"
1593
+ }
1594
+ ],
1595
+ stateMutability: "view"
1596
+ },
1597
+ {
1598
+ type: "function",
1599
+ name: "pausers",
1600
+ inputs: [
1601
+ {
1602
+ name: "",
1603
+ type: "address",
1604
+ internalType: "address"
1605
+ }
1606
+ ],
1607
+ outputs: [
1608
+ {
1609
+ name: "",
1610
+ type: "bool",
1611
+ internalType: "bool"
1612
+ }
1613
+ ],
1614
+ stateMutability: "view"
1615
+ },
1616
+ {
1617
+ type: "function",
1618
+ name: "protocolFeeBps",
1619
+ inputs: [
1620
+ ],
1621
+ outputs: [
1622
+ {
1623
+ name: "",
1624
+ type: "uint16",
1625
+ internalType: "uint16"
1626
+ }
1627
+ ],
1628
+ stateMutability: "view"
1629
+ },
1630
+ {
1631
+ type: "function",
1632
+ name: "removeFeeManager",
1633
+ inputs: [
1634
+ {
1635
+ name: "feeManager",
1636
+ type: "address",
1637
+ internalType: "address"
1638
+ }
1639
+ ],
1640
+ outputs: [
1641
+ ],
1642
+ stateMutability: "nonpayable"
1643
+ },
1644
+ {
1645
+ type: "function",
1646
+ name: "removePauser",
1647
+ inputs: [
1648
+ {
1649
+ name: "pauser",
1650
+ type: "address",
1651
+ internalType: "address"
1652
+ }
1653
+ ],
1654
+ outputs: [
1655
+ ],
1656
+ stateMutability: "nonpayable"
1657
+ },
1658
+ {
1659
+ type: "function",
1660
+ name: "renewAccess",
1661
+ inputs: [
1662
+ {
1663
+ name: "tokenId",
1664
+ type: "uint256",
1665
+ internalType: "uint256"
1666
+ },
1667
+ {
1668
+ name: "buyer",
1669
+ type: "address",
1670
+ internalType: "address"
1671
+ },
1672
+ {
1673
+ name: "periods",
1674
+ type: "uint32",
1675
+ internalType: "uint32"
1676
+ }
1677
+ ],
1678
+ outputs: [
1679
+ ],
1680
+ stateMutability: "payable"
1681
+ },
1682
+ {
1683
+ type: "function",
1684
+ name: "router",
1685
+ inputs: [
1686
+ ],
1687
+ outputs: [
1688
+ {
1689
+ name: "",
1690
+ type: "address",
1691
+ internalType: "contract RoyaltyRouter"
1692
+ }
1693
+ ],
1694
+ stateMutability: "view"
1695
+ },
1696
+ {
1697
+ type: "function",
1698
+ name: "subscriptionExpiry",
1699
+ inputs: [
1700
+ {
1701
+ name: "",
1702
+ type: "uint256",
1703
+ internalType: "uint256"
1704
+ },
1705
+ {
1706
+ name: "",
1707
+ type: "address",
1708
+ internalType: "address"
1709
+ }
1710
+ ],
1711
+ outputs: [
1712
+ {
1713
+ name: "",
1714
+ type: "uint64",
1715
+ internalType: "uint64"
1716
+ }
1717
+ ],
1718
+ stateMutability: "view"
1719
+ },
1720
+ {
1721
+ type: "function",
1722
+ name: "unpause",
1723
+ inputs: [
1724
+ ],
1725
+ outputs: [
1726
+ ],
1727
+ stateMutability: "nonpayable"
1728
+ },
1729
+ {
1730
+ type: "function",
1731
+ name: "updateProtocolFee",
1732
+ inputs: [
1733
+ {
1734
+ name: "newFeeBps",
1735
+ type: "uint16",
1736
+ internalType: "uint16"
1737
+ }
1738
+ ],
1739
+ outputs: [
1740
+ ],
1741
+ stateMutability: "nonpayable"
1742
+ },
1743
+ {
1744
+ type: "event",
1745
+ name: "AccessPurchased",
1746
+ inputs: [
1747
+ {
1748
+ name: "tokenId",
1749
+ type: "uint256",
1750
+ indexed: true,
1751
+ internalType: "uint256"
1752
+ },
1753
+ {
1754
+ name: "buyer",
1755
+ type: "address",
1756
+ indexed: true,
1757
+ internalType: "address"
1758
+ },
1759
+ {
1760
+ name: "periods",
1761
+ type: "uint32",
1762
+ indexed: false,
1763
+ internalType: "uint32"
1764
+ },
1765
+ {
1766
+ name: "newExpiry",
1767
+ type: "uint64",
1768
+ indexed: false,
1769
+ internalType: "uint64"
1770
+ },
1771
+ {
1772
+ name: "amountPaid",
1773
+ type: "uint256",
1774
+ indexed: false,
1775
+ internalType: "uint256"
1776
+ }
1777
+ ],
1778
+ anonymous: false
1779
+ },
1780
+ {
1781
+ type: "event",
1782
+ name: "DataDeleted",
1783
+ inputs: [
1784
+ {
1785
+ name: "tokenId",
1786
+ type: "uint256",
1787
+ indexed: true,
1788
+ internalType: "uint256"
1789
+ }
1790
+ ],
1791
+ anonymous: false
1792
+ },
1793
+ {
1794
+ type: "event",
1795
+ name: "DataDeletionRequested",
1796
+ inputs: [
1797
+ {
1798
+ name: "tokenId",
1799
+ type: "uint256",
1800
+ indexed: true,
1801
+ internalType: "uint256"
1802
+ },
1803
+ {
1804
+ name: "creator",
1805
+ type: "address",
1806
+ indexed: true,
1807
+ internalType: "address"
1808
+ }
1809
+ ],
1810
+ anonymous: false
1811
+ },
1812
+ {
1813
+ type: "event",
1814
+ name: "DataMinted",
1815
+ inputs: [
1816
+ {
1817
+ name: "tokenId",
1818
+ type: "uint256",
1819
+ indexed: true,
1820
+ internalType: "uint256"
1821
+ },
1822
+ {
1823
+ name: "creator",
1824
+ type: "address",
1825
+ indexed: true,
1826
+ internalType: "address"
1827
+ },
1828
+ {
1829
+ name: "contentHash",
1830
+ type: "bytes32",
1831
+ indexed: false,
1832
+ internalType: "bytes32"
1833
+ }
1834
+ ],
1835
+ anonymous: false
1836
+ },
1837
+ {
1838
+ type: "event",
1839
+ name: "RoyaltyPaid",
1840
+ inputs: [
1841
+ {
1842
+ name: "tokenId",
1843
+ type: "uint256",
1844
+ indexed: true,
1845
+ internalType: "uint256"
1846
+ },
1847
+ {
1848
+ name: "royaltyAmount",
1849
+ type: "uint256",
1850
+ indexed: false,
1851
+ internalType: "uint256"
1852
+ },
1853
+ {
1854
+ name: "creator",
1855
+ type: "address",
1856
+ indexed: false,
1857
+ internalType: "address"
1858
+ },
1859
+ {
1860
+ name: "protocolAmount",
1861
+ type: "uint256",
1862
+ indexed: false,
1863
+ internalType: "uint256"
1864
+ }
1865
+ ],
1866
+ anonymous: false
1867
+ },
1868
+ {
1869
+ type: "event",
1870
+ name: "TermsUpdated",
1871
+ inputs: [
1872
+ {
1873
+ name: "tokenId",
1874
+ type: "uint256",
1875
+ indexed: true,
1876
+ internalType: "uint256"
1877
+ },
1878
+ {
1879
+ name: "newPrice",
1880
+ type: "uint128",
1881
+ indexed: false,
1882
+ internalType: "uint128"
1883
+ },
1884
+ {
1885
+ name: "newDuration",
1886
+ type: "uint32",
1887
+ indexed: false,
1888
+ internalType: "uint32"
1889
+ },
1890
+ {
1891
+ name: "newRoyaltyBps",
1892
+ type: "uint16",
1893
+ indexed: false,
1894
+ internalType: "uint16"
1895
+ },
1896
+ {
1897
+ name: "paymentToken",
1898
+ type: "address",
1899
+ indexed: false,
1900
+ internalType: "address"
1901
+ }
1902
+ ],
1903
+ anonymous: false
1904
+ },
1905
+ {
1906
+ type: "error",
1907
+ name: "DurationZero",
1908
+ inputs: [
1909
+ ]
1910
+ },
1911
+ {
1912
+ type: "error",
1913
+ name: "InvalidPayment",
1914
+ inputs: [
1915
+ {
1916
+ name: "expected",
1917
+ type: "uint256",
1918
+ internalType: "uint256"
1919
+ },
1920
+ {
1921
+ name: "actual",
1922
+ type: "uint256",
1923
+ internalType: "uint256"
1924
+ }
1925
+ ]
1926
+ },
1927
+ {
1928
+ type: "error",
1929
+ name: "InvalidPeriods",
1930
+ inputs: [
1931
+ {
1932
+ name: "periods",
1933
+ type: "uint32",
1934
+ internalType: "uint32"
1935
+ }
1936
+ ]
1937
+ },
1938
+ {
1939
+ type: "error",
1940
+ name: "InvalidRoyalty",
1941
+ inputs: [
1942
+ {
1943
+ name: "royaltyBps",
1944
+ type: "uint16",
1945
+ internalType: "uint16"
1946
+ }
1947
+ ]
1948
+ },
1949
+ {
1950
+ type: "error",
1951
+ name: "Unauthorized",
1952
+ inputs: [
1953
+ ]
1954
+ },
1955
+ {
1956
+ type: "error",
1957
+ name: "ZeroAddress",
1958
+ inputs: [
1959
+ ]
1960
+ }
1961
+ ];
1962
+
1963
+ function buyAccess(tokenId, periods, value // only for native token payments
1964
+ ) {
1965
+ return this.callContractMethod(constants.MARKETPLACE_CONTRACT_ADDRESS, abi, "buyAccess", [tokenId, periods], { waitForReceipt: true, value });
1966
+ }
1967
+
1968
+ function renewAccess(tokenId, buyer, periods, value) {
1969
+ return this.callContractMethod(constants.MARKETPLACE_CONTRACT_ADDRESS, abi, "renewAccess", [tokenId, buyer, periods], value !== undefined ? { value } : undefined);
1970
+ }
1971
+
1972
+ function hasAccess(user, tokenId) {
1973
+ return this.callContractMethod(constants.MARKETPLACE_CONTRACT_ADDRESS, abi, "hasAccess", [user, tokenId]);
1974
+ }
1975
+
1976
+ function subscriptionExpiry(tokenId, user) {
1977
+ return this.callContractMethod(constants.MARKETPLACE_CONTRACT_ADDRESS, abi, "subscriptionExpiry", [tokenId, user]);
1978
+ }
1979
+
1980
+ /**
1981
+ * Approves a spender to spend a specified amount of tokens on behalf of the owner.
1982
+ * If the current allowance is less than the specified amount, it will perform the approval.
1983
+ * @param {ApproveParams} params - The parameters for the approval.
1984
+ */
1985
+ function approveIfNeeded(_a) {
1986
+ return __awaiter(this, arguments, void 0, function* ({ walletClient, publicClient, tokenAddress, owner, spender, amount, }) {
1987
+ const allowance = yield publicClient.readContract({
1988
+ address: tokenAddress,
1989
+ abi: erc20Abi,
1990
+ functionName: "allowance",
1991
+ args: [owner, spender],
1992
+ });
1993
+ if (allowance < amount) {
1994
+ yield walletClient.writeContract({
1995
+ address: tokenAddress,
1996
+ account: owner,
1997
+ abi: erc20Abi,
1998
+ functionName: "approve",
1999
+ args: [spender, amount],
2000
+ chain: testnet,
2001
+ });
2002
+ }
2003
+ });
2004
+ }
2005
+
2006
+ var _Origin_instances, _Origin_generateURL, _Origin_setOriginStatus, _Origin_waitForTxReceipt, _Origin_ensureChainId;
2007
+ /**
2008
+ * The Origin class
2009
+ * Handles the upload of files to Origin, as well as querying the user's stats
2010
+ */
2011
+ class Origin {
2012
+ constructor(jwt, viemClient) {
2013
+ _Origin_instances.add(this);
2014
+ _Origin_generateURL.set(this, (file) => __awaiter(this, void 0, void 0, function* () {
2015
+ const uploadRes = yield fetch(`${constants.AUTH_HUB_BASE_API}/auth/origin/upload-url`, {
2016
+ method: "POST",
2017
+ body: JSON.stringify({
2018
+ name: file.name,
2019
+ type: file.type,
2020
+ }),
2021
+ headers: {
2022
+ Authorization: `Bearer ${this.jwt}`,
2023
+ },
2024
+ });
2025
+ const data = yield uploadRes.json();
2026
+ return data.isError ? data.message : data.data;
2027
+ }));
2028
+ _Origin_setOriginStatus.set(this, (key, status) => __awaiter(this, void 0, void 0, function* () {
2029
+ const res = yield fetch(`${constants.AUTH_HUB_BASE_API}/auth/origin/update-status`, {
2030
+ method: "PATCH",
2031
+ body: JSON.stringify({
2032
+ status,
2033
+ fileKey: key,
2034
+ }),
2035
+ headers: {
2036
+ Authorization: `Bearer ${this.jwt}`,
2037
+ "Content-Type": "application/json",
2038
+ },
2039
+ });
2040
+ if (!res.ok) {
2041
+ console.error("Failed to update origin status");
2042
+ return;
2043
+ }
2044
+ }));
2045
+ this.uploadFile = (file, options) => __awaiter(this, void 0, void 0, function* () {
2046
+ const uploadInfo = yield __classPrivateFieldGet(this, _Origin_generateURL, "f").call(this, file);
2047
+ if (!uploadInfo) {
2048
+ console.error("Failed to generate upload URL");
2049
+ return;
2050
+ }
2051
+ try {
2052
+ yield uploadWithProgress(file, uploadInfo.url, (options === null || options === void 0 ? void 0 : options.progressCallback) || (() => { }));
2053
+ }
2054
+ catch (error) {
2055
+ yield __classPrivateFieldGet(this, _Origin_setOriginStatus, "f").call(this, uploadInfo.key, "failed");
2056
+ throw new Error("Failed to upload file: " + error);
2057
+ }
2058
+ yield __classPrivateFieldGet(this, _Origin_setOriginStatus, "f").call(this, uploadInfo.key, "success");
2059
+ return uploadInfo;
2060
+ });
2061
+ this.mintFile = (file, license, options) => __awaiter(this, void 0, void 0, function* () {
2062
+ if (!this.viemClient) {
2063
+ throw new Error("WalletClient not connected.");
2064
+ }
2065
+ try {
2066
+ const info = yield this.uploadFile(file, options);
2067
+ if (!info || !info.key) {
2068
+ console.error("Invalid upload info:", info);
2069
+ return null;
2070
+ }
2071
+ const deadline = BigInt(Math.floor(Date.now() / 1000) + 600); // 10 minutes from now
2072
+ const registration = yield this.registerDataNFT("file", deadline, info.key);
2073
+ const { tokenId, signerAddress, hash, v, r, s } = registration;
2074
+ if (!tokenId ||
2075
+ !signerAddress ||
2076
+ !hash ||
2077
+ v === undefined ||
2078
+ r === undefined ||
2079
+ s === undefined) {
2080
+ console.error("Invalid registration data:", registration);
2081
+ return null;
2082
+ }
2083
+ const [account] = yield this.viemClient.request({
2084
+ method: "eth_requestAccounts",
2085
+ params: [],
2086
+ });
2087
+ const signature = { v, r, s };
2088
+ const mintResult = yield this.mintWithSignature(account, tokenId, hash, info.url, license, deadline, signature);
2089
+ return tokenId.toString();
2090
+ }
2091
+ catch (error) {
2092
+ console.error("Failed to upload file:", error);
2093
+ return null;
2094
+ }
2095
+ });
2096
+ this.mintSocial = (source) => __awaiter(this, void 0, void 0, function* () {
2097
+ try {
2098
+ const deadline = BigInt(Math.floor(Date.now() / 1000) + 600); // 10 minutes from now (temp)
2099
+ const registration = yield this.registerDataNFT(source, deadline);
2100
+ if (!registration) {
2101
+ console.error("Failed to register DataNFT");
2102
+ return null;
2103
+ }
2104
+ return registration.tokenId.toString();
2105
+ }
2106
+ catch (error) {
2107
+ console.error("Failed to mint social DataNFT:", error);
2108
+ return null;
2109
+ }
2110
+ });
2111
+ this.getOriginUploads = () => __awaiter(this, void 0, void 0, function* () {
2112
+ const res = yield fetch(`${constants.AUTH_HUB_BASE_API}/auth/origin/files`, {
2113
+ method: "GET",
2114
+ headers: {
2115
+ Authorization: `Bearer ${this.jwt}`,
2116
+ },
2117
+ });
2118
+ if (!res.ok) {
2119
+ console.error("Failed to get origin uploads");
2120
+ return null;
2121
+ }
2122
+ const data = yield res.json();
2123
+ return data.data;
2124
+ });
2125
+ this.jwt = jwt;
2126
+ this.viemClient = viemClient;
2127
+ // DataNFT methods
2128
+ this.mintWithSignature = mintWithSignature.bind(this);
2129
+ this.registerDataNFT = registerDataNFT.bind(this);
2130
+ this.updateTerms = updateTerms.bind(this);
2131
+ this.requestDelete = requestDelete.bind(this);
2132
+ this.getTerms = getTerms.bind(this);
2133
+ this.ownerOf = ownerOf.bind(this);
2134
+ this.balanceOf = balanceOf.bind(this);
2135
+ this.contentHash = contentHash.bind(this);
2136
+ this.tokenURI = tokenURI.bind(this);
2137
+ this.dataStatus = dataStatus.bind(this);
2138
+ this.royaltyInfo = royaltyInfo.bind(this);
2139
+ this.getApproved = getApproved.bind(this);
2140
+ this.isApprovedForAll = isApprovedForAll.bind(this);
2141
+ this.transferFrom = transferFrom.bind(this);
2142
+ this.safeTransferFrom = safeTransferFrom.bind(this);
2143
+ this.approve = approve.bind(this);
2144
+ this.setApprovalForAll = setApprovalForAll.bind(this);
2145
+ // Marketplace methods
2146
+ this.buyAccess = buyAccess.bind(this);
2147
+ this.renewAccess = renewAccess.bind(this);
2148
+ this.hasAccess = hasAccess.bind(this);
2149
+ this.subscriptionExpiry = subscriptionExpiry.bind(this);
2150
+ }
2151
+ getJwt() {
2152
+ return this.jwt;
2153
+ }
2154
+ setViemClient(client) {
2155
+ this.viemClient = client;
2156
+ }
2157
+ /**
2158
+ * Get the user's Origin stats (multiplier, consent, usage, etc.).
2159
+ * @returns {Promise<OriginUsageReturnType>} A promise that resolves with the user's Origin stats.
2160
+ */
2161
+ getOriginUsage() {
2162
+ return __awaiter(this, void 0, void 0, function* () {
2163
+ const data = yield fetch(`${constants.AUTH_HUB_BASE_API}/auth/origin/usage`, {
2164
+ method: "GET",
2165
+ headers: {
2166
+ Authorization: `Bearer ${this.jwt}`,
2167
+ // "x-client-id": this.clientId,
2168
+ "Content-Type": "application/json",
2169
+ },
2170
+ }).then((res) => res.json());
2171
+ if (!data.isError && data.data.user) {
2172
+ return data;
2173
+ }
2174
+ else {
2175
+ throw new APIError(data.message || "Failed to fetch Origin usage");
2176
+ }
2177
+ });
2178
+ }
2179
+ /**
2180
+ * Set the user's consent for Origin usage.
2181
+ * @param {boolean} consent The user's consent.
2182
+ * @returns {Promise<void>}
2183
+ * @throws {Error|APIError} - Throws an error if the user is not authenticated. Also throws an error if the consent is not provided.
2184
+ */
2185
+ setOriginConsent(consent) {
2186
+ return __awaiter(this, void 0, void 0, function* () {
2187
+ if (consent === undefined) {
2188
+ throw new APIError("Consent is required");
2189
+ }
2190
+ const data = yield fetch(`${constants.AUTH_HUB_BASE_API}/auth/origin/status`, {
2191
+ method: "PATCH",
2192
+ headers: {
2193
+ Authorization: `Bearer ${this.jwt}`,
2194
+ // "x-client-id": this.clientId,
2195
+ "Content-Type": "application/json",
2196
+ },
2197
+ body: JSON.stringify({
2198
+ active: consent,
2199
+ }),
2200
+ }).then((res) => res.json());
2201
+ if (!data.isError) {
2202
+ return;
2203
+ }
2204
+ else {
2205
+ throw new APIError(data.message || "Failed to set Origin consent");
2206
+ }
2207
+ });
2208
+ }
2209
+ /**
2210
+ * Set the user's Origin multiplier.
2211
+ * @param {number} multiplier The user's Origin multiplier.
2212
+ * @returns {Promise<void>}
2213
+ * @throws {Error|APIError} - Throws an error if the user is not authenticated. Also throws an error if the multiplier is not provided.
2214
+ */
2215
+ setOriginMultiplier(multiplier) {
2216
+ return __awaiter(this, void 0, void 0, function* () {
2217
+ if (multiplier === undefined) {
2218
+ throw new APIError("Multiplier is required");
2219
+ }
2220
+ const data = yield fetch(`${constants.AUTH_HUB_BASE_API}/auth/origin/multiplier`, {
2221
+ method: "PATCH",
2222
+ headers: {
2223
+ Authorization: `Bearer ${this.jwt}`,
2224
+ // "x-client-id": this.clientId,
2225
+ "Content-Type": "application/json",
2226
+ },
2227
+ body: JSON.stringify({
2228
+ multiplier,
2229
+ }),
2230
+ }).then((res) => res.json());
2231
+ if (!data.isError) {
2232
+ return;
2233
+ }
2234
+ else {
2235
+ throw new APIError(data.message || "Failed to set Origin multiplier");
2236
+ }
2237
+ });
2238
+ }
2239
+ /**
2240
+ * Call a contract method.
2241
+ * @param {string} contractAddress The contract address.
2242
+ * @param {Abi} abi The contract ABI.
2243
+ * @param {string} methodName The method name.
2244
+ * @param {any[]} params The method parameters.
2245
+ * @param {CallOptions} [options] The call options.
2246
+ * @returns {Promise<any>} A promise that resolves with the result of the contract call or transaction hash.
2247
+ * @throws {Error} - Throws an error if the wallet client is not connected and the method is not a view function.
2248
+ */
2249
+ callContractMethod(contractAddress_1, abi_1, methodName_1, params_1) {
2250
+ return __awaiter(this, arguments, void 0, function* (contractAddress, abi, methodName, params, options = {}) {
2251
+ const abiItem = getAbiItem({ abi, name: methodName });
2252
+ const isView = abiItem &&
2253
+ "stateMutability" in abiItem &&
2254
+ (abiItem.stateMutability === "view" ||
2255
+ abiItem.stateMutability === "pure");
2256
+ if (!isView && !this.viemClient) {
2257
+ throw new Error("WalletClient not connected.");
2258
+ }
2259
+ if (isView) {
2260
+ const publicClient = getPublicClient();
2261
+ const result = (yield publicClient.readContract({
2262
+ address: contractAddress,
2263
+ abi,
2264
+ functionName: methodName,
2265
+ args: params,
2266
+ })) || null;
2267
+ return result;
2268
+ }
2269
+ else {
2270
+ const [account] = yield this.viemClient.request({
2271
+ method: "eth_requestAccounts",
2272
+ params: [],
2273
+ });
2274
+ const data = encodeFunctionData({
2275
+ abi,
2276
+ functionName: methodName,
2277
+ args: params,
2278
+ });
2279
+ yield __classPrivateFieldGet(this, _Origin_instances, "m", _Origin_ensureChainId).call(this, testnet);
2280
+ const txHash = yield this.viemClient.sendTransaction({
2281
+ to: contractAddress,
2282
+ data,
2283
+ account,
2284
+ value: options.value,
2285
+ gas: options.gas,
2286
+ });
2287
+ if (typeof txHash !== "string") {
2288
+ throw new Error("Transaction failed to send.");
2289
+ }
2290
+ if (!options.waitForReceipt) {
2291
+ return txHash;
2292
+ }
2293
+ const receipt = yield __classPrivateFieldGet(this, _Origin_instances, "m", _Origin_waitForTxReceipt).call(this, txHash);
2294
+ return receipt;
2295
+ }
2296
+ });
2297
+ }
2298
+ /**
2299
+ * Buy access to an asset by first checking its price via getTerms, then calling buyAccess.
2300
+ * @param {bigint} tokenId The token ID of the asset.
2301
+ * @param {number} periods The number of periods to buy access for.
2302
+ * @returns {Promise<any>} The result of the buyAccess call.
2303
+ */
2304
+ buyAccessSmart(tokenId, periods) {
2305
+ return __awaiter(this, void 0, void 0, function* () {
2306
+ if (!this.viemClient) {
2307
+ throw new Error("WalletClient not connected.");
2308
+ }
2309
+ const terms = yield this.getTerms(tokenId);
2310
+ if (!terms)
2311
+ throw new Error("Failed to fetch terms for asset");
2312
+ const { price, paymentToken } = terms;
2313
+ if (price === undefined || paymentToken === undefined) {
2314
+ throw new Error("Terms missing price or paymentToken");
2315
+ }
2316
+ const totalCost = price * BigInt(periods);
2317
+ const isNative = paymentToken === zeroAddress;
2318
+ if (isNative) {
2319
+ return this.buyAccess(tokenId, periods, totalCost);
2320
+ }
2321
+ const owner = yield this.viemClient.getAddress();
2322
+ yield approveIfNeeded({
2323
+ walletClient: this.viemClient,
2324
+ publicClient: getPublicClient(),
2325
+ tokenAddress: paymentToken,
2326
+ owner,
2327
+ spender: constants.MARKETPLACE_CONTRACT_ADDRESS,
2328
+ amount: totalCost,
2329
+ });
2330
+ return this.buyAccess(tokenId, periods);
2331
+ });
2332
+ }
2333
+ getData(tokenId) {
2334
+ return __awaiter(this, void 0, void 0, function* () {
2335
+ const response = yield fetch(`${constants.AUTH_HUB_BASE_API}/auth/origin/data/${tokenId}`, {
2336
+ method: "GET",
2337
+ headers: {
2338
+ Authorization: `Bearer ${this.jwt}`,
2339
+ "Content-Type": "application/json",
2340
+ },
2341
+ });
2342
+ if (!response.ok) {
2343
+ throw new Error("Failed to fetch data");
2344
+ }
2345
+ return response.json();
2346
+ });
2347
+ }
2348
+ }
2349
+ _Origin_generateURL = new WeakMap(), _Origin_setOriginStatus = new WeakMap(), _Origin_instances = new WeakSet(), _Origin_waitForTxReceipt = function _Origin_waitForTxReceipt(txHash) {
2350
+ return __awaiter(this, void 0, void 0, function* () {
2351
+ if (!this.viemClient)
2352
+ throw new Error("WalletClient not connected.");
2353
+ while (true) {
2354
+ const receipt = yield this.viemClient.request({
2355
+ method: "eth_getTransactionReceipt",
2356
+ params: [txHash],
2357
+ });
2358
+ if (receipt && receipt.blockNumber) {
2359
+ return receipt;
2360
+ }
2361
+ yield new Promise((res) => setTimeout(res, 1000));
2362
+ }
2363
+ });
2364
+ }, _Origin_ensureChainId = function _Origin_ensureChainId(chain) {
2365
+ return __awaiter(this, void 0, void 0, function* () {
2366
+ // return;
2367
+ if (!this.viemClient)
2368
+ throw new Error("WalletClient not connected.");
2369
+ let currentChainId = yield this.viemClient.request({
2370
+ method: "eth_chainId",
2371
+ params: [],
2372
+ });
2373
+ if (typeof currentChainId === "string") {
2374
+ currentChainId = parseInt(currentChainId, 16);
2375
+ }
2376
+ if (currentChainId !== chain.id) {
2377
+ try {
2378
+ yield this.viemClient.request({
2379
+ method: "wallet_switchEthereumChain",
2380
+ params: [{ chainId: "0x" + BigInt(chain.id).toString(16) }],
2381
+ });
2382
+ }
2383
+ catch (switchError) {
2384
+ // Unrecognized chain
2385
+ if (switchError.code === 4902) {
2386
+ yield this.viemClient.request({
2387
+ method: "wallet_addEthereumChain",
2388
+ params: [
2389
+ {
2390
+ chainId: "0x" + BigInt(chain.id).toString(16),
2391
+ chainName: chain.name,
2392
+ rpcUrls: chain.rpcUrls.default.http,
2393
+ nativeCurrency: chain.nativeCurrency,
2394
+ },
2395
+ ],
2396
+ });
2397
+ yield this.viemClient.request({
2398
+ method: "wallet_switchEthereumChain",
2399
+ params: [{ chainId: "0x" + BigInt(chain.id).toString(16) }],
2400
+ });
2401
+ }
2402
+ else {
2403
+ throw switchError;
2404
+ }
2405
+ }
2406
+ }
2407
+ });
400
2408
  };
401
- /**
402
- * Construct URL to the GraphQL endpoint of Ackee.
403
- * @param {String} server - URL of the Ackee server.
404
- * @returns {String} endpoint - URL to the GraphQL endpoint of the Ackee server.
405
- */
406
- const endpoint = function (server) {
407
- const hasTrailingSlash = server.substr(-1) === "/";
408
- return server + (hasTrailingSlash === true ? "" : "/") + "api";
2409
+
2410
+ var _Auth_instances, _Auth_triggers, _Auth_ackeeInstance, _Auth_trigger, _Auth_loadAuthStatusFromStorage, _Auth_requestAccount, _Auth_fetchNonce, _Auth_verifySignature, _Auth_createMessage, _Auth_sendAnalyticsEvent;
2411
+ const createRedirectUriObject = (redirectUri) => {
2412
+ const keys = ["twitter", "discord", "spotify"];
2413
+ if (typeof redirectUri === "object") {
2414
+ return keys.reduce((object, key) => {
2415
+ object[key] =
2416
+ redirectUri[key] ||
2417
+ (typeof window !== "undefined" ? window.location.href : "");
2418
+ return object;
2419
+ }, {});
2420
+ }
2421
+ else if (typeof redirectUri === "string") {
2422
+ return keys.reduce((object, key) => {
2423
+ object[key] = redirectUri;
2424
+ return object;
2425
+ }, {});
2426
+ }
2427
+ else if (!redirectUri) {
2428
+ return keys.reduce((object, key) => {
2429
+ object[key] = typeof window !== "undefined" ? window.location.href : "";
2430
+ return object;
2431
+ }, {});
2432
+ }
2433
+ return {};
409
2434
  };
410
2435
  /**
411
- * Sends a request to a specified URL.
412
- * Won't catch all errors as some are already logged by the browser.
413
- * In this case the callback won't fire.
414
- * @param {String} url - URL to the GraphQL endpoint of the Ackee server.
415
- * @param {Object} body - JSON which will be send to the server.
416
- * @param {Object} opts - Options.
417
- * @param {?Function} next - The callback that handles the response. Receives the following properties: json.
2436
+ * The Auth class.
2437
+ * @class
2438
+ * @classdesc The Auth class is used to authenticate the user.
418
2439
  */
419
- const send = function (url, body, opts, next) {
420
- const xhr = new XMLHttpRequest();
421
- xhr.open("POST", url);
422
- xhr.onload = () => {
423
- if (xhr.status !== 200) {
424
- throw new Error("Server returned with an unhandled status");
425
- }
426
- let json = null;
427
- try {
428
- json = JSON.parse(xhr.responseText);
2440
+ class Auth {
2441
+ /**
2442
+ * Constructor for the Auth class.
2443
+ * @param {object} options The options object.
2444
+ * @param {string} options.clientId The client ID.
2445
+ * @param {string|object} options.redirectUri The redirect URI used for oauth. Leave empty if you want to use the current URL. If you want different redirect URIs for different socials, pass an object with the socials as keys and the redirect URIs as values.
2446
+ * @param {boolean} [options.allowAnalytics=true] Whether to allow analytics to be sent.
2447
+ * @param {object} [options.ackeeInstance] The Ackee instance.
2448
+ * @throws {APIError} - Throws an error if the clientId is not provided.
2449
+ */
2450
+ constructor({ clientId, redirectUri, allowAnalytics = true, ackeeInstance, }) {
2451
+ _Auth_instances.add(this);
2452
+ _Auth_triggers.set(this, void 0);
2453
+ _Auth_ackeeInstance.set(this, void 0);
2454
+ if (!clientId) {
2455
+ throw new Error("clientId is required");
429
2456
  }
430
- catch (e) {
431
- throw new Error("Failed to parse response from server");
2457
+ this.viem = null;
2458
+ // if (typeof window !== "undefined") {
2459
+ // if (window.ethereum) this.viem = getClient(window.ethereum);
2460
+ // }
2461
+ this.redirectUri = createRedirectUriObject(redirectUri);
2462
+ if (ackeeInstance)
2463
+ __classPrivateFieldSet(this, _Auth_ackeeInstance, ackeeInstance, "f");
2464
+ if (allowAnalytics &&
2465
+ !__classPrivateFieldGet(this, _Auth_ackeeInstance, "f") &&
2466
+ typeof window !== "undefined") ;
2467
+ this.clientId = clientId;
2468
+ this.isAuthenticated = false;
2469
+ this.jwt = null;
2470
+ this.origin = null;
2471
+ this.walletAddress = null;
2472
+ this.userId = null;
2473
+ __classPrivateFieldSet(this, _Auth_triggers, {}, "f");
2474
+ providerStore.subscribe((providers) => {
2475
+ __classPrivateFieldGet(this, _Auth_instances, "m", _Auth_trigger).call(this, "providers", providers);
2476
+ });
2477
+ __classPrivateFieldGet(this, _Auth_instances, "m", _Auth_loadAuthStatusFromStorage).call(this);
2478
+ }
2479
+ /**
2480
+ * Subscribe to an event. Possible events are "state", "provider", "providers", and "viem".
2481
+ * @param {("state"|"provider"|"providers"|"viem")} event The event.
2482
+ * @param {function} callback The callback function.
2483
+ * @returns {void}
2484
+ * @example
2485
+ * auth.on("state", (state) => {
2486
+ * console.log(state);
2487
+ * });
2488
+ */
2489
+ on(event, callback) {
2490
+ if (!__classPrivateFieldGet(this, _Auth_triggers, "f")[event]) {
2491
+ __classPrivateFieldGet(this, _Auth_triggers, "f")[event] = [];
432
2492
  }
433
- if (json.errors != null) {
434
- throw new Error(json.errors[0].message);
2493
+ __classPrivateFieldGet(this, _Auth_triggers, "f")[event].push(callback);
2494
+ if (event === "providers") {
2495
+ callback(providerStore.value());
2496
+ }
2497
+ }
2498
+ /**
2499
+ * Set the loading state.
2500
+ * @param {boolean} loading The loading state.
2501
+ * @returns {void}
2502
+ */
2503
+ setLoading(loading) {
2504
+ __classPrivateFieldGet(this, _Auth_instances, "m", _Auth_trigger).call(this, "state", loading
2505
+ ? "loading"
2506
+ : this.isAuthenticated
2507
+ ? "authenticated"
2508
+ : "unauthenticated");
2509
+ }
2510
+ /**
2511
+ * Set the provider. This is useful for setting the provider when the user selects a provider from the UI or when dApp wishes to use a specific provider.
2512
+ * @param {object} options The options object. Includes the provider and the provider info.
2513
+ * @returns {void}
2514
+ * @throws {APIError} - Throws an error if the provider is not provided.
2515
+ */
2516
+ setProvider({ provider, info, address, }) {
2517
+ if (!provider) {
2518
+ throw new APIError("provider is required");
435
2519
  }
436
- if (typeof next === "function") {
437
- return next(json);
2520
+ this.viem = getClient(provider, info.name, address);
2521
+ if (this.origin) {
2522
+ this.origin.setViemClient(this.viem);
438
2523
  }
439
- };
440
- xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
441
- // xhr.withCredentials = opts.ignoreOwnVisits ?? false;
442
- xhr.withCredentials = false;
443
- xhr.send(JSON.stringify(body));
444
- };
445
- /**
446
- * Looks for an element with Ackee attributes and executes Ackee with the given attributes.
447
- * Fails silently.
448
- */
449
- const detect = function () {
450
- const elem = document.querySelector("[data-ackee-domain-id]");
451
- if (elem == null)
452
- return;
453
- const server = elem.getAttribute("data-ackee-server") || "";
454
- const domainId = elem.getAttribute("data-ackee-domain-id") || "";
455
- const opts = elem.getAttribute("data-ackee-opts") || "{}";
456
- create(server, JSON.parse(opts)).record(domainId);
457
- };
458
- /**
459
- * Creates a new instance.
460
- * @param {String} server - URL of the Ackee server.
461
- * @param {?Object} opts
462
- * @returns {Object} instance
463
- */
464
- const create = function (server, opts) {
465
- opts = validate(opts);
466
- const url = endpoint(server);
467
- const noop = () => { };
468
- // Fake instance when Ackee ignores you
469
- const fakeInstance = {
470
- record: () => ({ stop: noop }),
471
- updateRecord: () => ({ stop: noop }),
472
- action: noop,
473
- updateAction: noop,
474
- };
475
- if (opts.ignoreLocalhost === true &&
476
- isLocalhost(location.hostname) === true &&
477
- isBrowser === true) {
478
- // console.warn("Ackee ignores you because you are on localhost");
479
- return fakeInstance;
480
- }
481
- if (isBot(navigator ? navigator.userAgent : "") === true) {
482
- // console.warn("Ackee ignores you because you are a bot");
483
- return fakeInstance;
484
- }
485
- // Creates a new record on the server and updates the record
486
- // very x seconds to track the duration of the visit. Tries to use
487
- // the default attributes when there're no custom attributes defined.
488
- const _record = (domainId, attrs = attributes(opts.detailed), next) => {
489
- // Function to stop updating the record
490
- let isStopped = false;
491
- const stop = () => {
492
- isStopped = true;
493
- };
494
- send(url, createRecordBody(domainId, attrs), opts, (json) => {
495
- const recordId = json.data.createRecord.payload.id;
496
- if (isFakeId(recordId) === true) {
497
- // return console.warn("Ackee ignores you because this is your own site");
2524
+ __classPrivateFieldGet(this, _Auth_instances, "m", _Auth_trigger).call(this, "viem", this.viem);
2525
+ __classPrivateFieldGet(this, _Auth_instances, "m", _Auth_trigger).call(this, "provider", { provider, info });
2526
+ }
2527
+ /**
2528
+ * Set the wallet address. This is useful for edge cases where the provider can't return the wallet address. Don't use this unless you know what you're doing.
2529
+ * @param {string} walletAddress The wallet address.
2530
+ * @returns {void}
2531
+ */
2532
+ setWalletAddress(walletAddress) {
2533
+ this.walletAddress = walletAddress;
2534
+ }
2535
+ /**
2536
+ * Disconnect the user.
2537
+ * @returns {Promise<void>}
2538
+ */
2539
+ disconnect() {
2540
+ return __awaiter(this, void 0, void 0, function* () {
2541
+ if (!this.isAuthenticated) {
498
2542
  return;
499
2543
  }
500
- const interval = setInterval(() => {
501
- if (isStopped === true) {
502
- clearInterval(interval);
503
- return;
2544
+ __classPrivateFieldGet(this, _Auth_instances, "m", _Auth_trigger).call(this, "state", "unauthenticated");
2545
+ this.isAuthenticated = false;
2546
+ this.walletAddress = null;
2547
+ this.userId = null;
2548
+ this.jwt = null;
2549
+ this.origin = null;
2550
+ localStorage.removeItem("camp-sdk:wallet-address");
2551
+ localStorage.removeItem("camp-sdk:user-id");
2552
+ localStorage.removeItem("camp-sdk:jwt");
2553
+ // await this.#sendAnalyticsEvent(
2554
+ // constants.ACKEE_EVENTS.USER_DISCONNECTED,
2555
+ // "User Disconnected"
2556
+ // );
2557
+ });
2558
+ }
2559
+ /**
2560
+ * Connect the user's wallet and sign the message.
2561
+ * @returns {Promise<{ success: boolean; message: string; walletAddress: string }>} A promise that resolves with the authentication result.
2562
+ * @throws {APIError} - Throws an error if the user cannot be authenticated.
2563
+ */
2564
+ connect() {
2565
+ return __awaiter(this, void 0, void 0, function* () {
2566
+ __classPrivateFieldGet(this, _Auth_instances, "m", _Auth_trigger).call(this, "state", "loading");
2567
+ try {
2568
+ if (!this.walletAddress) {
2569
+ yield __classPrivateFieldGet(this, _Auth_instances, "m", _Auth_requestAccount).call(this);
2570
+ }
2571
+ const nonce = yield __classPrivateFieldGet(this, _Auth_instances, "m", _Auth_fetchNonce).call(this);
2572
+ const message = __classPrivateFieldGet(this, _Auth_instances, "m", _Auth_createMessage).call(this, nonce);
2573
+ const signature = yield this.viem.signMessage({
2574
+ account: this.walletAddress,
2575
+ message: message,
2576
+ });
2577
+ const res = yield __classPrivateFieldGet(this, _Auth_instances, "m", _Auth_verifySignature).call(this, message, signature);
2578
+ if (res.success) {
2579
+ this.isAuthenticated = true;
2580
+ this.userId = res.userId;
2581
+ this.jwt = res.token;
2582
+ this.origin = new Origin(this.jwt, this.viem);
2583
+ localStorage.setItem("camp-sdk:jwt", this.jwt);
2584
+ localStorage.setItem("camp-sdk:wallet-address", this.walletAddress);
2585
+ localStorage.setItem("camp-sdk:user-id", this.userId);
2586
+ __classPrivateFieldGet(this, _Auth_instances, "m", _Auth_trigger).call(this, "state", "authenticated");
2587
+ yield __classPrivateFieldGet(this, _Auth_instances, "m", _Auth_sendAnalyticsEvent).call(this, constants.ACKEE_EVENTS.USER_CONNECTED, "User Connected");
2588
+ return {
2589
+ success: true,
2590
+ message: "Successfully authenticated",
2591
+ walletAddress: this.walletAddress,
2592
+ };
2593
+ }
2594
+ else {
2595
+ this.isAuthenticated = false;
2596
+ __classPrivateFieldGet(this, _Auth_instances, "m", _Auth_trigger).call(this, "state", "unauthenticated");
2597
+ throw new APIError("Failed to authenticate");
504
2598
  }
505
- if (isInBackground() === true)
506
- return;
507
- send(url, updateRecordBody(recordId), opts);
508
- }, 15000);
509
- if (typeof next === "function") {
510
- return next(recordId);
2599
+ }
2600
+ catch (e) {
2601
+ this.isAuthenticated = false;
2602
+ __classPrivateFieldGet(this, _Auth_instances, "m", _Auth_trigger).call(this, "state", "unauthenticated");
2603
+ throw new APIError(e);
511
2604
  }
512
2605
  });
513
- return { stop };
514
- };
515
- // Updates a record very x seconds to track the duration of the visit
516
- const _updateRecord = (recordId) => {
517
- // Function to stop updating the record
518
- let isStopped = false;
519
- const stop = () => {
520
- isStopped = true;
521
- };
522
- if (isFakeId(recordId) === true) {
523
- // console.warn("Ackee ignores you because this is your own site");
524
- return { stop };
525
- }
526
- const interval = setInterval(() => {
527
- if (isStopped === true) {
528
- clearInterval(interval);
529
- return;
2606
+ }
2607
+ /**
2608
+ * Get the user's linked social accounts.
2609
+ * @returns {Promise<Record<string, boolean>>} A promise that resolves with the user's linked social accounts.
2610
+ * @throws {Error|APIError} - Throws an error if the user is not authenticated or if the request fails.
2611
+ * @example
2612
+ * const auth = new Auth({ clientId: "your-client-id" });
2613
+ * const socials = await auth.getLinkedSocials();
2614
+ * console.log(socials);
2615
+ */
2616
+ getLinkedSocials() {
2617
+ return __awaiter(this, void 0, void 0, function* () {
2618
+ if (!this.isAuthenticated)
2619
+ throw new Error("User needs to be authenticated");
2620
+ const connections = yield fetch(`${constants.AUTH_HUB_BASE_API}/auth/client-user/connections-sdk`, {
2621
+ method: "GET",
2622
+ headers: {
2623
+ Authorization: `Bearer ${this.jwt}`,
2624
+ "x-client-id": this.clientId,
2625
+ "Content-Type": "application/json",
2626
+ },
2627
+ }).then((res) => res.json());
2628
+ if (!connections.isError) {
2629
+ const socials = {};
2630
+ Object.keys(connections.data.data).forEach((key) => {
2631
+ socials[key.split("User")[0]] = connections.data.data[key];
2632
+ });
2633
+ return socials;
530
2634
  }
531
- if (isInBackground() === true)
532
- return;
533
- send(url, updateRecordBody(recordId));
534
- }, 15000);
535
- return { stop };
536
- };
537
- // Creates a new action on the server
538
- const _action = (eventId, attrs, next) => {
539
- send(url, createActionBody(eventId, attrs), opts, (json) => {
540
- const actionId = json.data.createAction.payload.id;
541
- if (isFakeId(actionId) === true) {
542
- // return console.warn("Ackee ignores you because this is your own site");
543
- return;
2635
+ else {
2636
+ throw new APIError(connections.message || "Failed to fetch connections");
544
2637
  }
545
- if (typeof next === "function") {
546
- return next(actionId);
2638
+ });
2639
+ }
2640
+ /**
2641
+ * Link the user's Twitter account.
2642
+ * @returns {Promise<void>}
2643
+ * @throws {Error} - Throws an error if the user is not authenticated.
2644
+ */
2645
+ linkTwitter() {
2646
+ return __awaiter(this, void 0, void 0, function* () {
2647
+ if (!this.isAuthenticated) {
2648
+ throw new Error("User needs to be authenticated");
547
2649
  }
2650
+ // await this.#sendAnalyticsEvent(
2651
+ // constants.ACKEE_EVENTS.TWITTER_LINKED,
2652
+ // "Twitter Linked"
2653
+ // );
2654
+ window.location.href = `${constants.AUTH_HUB_BASE_API}/twitter/connect?clientId=${this.clientId}&userId=${this.userId}&redirect_url=${this.redirectUri["twitter"]}`;
548
2655
  });
549
- };
550
- // Updates an action
551
- const _updateAction = (actionId, attrs) => {
552
- if (isFakeId(actionId) === true) {
553
- // return console.warn("Ackee ignores you because this is your own site");
2656
+ }
2657
+ /**
2658
+ * Link the user's Discord account.
2659
+ * @returns {Promise<void>}
2660
+ * @throws {Error} - Throws an error if the user is not authenticated.
2661
+ */
2662
+ linkDiscord() {
2663
+ return __awaiter(this, void 0, void 0, function* () {
2664
+ if (!this.isAuthenticated) {
2665
+ throw new Error("User needs to be authenticated");
2666
+ }
2667
+ // await this.#sendAnalyticsEvent(
2668
+ // constants.ACKEE_EVENTS.DISCORD_LINKED,
2669
+ // "Discord Linked"
2670
+ // );
2671
+ window.location.href = `${constants.AUTH_HUB_BASE_API}/discord/connect?clientId=${this.clientId}&userId=${this.userId}&redirect_url=${this.redirectUri["discord"]}`;
2672
+ });
2673
+ }
2674
+ /**
2675
+ * Link the user's Spotify account.
2676
+ * @returns {Promise<void>}
2677
+ * @throws {Error} - Throws an error if the user is not authenticated.
2678
+ */
2679
+ linkSpotify() {
2680
+ return __awaiter(this, void 0, void 0, function* () {
2681
+ if (!this.isAuthenticated) {
2682
+ throw new Error("User needs to be authenticated");
2683
+ }
2684
+ // await this.#sendAnalyticsEvent(
2685
+ // constants.ACKEE_EVENTS.SPOTIFY_LINKED,
2686
+ // "Spotify Linked"
2687
+ // );
2688
+ window.location.href = `${constants.AUTH_HUB_BASE_API}/spotify/connect?clientId=${this.clientId}&userId=${this.userId}&redirect_url=${this.redirectUri["spotify"]}`;
2689
+ });
2690
+ }
2691
+ /**
2692
+ * Link the user's TikTok account.
2693
+ * @param {string} handle The user's TikTok handle.
2694
+ * @returns {Promise<any>} A promise that resolves with the TikTok account data.
2695
+ * @throws {Error|APIError} - Throws an error if the user is not authenticated.
2696
+ */
2697
+ linkTikTok(handle) {
2698
+ return __awaiter(this, void 0, void 0, function* () {
2699
+ if (!this.isAuthenticated) {
2700
+ throw new Error("User needs to be authenticated");
2701
+ }
2702
+ const data = yield fetch(`${constants.AUTH_HUB_BASE_API}/tiktok/connect-sdk`, {
2703
+ method: "POST",
2704
+ redirect: "follow",
2705
+ headers: {
2706
+ Authorization: `Bearer ${this.jwt}`,
2707
+ "x-client-id": this.clientId,
2708
+ "Content-Type": "application/json",
2709
+ },
2710
+ body: JSON.stringify({
2711
+ userHandle: handle,
2712
+ clientId: this.clientId,
2713
+ userId: this.userId,
2714
+ }),
2715
+ }).then((res) => res.json());
2716
+ if (!data.isError) {
2717
+ __classPrivateFieldGet(this, _Auth_instances, "m", _Auth_sendAnalyticsEvent).call(this, constants.ACKEE_EVENTS.TIKTOK_LINKED, "TikTok Linked");
2718
+ return data.data;
2719
+ }
2720
+ else {
2721
+ if (data.message === "Request failed with status code 502") {
2722
+ throw new APIError("TikTok service is currently unavailable, try again later");
2723
+ }
2724
+ else {
2725
+ throw new APIError(data.message || "Failed to link TikTok account");
2726
+ }
2727
+ }
2728
+ });
2729
+ }
2730
+ /**
2731
+ * Send an OTP to the user's Telegram account.
2732
+ * @param {string} phoneNumber The user's phone number.
2733
+ * @returns {Promise<any>} A promise that resolves with the OTP data.
2734
+ * @throws {Error|APIError} - Throws an error if the user is not authenticated.
2735
+ */
2736
+ sendTelegramOTP(phoneNumber) {
2737
+ return __awaiter(this, void 0, void 0, function* () {
2738
+ if (!this.isAuthenticated)
2739
+ throw new Error("User needs to be authenticated");
2740
+ if (!phoneNumber)
2741
+ throw new APIError("Phone number is required");
2742
+ yield this.unlinkTelegram();
2743
+ const data = yield fetch(`${constants.AUTH_HUB_BASE_API}/telegram/sendOTP-sdk`, {
2744
+ method: "POST",
2745
+ redirect: "follow",
2746
+ headers: {
2747
+ Authorization: `Bearer ${this.jwt}`,
2748
+ "x-client-id": this.clientId,
2749
+ "Content-Type": "application/json",
2750
+ },
2751
+ body: JSON.stringify({
2752
+ phone: phoneNumber,
2753
+ }),
2754
+ }).then((res) => res.json());
2755
+ if (!data.isError) {
2756
+ return data.data;
2757
+ }
2758
+ else {
2759
+ throw new APIError(data.message || "Failed to send Telegram OTP");
2760
+ }
2761
+ });
2762
+ }
2763
+ /**
2764
+ * Link the user's Telegram account.
2765
+ * @param {string} phoneNumber The user's phone number.
2766
+ * @param {string} otp The OTP.
2767
+ * @param {string} phoneCodeHash The phone code hash.
2768
+ * @returns {Promise<object>} A promise that resolves with the Telegram account data.
2769
+ * @throws {APIError|Error} - Throws an error if the user is not authenticated. Also throws an error if the phone number, OTP, and phone code hash are not provided.
2770
+ */
2771
+ linkTelegram(phoneNumber, otp, phoneCodeHash) {
2772
+ return __awaiter(this, void 0, void 0, function* () {
2773
+ if (!this.isAuthenticated)
2774
+ throw new Error("User needs to be authenticated");
2775
+ if (!phoneNumber || !otp || !phoneCodeHash)
2776
+ throw new APIError("Phone number, OTP, and phone code hash are required");
2777
+ const data = yield fetch(`${constants.AUTH_HUB_BASE_API}/telegram/signIn-sdk`, {
2778
+ method: "POST",
2779
+ redirect: "follow",
2780
+ headers: {
2781
+ Authorization: `Bearer ${this.jwt}`,
2782
+ "x-client-id": this.clientId,
2783
+ "Content-Type": "application/json",
2784
+ },
2785
+ body: JSON.stringify({
2786
+ phone: phoneNumber,
2787
+ code: otp,
2788
+ phone_code_hash: phoneCodeHash,
2789
+ userId: this.userId,
2790
+ clientId: this.clientId,
2791
+ }),
2792
+ }).then((res) => res.json());
2793
+ if (!data.isError) {
2794
+ __classPrivateFieldGet(this, _Auth_instances, "m", _Auth_sendAnalyticsEvent).call(this, constants.ACKEE_EVENTS.TELEGRAM_LINKED, "Telegram Linked");
2795
+ return data.data;
2796
+ }
2797
+ else {
2798
+ throw new APIError(data.message || "Failed to link Telegram account");
2799
+ }
2800
+ });
2801
+ }
2802
+ /**
2803
+ * Unlink the user's Twitter account.
2804
+ * @returns {Promise<any>} A promise that resolves with the unlink result.
2805
+ * @throws {Error} - Throws an error if the user is not authenticated.
2806
+ * @throws {APIError} - Throws an error if the request fails.
2807
+ */
2808
+ unlinkTwitter() {
2809
+ return __awaiter(this, void 0, void 0, function* () {
2810
+ if (!this.isAuthenticated) {
2811
+ throw new Error("User needs to be authenticated");
2812
+ }
2813
+ const data = yield fetch(`${constants.AUTH_HUB_BASE_API}/twitter/disconnect-sdk`, {
2814
+ method: "POST",
2815
+ redirect: "follow",
2816
+ headers: {
2817
+ Authorization: `Bearer ${this.jwt}`,
2818
+ "x-client-id": this.clientId,
2819
+ "Content-Type": "application/json",
2820
+ },
2821
+ body: JSON.stringify({
2822
+ id: this.userId,
2823
+ }),
2824
+ }).then((res) => res.json());
2825
+ if (!data.isError) {
2826
+ return data.data;
2827
+ }
2828
+ else {
2829
+ throw new APIError(data.message || "Failed to unlink Twitter account");
2830
+ }
2831
+ });
2832
+ }
2833
+ /**
2834
+ * Unlink the user's Discord account.
2835
+ * @returns {Promise<any>} A promise that resolves with the unlink result.
2836
+ * @throws {Error} - Throws an error if the user is not authenticated.
2837
+ * @throws {APIError} - Throws an error if the request fails.
2838
+ */
2839
+ unlinkDiscord() {
2840
+ return __awaiter(this, void 0, void 0, function* () {
2841
+ if (!this.isAuthenticated) {
2842
+ throw new APIError("User needs to be authenticated");
2843
+ }
2844
+ const data = yield fetch(`${constants.AUTH_HUB_BASE_API}/discord/disconnect-sdk`, {
2845
+ method: "POST",
2846
+ redirect: "follow",
2847
+ headers: {
2848
+ Authorization: `Bearer ${this.jwt}`,
2849
+ "x-client-id": this.clientId,
2850
+ "Content-Type": "application/json",
2851
+ },
2852
+ body: JSON.stringify({
2853
+ id: this.userId,
2854
+ }),
2855
+ }).then((res) => res.json());
2856
+ if (!data.isError) {
2857
+ return data.data;
2858
+ }
2859
+ else {
2860
+ throw new APIError(data.message || "Failed to unlink Discord account");
2861
+ }
2862
+ });
2863
+ }
2864
+ /**
2865
+ * Unlink the user's Spotify account.
2866
+ * @returns {Promise<any>} A promise that resolves with the unlink result.
2867
+ * @throws {Error} - Throws an error if the user is not authenticated.
2868
+ * @throws {APIError} - Throws an error if the request fails.
2869
+ */
2870
+ unlinkSpotify() {
2871
+ return __awaiter(this, void 0, void 0, function* () {
2872
+ if (!this.isAuthenticated) {
2873
+ throw new APIError("User needs to be authenticated");
2874
+ }
2875
+ const data = yield fetch(`${constants.AUTH_HUB_BASE_API}/spotify/disconnect-sdk`, {
2876
+ method: "POST",
2877
+ redirect: "follow",
2878
+ headers: {
2879
+ Authorization: `Bearer ${this.jwt}`,
2880
+ "x-client-id": this.clientId,
2881
+ "Content-Type": "application/json",
2882
+ },
2883
+ body: JSON.stringify({
2884
+ id: this.userId,
2885
+ }),
2886
+ }).then((res) => res.json());
2887
+ if (!data.isError) {
2888
+ return data.data;
2889
+ }
2890
+ else {
2891
+ throw new APIError(data.message || "Failed to unlink Spotify account");
2892
+ }
2893
+ });
2894
+ }
2895
+ /**
2896
+ * Unlink the user's TikTok account.
2897
+ * @returns {Promise<any>} A promise that resolves with the unlink result.
2898
+ * @throws {Error} - Throws an error if the user is not authenticated.
2899
+ * @throws {APIError} - Throws an error if the request fails.
2900
+ */
2901
+ unlinkTikTok() {
2902
+ return __awaiter(this, void 0, void 0, function* () {
2903
+ if (!this.isAuthenticated) {
2904
+ throw new APIError("User needs to be authenticated");
2905
+ }
2906
+ const data = yield fetch(`${constants.AUTH_HUB_BASE_API}/tiktok/disconnect-sdk`, {
2907
+ method: "POST",
2908
+ redirect: "follow",
2909
+ headers: {
2910
+ Authorization: `Bearer ${this.jwt}`,
2911
+ "x-client-id": this.clientId,
2912
+ "Content-Type": "application/json",
2913
+ },
2914
+ body: JSON.stringify({
2915
+ userId: this.userId,
2916
+ }),
2917
+ }).then((res) => res.json());
2918
+ if (!data.isError) {
2919
+ return data.data;
2920
+ }
2921
+ else {
2922
+ throw new APIError(data.message || "Failed to unlink TikTok account");
2923
+ }
2924
+ });
2925
+ }
2926
+ /**
2927
+ * Unlink the user's Telegram account.
2928
+ * @returns {Promise<any>} A promise that resolves with the unlink result.
2929
+ * @throws {Error} - Throws an error if the user is not authenticated.
2930
+ * @throws {APIError} - Throws an error if the request fails.
2931
+ */
2932
+ unlinkTelegram() {
2933
+ return __awaiter(this, void 0, void 0, function* () {
2934
+ if (!this.isAuthenticated) {
2935
+ throw new APIError("User needs to be authenticated");
2936
+ }
2937
+ const data = yield fetch(`${constants.AUTH_HUB_BASE_API}/telegram/disconnect-sdk`, {
2938
+ method: "POST",
2939
+ redirect: "follow",
2940
+ headers: {
2941
+ Authorization: `Bearer ${this.jwt}`,
2942
+ "x-client-id": this.clientId,
2943
+ "Content-Type": "application/json",
2944
+ },
2945
+ body: JSON.stringify({
2946
+ userId: this.userId,
2947
+ }),
2948
+ }).then((res) => res.json());
2949
+ if (!data.isError) {
2950
+ return data.data;
2951
+ }
2952
+ else {
2953
+ throw new APIError(data.message || "Failed to unlink Telegram account");
2954
+ }
2955
+ });
2956
+ }
2957
+ }
2958
+ _Auth_triggers = new WeakMap(), _Auth_ackeeInstance = new WeakMap(), _Auth_instances = new WeakSet(), _Auth_trigger = function _Auth_trigger(event, data) {
2959
+ if (__classPrivateFieldGet(this, _Auth_triggers, "f")[event]) {
2960
+ __classPrivateFieldGet(this, _Auth_triggers, "f")[event].forEach((callback) => callback(data));
2961
+ }
2962
+ }, _Auth_loadAuthStatusFromStorage = function _Auth_loadAuthStatusFromStorage(provider) {
2963
+ return __awaiter(this, void 0, void 0, function* () {
2964
+ var _a, _b;
2965
+ if (typeof localStorage === "undefined") {
554
2966
  return;
555
2967
  }
556
- send(url, updateActionBody(actionId, attrs));
557
- };
558
- // Return the real instance
559
- return {
560
- record: _record,
561
- updateRecord: _updateRecord,
562
- action: _action,
563
- updateAction: _updateAction,
564
- };
2968
+ const walletAddress = localStorage === null || localStorage === void 0 ? void 0 : localStorage.getItem("camp-sdk:wallet-address");
2969
+ const userId = localStorage === null || localStorage === void 0 ? void 0 : localStorage.getItem("camp-sdk:user-id");
2970
+ const jwt = localStorage === null || localStorage === void 0 ? void 0 : localStorage.getItem("camp-sdk:jwt");
2971
+ if (walletAddress && userId && jwt) {
2972
+ this.walletAddress = walletAddress;
2973
+ this.userId = userId;
2974
+ this.jwt = jwt;
2975
+ this.origin = new Origin(this.jwt);
2976
+ this.isAuthenticated = true;
2977
+ let selectedProvider = provider;
2978
+ if (!selectedProvider) {
2979
+ const providers = (_a = providerStore.value()) !== null && _a !== void 0 ? _a : [];
2980
+ for (const p of providers) {
2981
+ try {
2982
+ const accounts = yield p.provider.request({
2983
+ method: "eth_requestAccounts",
2984
+ });
2985
+ if (((_b = accounts[0]) === null || _b === void 0 ? void 0 : _b.toLowerCase()) === walletAddress.toLowerCase()) {
2986
+ selectedProvider = p;
2987
+ break;
2988
+ }
2989
+ }
2990
+ catch (err) {
2991
+ console.warn("Failed to fetch accounts from provider:", err);
2992
+ }
2993
+ }
2994
+ }
2995
+ if (selectedProvider) {
2996
+ this.setProvider({
2997
+ provider: selectedProvider.provider,
2998
+ info: selectedProvider.info || {
2999
+ name: "Unknown",
3000
+ },
3001
+ address: walletAddress,
3002
+ });
3003
+ }
3004
+ else {
3005
+ // await this.disconnect();
3006
+ console.warn("No matching provider found for the stored wallet address. User disconnected.");
3007
+ }
3008
+ }
3009
+ else {
3010
+ this.isAuthenticated = false;
3011
+ }
3012
+ });
3013
+ }, _Auth_requestAccount = function _Auth_requestAccount() {
3014
+ return __awaiter(this, void 0, void 0, function* () {
3015
+ try {
3016
+ const [account] = yield this.viem.requestAddresses();
3017
+ this.walletAddress = account;
3018
+ return account;
3019
+ }
3020
+ catch (e) {
3021
+ throw new APIError(e);
3022
+ }
3023
+ });
3024
+ }, _Auth_fetchNonce = function _Auth_fetchNonce() {
3025
+ return __awaiter(this, void 0, void 0, function* () {
3026
+ try {
3027
+ const res = yield fetch(`${constants.AUTH_HUB_BASE_API}/auth/client-user/nonce`, {
3028
+ method: "POST",
3029
+ headers: {
3030
+ "Content-Type": "application/json",
3031
+ "x-client-id": this.clientId,
3032
+ },
3033
+ body: JSON.stringify({ walletAddress: this.walletAddress }),
3034
+ });
3035
+ const data = yield res.json();
3036
+ if (res.status !== 200) {
3037
+ return Promise.reject(data.message || "Failed to fetch nonce");
3038
+ }
3039
+ return data.data;
3040
+ }
3041
+ catch (e) {
3042
+ throw new Error(e);
3043
+ }
3044
+ });
3045
+ }, _Auth_verifySignature = function _Auth_verifySignature(message, signature) {
3046
+ return __awaiter(this, void 0, void 0, function* () {
3047
+ try {
3048
+ const res = yield fetch(`${constants.AUTH_HUB_BASE_API}/auth/client-user/verify`, {
3049
+ method: "POST",
3050
+ headers: {
3051
+ "Content-Type": "application/json",
3052
+ "x-client-id": this.clientId,
3053
+ },
3054
+ body: JSON.stringify({
3055
+ message,
3056
+ signature,
3057
+ walletAddress: this.walletAddress,
3058
+ }),
3059
+ });
3060
+ const data = yield res.json();
3061
+ const payload = data.data.split(".")[1];
3062
+ const decoded = JSON.parse(atob(payload));
3063
+ return {
3064
+ success: !data.isError,
3065
+ userId: decoded.id,
3066
+ token: data.data,
3067
+ };
3068
+ }
3069
+ catch (e) {
3070
+ throw new APIError(e);
3071
+ }
3072
+ });
3073
+ }, _Auth_createMessage = function _Auth_createMessage(nonce) {
3074
+ return createSiweMessage({
3075
+ domain: window.location.host,
3076
+ address: this.walletAddress,
3077
+ statement: constants.SIWE_MESSAGE_STATEMENT,
3078
+ uri: window.location.origin,
3079
+ version: "1",
3080
+ chainId: this.viem.chain.id,
3081
+ nonce: nonce,
3082
+ });
3083
+ }, _Auth_sendAnalyticsEvent = function _Auth_sendAnalyticsEvent(event_1, message_1) {
3084
+ return __awaiter(this, arguments, void 0, function* (event, message, count = 1) {
3085
+ // if (this.#ackeeInstance)
3086
+ // await sendAnalyticsEvent(this.#ackeeInstance, event, message, count);
3087
+ // else return;
3088
+ });
3089
+ };
3090
+
3091
+ const ModalContext = createContext({
3092
+ isButtonDisabled: false,
3093
+ setIsButtonDisabled: () => { },
3094
+ isVisible: false,
3095
+ setIsVisible: () => { },
3096
+ isLinkingVisible: false,
3097
+ setIsLinkingVisible: () => { },
3098
+ currentlyLinking: null,
3099
+ setCurrentlyLinking: () => { },
3100
+ });
3101
+ const ModalProvider = ({ children }) => {
3102
+ const [isVisible, setIsVisible] = useState(false);
3103
+ const [isLinkingVisible, setIsLinkingVisible] = useState(false);
3104
+ const [currentlyLinking, setCurrentlyLinking] = useState(null);
3105
+ const [isButtonDisabled, setIsButtonDisabled] = useState(false);
3106
+ return (React.createElement(ModalContext.Provider, { value: {
3107
+ isButtonDisabled,
3108
+ setIsButtonDisabled,
3109
+ isVisible,
3110
+ setIsVisible,
3111
+ isLinkingVisible,
3112
+ setIsLinkingVisible,
3113
+ currentlyLinking,
3114
+ setCurrentlyLinking,
3115
+ } }, children));
565
3116
  };
566
- // Only run Ackee automatically when executed in a browser environment
567
- if (isBrowser === true) {
568
- detect();
569
- }
570
3117
 
571
3118
  const SocialsContext = createContext({
572
3119
  query: null,
@@ -574,12 +3121,12 @@ const SocialsContext = createContext({
574
3121
  const SocialsProvider = ({ children }) => {
575
3122
  const { authenticated } = useAuthState();
576
3123
  const { auth } = useContext(CampContext);
577
- if (!auth) {
3124
+ if (!auth && typeof window !== "undefined") {
578
3125
  throw new Error("Auth instance is not available");
579
3126
  }
580
3127
  const query = useQuery({
581
3128
  queryKey: ["socials", authenticated],
582
- queryFn: () => auth.getLinkedSocials(),
3129
+ queryFn: () => { var _a; return (_a = auth === null || auth === void 0 ? void 0 : auth.getLinkedSocials()) !== null && _a !== void 0 ? _a : Promise.resolve(null); }
583
3130
  });
584
3131
  return (React.createElement(SocialsContext.Provider, { value: {
585
3132
  query,
@@ -613,11 +3160,11 @@ function styleInject(css, ref) {
613
3160
  }
614
3161
  }
615
3162
 
616
- var css_248z$3 = ".toasts-module_toast-container__Bhoiq{bottom:10px;display:flex;flex-direction:column-reverse;gap:10px;position:fixed;right:10px;z-index:1000}.toasts-module_toast__C-fnX{word-wrap:break-word;border-radius:5px;box-shadow:0 2px 10px rgba(0,0,0,.1);color:#fff;cursor:pointer;font-size:14px;max-width:300px;opacity:.9;padding:10px 20px;position:relative}.toasts-module_toast-info__ho5FH{background-color:#007bff}.toasts-module_toast-warning__KTUFG{background-color:#cc4e02}.toasts-module_toast-error__-y03G{background-color:#dc3545}.toasts-module_toast-success__qgwDJ{background-color:#28a745}.toasts-module_toast-enter__Gduwi{animation:toasts-module_toast-in__uFYoe .3s forwards}.toasts-module_toast-exit__obsng{animation:toasts-module_toast-out__-c3s6 .3s forwards}@keyframes toasts-module_toast-in__uFYoe{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes toasts-module_toast-out__-c3s6{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(20px)}}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRvYXN0cy5tb2R1bGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNDQUVFLFdBQVksQ0FHWixZQUFhLENBQ2IsNkJBQThCLENBQzlCLFFBQVMsQ0FOVCxjQUFlLENBRWYsVUFBVyxDQUNYLFlBSUYsQ0FFQSw0QkFVRSxvQkFBcUIsQ0FSckIsaUJBQWtCLENBR2xCLG9DQUF5QyxDQUZ6QyxVQUFXLENBSVgsY0FBZSxDQUhmLGNBQWUsQ0FLZixlQUFnQixDQUhoQixVQUFZLENBTFosaUJBQWtCLENBT2xCLGlCQUdGLENBRUEsaUNBQ0Usd0JBQ0YsQ0FFQSxvQ0FDRSx3QkFDRixDQUVBLGtDQUNFLHdCQUNGLENBRUEsb0NBQ0Usd0JBQ0YsQ0FFQSxrQ0FDRSxvREFDRixDQUVBLGlDQUNFLHFEQUNGLENBRUEseUNBQ0UsR0FDRSxTQUFVLENBQ1YsMEJBQ0YsQ0FDQSxHQUNFLFNBQVUsQ0FDVix1QkFDRixDQUNGLENBRUEsMENBQ0UsR0FDRSxTQUFVLENBQ1YsdUJBQ0YsQ0FDQSxHQUNFLFNBQVUsQ0FDViwwQkFDRixDQUNGIiwiZmlsZSI6InRvYXN0cy5tb2R1bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnRvYXN0LWNvbnRhaW5lciB7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIGJvdHRvbTogMTBweDtcclxuICByaWdodDogMTBweDtcclxuICB6LWluZGV4OiAxMDAwO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlO1xyXG4gIGdhcDogMTBweDtcclxufVxyXG5cclxuLnRvYXN0IHtcclxuICBwYWRkaW5nOiAxMHB4IDIwcHg7XHJcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG4gIGNvbG9yOiAjZmZmO1xyXG4gIGZvbnQtc2l6ZTogMTRweDtcclxuICBib3gtc2hhZG93OiAwIDJweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcclxuICBvcGFjaXR5OiAwLjk7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBtYXgtd2lkdGg6IDMwMHB4O1xyXG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcclxufVxyXG5cclxuLnRvYXN0LWluZm8ge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7XHJcbn1cclxuXHJcbi50b2FzdC13YXJuaW5nIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2M0ZTAyO1xyXG59XHJcblxyXG4udG9hc3QtZXJyb3Ige1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNkYzM1NDU7XHJcbn1cclxuXHJcbi50b2FzdC1zdWNjZXNzIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1O1xyXG59XHJcblxyXG4udG9hc3QtZW50ZXIge1xyXG4gIGFuaW1hdGlvbjogdG9hc3QtaW4gMC4zcyBmb3J3YXJkcztcclxufVxyXG5cclxuLnRvYXN0LWV4aXQge1xyXG4gIGFuaW1hdGlvbjogdG9hc3Qtb3V0IDAuM3MgZm9yd2FyZHM7XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgdG9hc3QtaW4ge1xyXG4gIGZyb20ge1xyXG4gICAgb3BhY2l0eTogMDtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMHB4KTtcclxuICB9XHJcbiAgdG8ge1xyXG4gICAgb3BhY2l0eTogMTtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcclxuICB9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgdG9hc3Qtb3V0IHtcclxuICBmcm9tIHtcclxuICAgIG9wYWNpdHk6IDE7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XHJcbiAgfVxyXG4gIHRvIHtcclxuICAgIG9wYWNpdHk6IDA7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCk7XHJcbiAgfVxyXG59XHJcbiJdfQ== */";
3163
+ var css_248z$3 = ".toasts-module_toast-container__Bhoiq{bottom:10px;display:flex;flex-direction:column-reverse;gap:10px;position:fixed;right:10px;z-index:1000}.toasts-module_toast__C-fnX{word-wrap:break-word;border-radius:5px;box-shadow:0 2px 10px rgba(0,0,0,.1);color:#fff;cursor:pointer;font-family:Satoshi,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;font-size:14px;max-width:300px;opacity:.9;padding:10px 20px;position:relative}.toasts-module_toast-info__ho5FH{background-color:#007bff}.toasts-module_toast-warning__KTUFG{background-color:#cc4e02}.toasts-module_toast-error__-y03G{background-color:#dc3545}.toasts-module_toast-success__qgwDJ{background-color:#28a745}.toasts-module_toast-enter__Gduwi{animation:toasts-module_toast-in__uFYoe .3s forwards}.toasts-module_toast-exit__obsng{animation:toasts-module_toast-out__-c3s6 .3s forwards}@keyframes toasts-module_toast-in__uFYoe{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes toasts-module_toast-out__-c3s6{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(20px)}}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRvYXN0cy5tb2R1bGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNDQUVFLFdBQVksQ0FHWixZQUFhLENBQ2IsNkJBQThCLENBQzlCLFFBQVMsQ0FOVCxjQUFlLENBRWYsVUFBVyxDQUNYLFlBSUYsQ0FFQSw0QkFVRSxvQkFBcUIsQ0FSckIsaUJBQWtCLENBR2xCLG9DQUF5QyxDQUZ6QyxVQUFXLENBSVgsY0FBZSxDQUlmLDBJQUVZLENBVFosY0FBZSxDQUtmLGVBQWdCLENBSGhCLFVBQVksQ0FMWixpQkFBa0IsQ0FPbEIsaUJBTUYsQ0FFQSxpQ0FDRSx3QkFDRixDQUVBLG9DQUNFLHdCQUNGLENBRUEsa0NBQ0Usd0JBQ0YsQ0FFQSxvQ0FDRSx3QkFDRixDQUVBLGtDQUNFLG9EQUNGLENBRUEsaUNBQ0UscURBQ0YsQ0FFQSx5Q0FDRSxHQUNFLFNBQVUsQ0FDViwwQkFDRixDQUNBLEdBQ0UsU0FBVSxDQUNWLHVCQUNGLENBQ0YsQ0FFQSwwQ0FDRSxHQUNFLFNBQVUsQ0FDVix1QkFDRixDQUNBLEdBQ0UsU0FBVSxDQUNWLDBCQUNGLENBQ0YiLCJmaWxlIjoidG9hc3RzLm1vZHVsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIudG9hc3QtY29udGFpbmVyIHtcclxuICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgYm90dG9tOiAxMHB4O1xyXG4gIHJpZ2h0OiAxMHB4O1xyXG4gIHotaW5kZXg6IDEwMDA7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7XHJcbiAgZ2FwOiAxMHB4O1xyXG59XHJcblxyXG4udG9hc3Qge1xyXG4gIHBhZGRpbmc6IDEwcHggMjBweDtcclxuICBib3JkZXItcmFkaXVzOiA1cHg7XHJcbiAgY29sb3I6ICNmZmY7XHJcbiAgZm9udC1zaXplOiAxNHB4O1xyXG4gIGJveC1zaGFkb3c6IDAgMnB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xyXG4gIG9wYWNpdHk6IDAuOTtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIG1heC13aWR0aDogMzAwcHg7XHJcbiAgd29yZC13cmFwOiBicmVhay13b3JkO1xyXG4gIGZvbnQtZmFtaWx5OiBcIlNhdG9zaGlcIiwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsXHJcbiAgICBcIlNlZ29lIFVJXCIsIFJvYm90bywgT3h5Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwgXCJPcGVuIFNhbnNcIiwgXCJIZWx2ZXRpY2EgTmV1ZVwiLFxyXG4gICAgc2Fucy1zZXJpZjtcclxufVxyXG5cclxuLnRvYXN0LWluZm8ge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7XHJcbn1cclxuXHJcbi50b2FzdC13YXJuaW5nIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2M0ZTAyO1xyXG59XHJcblxyXG4udG9hc3QtZXJyb3Ige1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNkYzM1NDU7XHJcbn1cclxuXHJcbi50b2FzdC1zdWNjZXNzIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1O1xyXG59XHJcblxyXG4udG9hc3QtZW50ZXIge1xyXG4gIGFuaW1hdGlvbjogdG9hc3QtaW4gMC4zcyBmb3J3YXJkcztcclxufVxyXG5cclxuLnRvYXN0LWV4aXQge1xyXG4gIGFuaW1hdGlvbjogdG9hc3Qtb3V0IDAuM3MgZm9yd2FyZHM7XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgdG9hc3QtaW4ge1xyXG4gIGZyb20ge1xyXG4gICAgb3BhY2l0eTogMDtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMHB4KTtcclxuICB9XHJcbiAgdG8ge1xyXG4gICAgb3BhY2l0eTogMTtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcclxuICB9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgdG9hc3Qtb3V0IHtcclxuICBmcm9tIHtcclxuICAgIG9wYWNpdHk6IDE7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XHJcbiAgfVxyXG4gIHRvIHtcclxuICAgIG9wYWNpdHk6IDA7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCk7XHJcbiAgfVxyXG59XHJcbiJdfQ== */";
617
3164
  var styles$2 = {"toast-container":"toasts-module_toast-container__Bhoiq","toast":"toasts-module_toast__C-fnX","toast-info":"toasts-module_toast-info__ho5FH","toast-warning":"toasts-module_toast-warning__KTUFG","toast-error":"toasts-module_toast-error__-y03G","toast-success":"toasts-module_toast-success__qgwDJ","toast-enter":"toasts-module_toast-enter__Gduwi","toast-in":"toasts-module_toast-in__uFYoe","toast-exit":"toasts-module_toast-exit__obsng","toast-out":"toasts-module_toast-out__-c3s6"};
618
3165
  styleInject(css_248z$3);
619
3166
 
620
- var css_248z$2 = ".tooltip-module_tooltip-container__X8blY{display:inline-block;min-height:-moz-fit-content;min-height:fit-content;position:relative}.tooltip-module_tooltip__IN7yd{border-radius:.25rem;font-size:.875rem;font-weight:500;min-height:-moz-fit-content;min-height:fit-content;opacity:0;padding:.5rem;position:absolute;transition:opacity .2s ease,visibility .2s ease;visibility:hidden;white-space:nowrap;z-index:100}@keyframes tooltip-module_fadeIn__KR3aX{0%{opacity:0;visibility:hidden}to{opacity:1;visibility:visible}}@keyframes tooltip-module_fadeOut__JJntn{0%{opacity:1;visibility:visible}to{opacity:0;visibility:hidden}}.tooltip-module_tooltip__IN7yd.tooltip-module_show__0eq9c{animation:tooltip-module_fadeIn__KR3aX .2s ease-in-out forwards}.tooltip-module_tooltip__IN7yd.tooltip-module_top__5rD4C{bottom:100%;left:50%;margin-bottom:.5rem;transform:translateX(-50%)}.tooltip-module_tooltip__IN7yd.tooltip-module_bottom__Bk3EH{left:50%;margin-top:.5rem;top:100%;transform:translateX(-50%)}.tooltip-module_tooltip__IN7yd.tooltip-module_left__PRFtS{margin-right:.5rem;right:100%;top:50%;transform:translateY(-50%)}.tooltip-module_tooltip__IN7yd.tooltip-module_right__nQugl{left:100%;margin-left:.5rem;top:50%;transform:translateY(-50%)}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRvb2x0aXAubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5Q0FFRSxvQkFBcUIsQ0FDckIsMkJBQXVCLENBQXZCLHNCQUF1QixDQUZ2QixpQkFHRixDQUVBLCtCQUdFLG9CQUFzQixDQUN0QixpQkFBbUIsQ0FDbkIsZUFBZ0IsQ0FNaEIsMkJBQXVCLENBQXZCLHNCQUF1QixDQUh2QixTQUFVLENBTlYsYUFBZSxDQURmLGlCQUFrQixDQVNsQiwrQ0FBbUQsQ0FEbkQsaUJBQWtCLENBSGxCLGtCQUFtQixDQUNuQixXQUtGLENBRUEsd0NBQ0UsR0FDRSxTQUFVLENBQ1YsaUJBQ0YsQ0FDQSxHQUNFLFNBQVUsQ0FDVixrQkFDRixDQUNGLENBRUEseUNBQ0UsR0FDRSxTQUFVLENBQ1Ysa0JBQ0YsQ0FDQSxHQUNFLFNBQVUsQ0FDVixpQkFDRixDQUNGLENBQ0EsMERBQ0UsK0RBQ0YsQ0FFQSx5REFDRSxXQUFZLENBQ1osUUFBUyxDQUVULG1CQUFxQixDQURyQiwwQkFFRixDQUVBLDREQUVFLFFBQVMsQ0FFVCxnQkFBa0IsQ0FIbEIsUUFBUyxDQUVULDBCQUVGLENBRUEsMERBSUUsa0JBQW9CLENBSHBCLFVBQVcsQ0FDWCxPQUFRLENBQ1IsMEJBRUYsQ0FFQSwyREFDRSxTQUFVLENBR1YsaUJBQW1CLENBRm5CLE9BQVEsQ0FDUiwwQkFFRiIsImZpbGUiOiJ0b29sdGlwLm1vZHVsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIudG9vbHRpcC1jb250YWluZXIge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgbWluLWhlaWdodDogZml0LWNvbnRlbnQ7XHJcbn1cclxuXHJcbi50b29sdGlwIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgcGFkZGluZzogMC41cmVtO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XHJcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcclxuICBmb250LXdlaWdodDogNTAwO1xyXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgei1pbmRleDogMTAwO1xyXG4gIG9wYWNpdHk6IDA7XHJcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xyXG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlLCB2aXNpYmlsaXR5IDAuMnMgZWFzZTtcclxuICBtaW4taGVpZ2h0OiBmaXQtY29udGVudDtcclxufVxyXG5cclxuQGtleWZyYW1lcyBmYWRlSW4ge1xyXG4gIDAlIHtcclxuICAgIG9wYWNpdHk6IDA7XHJcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XHJcbiAgfVxyXG4gIDEwMCUge1xyXG4gICAgb3BhY2l0eTogMTtcclxuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGZhZGVPdXQge1xyXG4gIDAlIHtcclxuICAgIG9wYWNpdHk6IDE7XHJcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xyXG4gIH1cclxuICAxMDAlIHtcclxuICAgIG9wYWNpdHk6IDA7XHJcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XHJcbiAgfVxyXG59XHJcbi50b29sdGlwLnNob3cge1xyXG4gIGFuaW1hdGlvbjogZmFkZUluIDAuMnMgZWFzZS1pbi1vdXQgZm9yd2FyZHM7XHJcbn1cclxuXHJcbi50b29sdGlwLnRvcCB7XHJcbiAgYm90dG9tOiAxMDAlO1xyXG4gIGxlZnQ6IDUwJTtcclxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XHJcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xyXG59XHJcblxyXG4udG9vbHRpcC5ib3R0b20ge1xyXG4gIHRvcDogMTAwJTtcclxuICBsZWZ0OiA1MCU7XHJcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xyXG4gIG1hcmdpbi10b3A6IDAuNXJlbTtcclxufVxyXG5cclxuLnRvb2x0aXAubGVmdCB7XHJcbiAgcmlnaHQ6IDEwMCU7XHJcbiAgdG9wOiA1MCU7XHJcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xyXG4gIG1hcmdpbi1yaWdodDogMC41cmVtO1xyXG59XHJcblxyXG4udG9vbHRpcC5yaWdodCB7XHJcbiAgbGVmdDogMTAwJTtcclxuICB0b3A6IDUwJTtcclxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XHJcbiAgbWFyZ2luLWxlZnQ6IDAuNXJlbTtcclxufVxyXG4iXX0= */";
3167
+ var css_248z$2 = ".tooltip-module_tooltip-container__X8blY{display:inline-block;min-height:-moz-fit-content;min-height:fit-content;position:relative}.tooltip-module_tooltip__IN7yd{border-radius:.25rem;font-family:Satoshi,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;font-size:.875rem;font-weight:500;min-height:-moz-fit-content;min-height:fit-content;opacity:0;padding:.5rem;position:absolute;transition:opacity .2s ease,visibility .2s ease;visibility:hidden;white-space:nowrap;z-index:100}@keyframes tooltip-module_fadeIn__KR3aX{0%{opacity:0;visibility:hidden}to{opacity:1;visibility:visible}}@keyframes tooltip-module_fadeOut__JJntn{0%{opacity:1;visibility:visible}to{opacity:0;visibility:hidden}}.tooltip-module_tooltip__IN7yd.tooltip-module_show__0eq9c{animation:tooltip-module_fadeIn__KR3aX .2s ease-in-out forwards}.tooltip-module_tooltip__IN7yd.tooltip-module_top__5rD4C{bottom:100%;left:50%;margin-bottom:.5rem;transform:translateX(-50%)}.tooltip-module_tooltip__IN7yd.tooltip-module_bottom__Bk3EH{left:50%;margin-top:.5rem;top:100%;transform:translateX(-50%)}.tooltip-module_tooltip__IN7yd.tooltip-module_left__PRFtS{margin-right:.5rem;right:100%;top:50%;transform:translateY(-50%)}.tooltip-module_tooltip__IN7yd.tooltip-module_right__nQugl{left:100%;margin-left:.5rem;top:50%;transform:translateY(-50%)}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRvb2x0aXAubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5Q0FFRSxvQkFBcUIsQ0FDckIsMkJBQXVCLENBQXZCLHNCQUF1QixDQUZ2QixpQkFJRixDQUVBLCtCQUdFLG9CQUFzQixDQVN0QiwwSUFFWSxDQVZaLGlCQUFtQixDQUNuQixlQUFnQixDQU1oQiwyQkFBdUIsQ0FBdkIsc0JBQXVCLENBSHZCLFNBQVUsQ0FOVixhQUFlLENBRGYsaUJBQWtCLENBU2xCLCtDQUFtRCxDQURuRCxpQkFBa0IsQ0FIbEIsa0JBQW1CLENBQ25CLFdBUUYsQ0FFQSx3Q0FDRSxHQUNFLFNBQVUsQ0FDVixpQkFDRixDQUNBLEdBQ0UsU0FBVSxDQUNWLGtCQUNGLENBQ0YsQ0FFQSx5Q0FDRSxHQUNFLFNBQVUsQ0FDVixrQkFDRixDQUNBLEdBQ0UsU0FBVSxDQUNWLGlCQUNGLENBQ0YsQ0FDQSwwREFDRSwrREFDRixDQUVBLHlEQUNFLFdBQVksQ0FDWixRQUFTLENBRVQsbUJBQXFCLENBRHJCLDBCQUVGLENBRUEsNERBRUUsUUFBUyxDQUVULGdCQUFrQixDQUhsQixRQUFTLENBRVQsMEJBRUYsQ0FFQSwwREFJRSxrQkFBb0IsQ0FIcEIsVUFBVyxDQUNYLE9BQVEsQ0FDUiwwQkFFRixDQUVBLDJEQUNFLFNBQVUsQ0FHVixpQkFBbUIsQ0FGbkIsT0FBUSxDQUNSLDBCQUVGIiwiZmlsZSI6InRvb2x0aXAubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi50b29sdGlwLWNvbnRhaW5lciB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICBtaW4taGVpZ2h0OiBmaXQtY29udGVudDtcclxuICBcclxufVxyXG5cclxuLnRvb2x0aXAge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICBwYWRkaW5nOiAwLjVyZW07XHJcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcclxuICBmb250LXNpemU6IDAuODc1cmVtO1xyXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICB6LWluZGV4OiAxMDA7XHJcbiAgb3BhY2l0eTogMDtcclxuICB2aXNpYmlsaXR5OiBoaWRkZW47XHJcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2UsIHZpc2liaWxpdHkgMC4ycyBlYXNlO1xyXG4gIG1pbi1oZWlnaHQ6IGZpdC1jb250ZW50O1xyXG4gIGZvbnQtZmFtaWx5OiBcIlNhdG9zaGlcIiwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsXHJcbiAgICBcIlNlZ29lIFVJXCIsIFJvYm90bywgT3h5Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwgXCJPcGVuIFNhbnNcIiwgXCJIZWx2ZXRpY2EgTmV1ZVwiLFxyXG4gICAgc2Fucy1zZXJpZjtcclxufVxyXG5cclxuQGtleWZyYW1lcyBmYWRlSW4ge1xyXG4gIDAlIHtcclxuICAgIG9wYWNpdHk6IDA7XHJcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XHJcbiAgfVxyXG4gIDEwMCUge1xyXG4gICAgb3BhY2l0eTogMTtcclxuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGZhZGVPdXQge1xyXG4gIDAlIHtcclxuICAgIG9wYWNpdHk6IDE7XHJcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xyXG4gIH1cclxuICAxMDAlIHtcclxuICAgIG9wYWNpdHk6IDA7XHJcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XHJcbiAgfVxyXG59XHJcbi50b29sdGlwLnNob3cge1xyXG4gIGFuaW1hdGlvbjogZmFkZUluIDAuMnMgZWFzZS1pbi1vdXQgZm9yd2FyZHM7XHJcbn1cclxuXHJcbi50b29sdGlwLnRvcCB7XHJcbiAgYm90dG9tOiAxMDAlO1xyXG4gIGxlZnQ6IDUwJTtcclxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XHJcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xyXG59XHJcblxyXG4udG9vbHRpcC5ib3R0b20ge1xyXG4gIHRvcDogMTAwJTtcclxuICBsZWZ0OiA1MCU7XHJcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xyXG4gIG1hcmdpbi10b3A6IDAuNXJlbTtcclxufVxyXG5cclxuLnRvb2x0aXAubGVmdCB7XHJcbiAgcmlnaHQ6IDEwMCU7XHJcbiAgdG9wOiA1MCU7XHJcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xyXG4gIG1hcmdpbi1yaWdodDogMC41cmVtO1xyXG59XHJcblxyXG4udG9vbHRpcC5yaWdodCB7XHJcbiAgbGVmdDogMTAwJTtcclxuICB0b3A6IDUwJTtcclxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XHJcbiAgbWFyZ2luLWxlZnQ6IDAuNXJlbTtcclxufVxyXG4iXX0= */";
621
3168
  var styles$1 = {"tooltip-container":"tooltip-module_tooltip-container__X8blY","tooltip":"tooltip-module_tooltip__IN7yd","show":"tooltip-module_show__0eq9c","fadeIn":"tooltip-module_fadeIn__KR3aX","top":"tooltip-module_top__5rD4C","bottom":"tooltip-module_bottom__Bk3EH","left":"tooltip-module_left__PRFtS","right":"tooltip-module_right__nQugl","fadeOut":"tooltip-module_fadeOut__JJntn"};
622
3169
  styleInject(css_248z$2);
623
3170
 
@@ -643,6 +3190,7 @@ const Tooltip = ({ content, position = "top", backgroundColor = "#333", textColo
643
3190
  children,
644
3191
  isVisible &&
645
3192
  tooltipPosition &&
3193
+ typeof document !== "undefined" &&
646
3194
  ReactDOM.createPortal(React.createElement("div", { className: `${styles$1.tooltip} ${styles$1[position]} ${styles$1["show"]}`, style: tooltipStyles }, content), document.body)));
647
3195
  };
648
3196
  /**
@@ -655,6 +3203,8 @@ const Tooltip = ({ content, position = "top", backgroundColor = "#333", textColo
655
3203
  const getTooltipPosition = (rect, position) => {
656
3204
  if (!rect)
657
3205
  return {};
3206
+ if (typeof window === "undefined")
3207
+ return {};
658
3208
  const spacing = 8; // Space between the tooltip and the target element
659
3209
  const viewportWidth = window.innerWidth;
660
3210
  const viewportHeight = window.innerHeight;
@@ -700,7 +3250,7 @@ const getTooltipPosition = (rect, position) => {
700
3250
  return { top, left, transform };
701
3251
  };
702
3252
 
703
- var css_248z$1 = "@import url(\"https://api.fontshare.com/v2/css?f[]=satoshi@1&display=swap\");.auth-module_modal__yyg5L{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background-color:#000;background-color:rgba(0,0,0,.4);height:100%;left:0;overflow:auto;position:fixed;top:0;transition:all .3s;width:100%;z-index:85}.auth-module_modal__yyg5L .auth-module_outer-container__RraOQ{align-items:center;box-sizing:border-box;display:flex;flex-direction:row;font-family:Satoshi,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;justify-content:center;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);@media screen and (max-width:440px){border-bottom-left-radius:0;border-bottom-right-radius:0;bottom:0;top:auto;transform:translate(-50%);width:100%}}.auth-module_outer-container__RraOQ .auth-module_container__7utns{align-items:center;background-color:#fefefe;border:1px solid #888;border-radius:1.5rem;box-sizing:border-box;flex-direction:column;justify-content:center;padding:1.5rem 1.5rem 1rem;position:relative;text-align:center;width:400px;@media screen and (max-width:440px){border-radius:0;height:auto;max-height:100vh;overflow-y:auto;padding-bottom:1rem;padding-bottom:.5rem;padding-left:1rem;padding-right:1rem;padding-top:1rem;width:100%}}.auth-module_container__7utns.auth-module_linking-container__mYNwD{max-width:300px}.auth-module_origin-tab__miOUK{align-items:center;display:flex;flex-direction:column;gap:.5rem;height:100%;justify-content:space-between;width:100%}.auth-module_origin-section__UBhBB{align-items:center;display:flex;flex-direction:row;gap:.5rem;justify-content:space-evenly;width:100%}.auth-module_origin-section__UBhBB .auth-module_origin-container__ZIk4c{align-items:center;color:#333;display:flex;flex-direction:column;font-size:.875rem;font-weight:400;justify-content:center;margin-bottom:.5rem;margin-top:.5rem;min-height:3rem;min-width:1rem;text-align:center;width:100%}.auth-module_origin-wrapper__JQfEI{align-items:center;display:flex;flex-direction:column;gap:.5rem;justify-content:center;width:100%}.auth-module_origin-container__ZIk4c .auth-module_origin-label__l-1q9{color:#777;font-size:.75rem;font-weight:400;margin-bottom:.25rem;text-align:center}.auth-module_horizontal-divider__YfWCy{background-color:#ddd;height:1px;margin-bottom:.5rem;margin-top:.5rem;width:100%}.auth-module_origin-section__UBhBB .auth-module_divider__z65Me{background-color:#ddd;height:1rem;width:1px}.auth-module_origin-dashboard-button__-pch4{align-items:center;border:none;color:#ff6f00;display:flex;flex-direction:row;font-size:.875rem;gap:.5rem;justify-content:center;padding:.25rem;width:100%}.auth-module_origin-dashboard-button__-pch4:hover{color:#cc4e02;cursor:pointer}.auth-module_origin-dashboard-button__-pch4:disabled{background-color:#ccc;cursor:not-allowed}.auth-module_container__7utns h2{font-size:1.25rem;margin-bottom:1rem;margin-top:0}.auth-module_container__7utns .auth-module_header__pX9nM{align-items:center;color:#333;display:flex;flex-direction:row;font-weight:700;gap:.5rem;justify-content:flex-start;margin-bottom:1rem;text-align:left;width:100%;@media screen and (max-width:440px){margin-bottom:.5rem;margin-top:0}}.auth-module_linking-container__mYNwD .auth-module_header__pX9nM{justify-content:center}.auth-module_container__7utns .auth-module_auth-header__LsM1f{align-items:center;color:#333;display:flex;flex-direction:column;font-weight:700;justify-content:center;margin-bottom:1rem;text-align:center;width:100%}.auth-module_container__7utns .auth-module_header__pX9nM .auth-module_small-modal-icon__YayD1{height:2rem;margin-bottom:.5rem;margin-top:.5rem;width:2rem}.auth-module_container__7utns .auth-module_header__pX9nM .auth-module_wallet-address__AVVA5{color:#777;font-size:.75rem;font-weight:400;margin-top:.2rem}.auth-module_container__7utns .auth-module_close-button__uZrho{background-color:#fff;border:2px solid #ddd;border-radius:100%;color:#aaa;font-size:1.5rem;height:1.25rem;position:absolute;right:1rem;top:1rem;transition:color .15s;width:1.25rem}.auth-module_close-button__uZrho>.auth-module_close-icon__SSCni{display:block;height:1rem;padding:.15rem;position:relative;width:1rem}.auth-module_container__7utns .auth-module_close-button__uZrho:hover{background-color:#ddd;color:#888;cursor:pointer}.auth-module_container__7utns .auth-module_linking-text__uz3ud{color:#777;font-size:1rem;text-align:center}.auth-module_provider-list__6vISy{box-sizing:border-box;display:flex;flex-direction:column;gap:.5rem;margin-bottom:.75rem;max-height:17.9rem;overflow-y:auto;padding-left:.5rem;padding-right:.5rem;scrollbar-color:#ccc #f1f1f1;scrollbar-width:thin;width:100%}.auth-module_provider-list__6vISy.auth-module_big__jQxvN{max-height:16rem}.auth-module_provider-list__6vISy::-webkit-scrollbar{border-radius:.25rem;width:.5rem}.auth-module_provider-list__6vISy::-webkit-scrollbar-thumb{background-color:#ccc;border-radius:.25rem}.auth-module_provider-list__6vISy::-webkit-scrollbar-track{background-color:#f1f1f1;border-radius:.25rem}.auth-module_spinner__hfzlH:after{animation:auth-module_spin__tm9l6 1s linear infinite;border:.25rem solid #f3f3f3;border-radius:50%;border-top-color:#ff6f00;content:\"\";display:block;height:1rem;width:1rem}.auth-module_spinner__hfzlH{align-self:center;display:flex;justify-content:center;margin-left:auto;margin-right:.25rem}@keyframes auth-module_spin__tm9l6{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.auth-module_modal-icon__CV7ah{align-items:center;display:flex;height:4rem;justify-content:center;margin-bottom:.25rem;margin-top:.5rem;padding:.35rem;width:4rem}.auth-module_modal-icon__CV7ah svg{height:3.6rem;width:3.6rem}.auth-module_container__7utns a.auth-module_footer-text__CQnh6{color:#bbb;font-size:.75rem;text-decoration:none}.auth-module_container__7utns a.auth-module_footer-text__CQnh6:hover{text-decoration:underline}.auth-module_disconnect-button__bsu-3{background-color:#ff6f00;border:none;border-radius:.75rem;box-shadow:inset 0 2px 0 hsla(0,0%,100%,.15),inset 0 -2px 4px rgba(0,0,0,.05),0 1px 1px rgba(46,54,80,.075);color:#fff;font-size:1rem;height:2.5rem;margin-bottom:.75rem;margin-top:1rem;padding:1rem;padding-block:0;width:100%}.auth-module_disconnect-button__bsu-3:hover{background-color:#cc4e02;cursor:pointer}.auth-module_disconnect-button__bsu-3:disabled{background-color:#ccc;cursor:not-allowed}.auth-module_linking-button__g1GlL{background-color:#ff6f00;border:none;border-radius:.75rem;box-shadow:inset 0 2px 0 hsla(0,0%,100%,.15),inset 0 -2px 4px rgba(0,0,0,.05),0 1px 1px rgba(46,54,80,.075);color:#fff;font-size:1rem;height:2.5rem;margin-bottom:.75rem;margin-top:1rem;padding:1rem;padding-block:0;width:100%}.auth-module_linking-button__g1GlL:hover{background-color:#cc4e02;cursor:pointer}.auth-module_linking-button__g1GlL:disabled{background-color:#ccc;cursor:not-allowed}.auth-module_socials-wrapper__PshV3{display:flex;flex-direction:column;gap:1rem;margin-block:.5rem;width:100%}.auth-module_socials-container__iDzfJ{display:flex;flex-direction:column;gap:.5rem;width:100%}.auth-module_socials-container__iDzfJ .auth-module_connector-container__4wn11{align-items:center;display:flex;gap:.25rem;justify-content:flex-start;position:relative}.auth-module_socials-container__iDzfJ .auth-module_connector-button__j79HA{align-items:center;background-color:#fefefe;border:1px solid #ddd;border-radius:.75rem;color:#333;display:flex;font-size:.875rem;gap:.25rem;height:2.5rem;padding:.75rem;position:relative;width:100%}.auth-module_socials-container__iDzfJ .auth-module_connector-button__j79HA:hover{background-color:#ddd;cursor:pointer}.auth-module_socials-container__iDzfJ .auth-module_connector-button__j79HA:disabled{background-color:#fefefe;cursor:default}.auth-module_socials-container__iDzfJ .auth-module_connector-button__j79HA svg{color:#333;height:1.5rem;margin-right:.5rem;width:1.5rem}.auth-module_socials-container__iDzfJ .auth-module_connector-connected__JvDQb{align-items:center;background-color:#eee;border:1px solid #ddd;border-radius:.25rem;color:#333;display:flex;flex:1;font-size:.875rem;gap:.25rem;padding:.5rem .75rem;position:relative;width:100%}.auth-module_socials-container__iDzfJ .auth-module_connector-connected__JvDQb svg{color:#333;height:1.5rem;margin-right:.5rem;width:1.5rem}.auth-module_socials-container__iDzfJ h3{color:#333;margin:0}.auth-module_connector-button__j79HA .auth-module_connector-checkmark__ZS6zU{height:1rem!important;position:absolute;right:-.5rem;top:-.5rem;width:1rem!important}.auth-module_unlink-connector-button__6Fwkp{align-items:center;background-color:#999;border:none;border-radius:.5rem;box-shadow:inset 0 2px 0 hsla(0,0%,100%,.15),inset 0 -2px 4px rgba(0,0,0,.05),0 1px 1px rgba(46,54,80,.075);color:#fff;display:flex;font-size:.75rem;gap:.25rem;padding:.25rem .675rem .25rem .5rem;position:absolute;right:.375rem;text-align:center;transition:background-color .15s}.auth-module_unlink-connector-button__6Fwkp svg{stroke:#fff!important;height:.875rem!important;margin-right:0!important;width:.875rem!important}.auth-module_unlink-connector-button__6Fwkp:hover{background-color:#888;cursor:pointer}.auth-module_unlink-connector-button__6Fwkp:disabled{background-color:#ccc;cursor:not-allowed}@keyframes auth-module_loader__gH3ZC{0%{transform:translateX(0)}50%{transform:translateX(100%)}to{transform:translateX(0)}}.auth-module_loader__gH3ZC{background-color:#ddd;border-radius:.125rem;height:.4rem;margin-bottom:.5rem;margin-top:.5rem;position:relative;width:4rem}.auth-module_loader__gH3ZC:before{animation:auth-module_loader__gH3ZC 1.5s ease-in-out infinite;background-color:#ff6f00;border-radius:.125rem;content:\"\";display:block;height:.4rem;left:0;position:absolute;width:2rem}.auth-module_no-socials__wEx0t{color:#777;font-size:.875rem;margin-top:.5rem;text-align:center}.auth-module_divider__z65Me{align-items:center;display:flex;gap:.5rem;margin-bottom:.5rem;margin-top:.5rem}.auth-module_divider__z65Me:after,.auth-module_divider__z65Me:before{border-bottom:1px solid #ddd;content:\"\";flex:1}input.auth-module_tiktok-input__FeqdG{border:1px solid gray;border-radius:.75rem;color:#000;font-family:Satoshi,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;font-size:1rem;font-weight:600;height:2.75rem;line-height:1.333rem;margin-top:1rem;padding-inline:1rem;width:100%}input.auth-module_tiktok-input__FeqdG.auth-module_invalid__qqgK6{border-color:#dc3545;outline-color:#dc3545}.auth-module_otp-input-container__B2NH6{display:flex;gap:.5rem;justify-content:center;margin-top:1rem}.auth-module_otp-input__vjImt{border:1px solid #ccc;border-radius:.5rem;font-size:1.5rem;height:2.5rem;outline:none;text-align:center;transition:border-color .2s;width:2rem}.auth-module_otp-input__vjImt:focus{border-color:#ff6f00}.auth-module_tabs__RcUmV{display:flex;justify-content:flex-start;margin-bottom:calc(-.5rem - 1px);max-width:100%;overflow-x:auto}.auth-module_tabs__RcUmV::-webkit-scrollbar{display:none}.auth-module_tabs__RcUmV::-webkit-scrollbar-thumb{background-color:#ccc;border-radius:.25rem}.auth-module_tab-button__HT6wc{background-color:#fefefe;border-right:2px solid #ddd;cursor:pointer;font-size:.875rem;padding:.5rem 1rem;text-align:left;transition:background-color .2s}.auth-module_tab-button__HT6wc:hover{background-color:#eee}.auth-module_active-tab__l6P44{border-right-color:#ff6f00}.auth-module_tab-content__noHF0{height:20rem;margin-top:.25rem;min-height:20rem;width:100%}.auth-module_vertical-tabs-container__6sAOL{box-sizing:border-box;display:flex;flex-direction:row;gap:.5rem;width:100%}.auth-module_vertical-tabs__-ba-W{display:flex;flex-direction:column;gap:.25rem;height:100%;margin-left:-1rem;min-width:-moz-fit-content!important;min-width:fit-content!important;overflow-y:auto}.auth-module_vertical-tab-content__wTqKF{background-color:#f9f9f9;border:1px solid #ddd;border-radius:.25rem;flex:1 1 0%;height:22rem;max-width:100%;min-height:22rem;overflow:hidden;padding:1rem}.auth-module_ip-tab-container__ck0F8{justify-content:space-between}.auth-module_ip-tab-container__ck0F8,.auth-module_ip-tab-content__VI4zC{align-items:center;display:flex;flex-direction:column;gap:1rem;height:100%;width:100%}.auth-module_ip-tab-content__VI4zC{justify-content:center}.auth-module_ip-tab-content-text__y2BRh{color:#777;font-size:.875rem;margin-top:.5rem;text-align:center}.auth-module_contract-button-container__7HH9n{align-items:center;display:flex;flex-direction:column;gap:1rem;margin-top:1rem}.auth-module_contract-input__4BYcs{border:1px solid #ccc;border-radius:.5rem;font-size:1rem;max-width:300px;outline:none;padding:.5rem;transition:border-color .2s;width:100%}.auth-module_contract-input__4BYcs:focus{border-color:#ff6f00}.auth-module_contract-button__Cq6zI{background-color:#ff6f00;border:none;border-radius:.5rem;color:#fff;cursor:pointer;font-size:1rem;padding:.75rem 1.5rem;transition:background-color .2s}.auth-module_contract-button__Cq6zI:hover{background-color:#cc4e02}.auth-module_contract-button__Cq6zI:disabled{background-color:#ccc;cursor:not-allowed}\n/*# sourceMappingURL=data:application/json;base64,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Q0FRRSx3QkFBeUIsQ0FIekIscUJBQXNCLENBQ3RCLG9CQUFzQixDQUx0QixXQUFZLENBR1osWUFBYSxDQUtiLGNBQWUsQ0FOZixnQkFBaUIsQ0FEakIsZUFBZ0IsQ0FLaEIsWUFHRixDQUVBLHFDQUtFLDZCQUdGLENBRUEsd0VBSkUsa0JBQW1CLENBTG5CLFlBQWEsQ0FDYixxQkFBc0IsQ0FDdEIsUUFBUyxDQUlULFdBQVksQ0FIWixVQWNGLENBUkEsbUNBS0Usc0JBR0YsQ0FFQSx3Q0FDRSxVQUFXLENBQ1gsaUJBQW1CLENBRW5CLGdCQUFrQixDQURsQixpQkFFRixDQUVBLDhDQUdFLGtCQUFtQixDQUZuQixZQUFhLENBQ2IscUJBQXNCLENBRXRCLFFBQVMsQ0FDVCxlQUNGLENBRUEsbUNBS0UscUJBQXNCLENBQ3RCLG1CQUFxQixDQUZyQixjQUFlLENBRmYsZUFBZ0IsQ0FLaEIsWUFBYSxDQUpiLGFBQWUsQ0FLZiwyQkFBNkIsQ0FQN0IsVUFRRixDQUVBLHlDQUNFLG9CQUNGLENBRUEsb0NBQ0Usd0JBQXlCLENBRXpCLFdBQVksQ0FDWixtQkFBcUIsQ0FGckIsVUFBWSxDQUtaLGNBQWUsQ0FEZixjQUFlLENBRGYscUJBQXVCLENBR3ZCLCtCQUNGLENBRUEsMENBQ0Usd0JBQ0YsQ0FFQSw2Q0FDRSxxQkFBc0IsQ0FDdEIsa0JBQ0YiLCJmaWxlIjoiYXV0aC5tb2R1bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCB1cmwoXCJodHRwczovL2FwaS5mb250c2hhcmUuY29tL3YyL2Nzcz9mW109c2F0b3NoaUAxJmRpc3BsYXk9c3dhcFwiKTtcclxuXHJcbi5tb2RhbCB7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIHotaW5kZXg6IDg1O1xyXG4gIGxlZnQ6IDA7XHJcbiAgdG9wOiAwO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogMTAwJTtcclxuICBvdmVyZmxvdzogYXV0bztcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwgMCwgMCk7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjQpO1xyXG4gIGJhY2tkcm9wLWZpbHRlcjogYmx1cigycHgpO1xyXG4gIHRyYW5zaXRpb246IGFsbCAwLjNzO1xyXG59XHJcblxyXG4ubW9kYWwgLm91dGVyLWNvbnRhaW5lciB7XHJcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICBmb250LWZhbWlseTogXCJTYXRvc2hpXCIsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LFxyXG4gICAgXCJTZWdvZSBVSVwiLCBSb2JvdG8sIE94eWdlbiwgVWJ1bnR1LCBDYW50YXJlbGwsIFwiT3BlbiBTYW5zXCIsIFwiSGVsdmV0aWNhIE5ldWVcIixcclxuICAgIHNhbnMtc2VyaWY7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHRvcDogNTAlO1xyXG4gIGxlZnQ6IDUwJTtcclxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcclxuXHJcbiAgLyogZGlhbG9nIG9uIG1vYmlsZSAqL1xyXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ0MHB4KSB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XHJcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcclxuICAgIGJvdHRvbTogMDtcclxuICAgIHRvcDogYXV0bztcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIDApO1xyXG4gIH1cclxufVxyXG5cclxuLm91dGVyLWNvbnRhaW5lciAuY29udGFpbmVyIHtcclxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZWZlZmU7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgIzg4ODtcclxuICBib3JkZXItcmFkaXVzOiAxLjVyZW07XHJcbiAgd2lkdGg6IDQwMHB4OyAvKiB0ZW1wb3JhcnkgKi9cclxuICBwYWRkaW5nOiAxLjVyZW07XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBwYWRkaW5nLWJvdHRvbTogMXJlbTtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHJcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDQwcHgpIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgYm9yZGVyLXJhZGl1czogMDtcclxuICAgIHBhZGRpbmc6IDFyZW07XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogMC41cmVtO1xyXG4gICAgaGVpZ2h0OiBhdXRvO1xyXG4gICAgbWF4LWhlaWdodDogMTAwdmg7XHJcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xyXG4gIH1cclxufVxyXG5cclxuLmNvbnRhaW5lci5saW5raW5nLWNvbnRhaW5lciB7XHJcbiAgbWF4LXdpZHRoOiAzMDBweDtcclxufVxyXG5cclxuLm9yaWdpbi10YWIge1xyXG4gIGhlaWdodDogMTAwJTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgZ2FwOiAwLjVyZW07XHJcbiAgd2lkdGg6IDEwMCU7XHJcbn1cclxuLm9yaWdpbi1zZWN0aW9uIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1ldmVubHk7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBnYXA6IDAuNXJlbTtcclxuICB3aWR0aDogMTAwJTtcclxufVxyXG5cclxuLm9yaWdpbi1zZWN0aW9uIC5vcmlnaW4tY29udGFpbmVyIHtcclxuICBtaW4td2lkdGg6IDFyZW07XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgbWluLWhlaWdodDogM3JlbTtcclxuICBmb250LXNpemU6IDAuODc1cmVtO1xyXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgY29sb3I6ICMzMzM7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xyXG4gIG1hcmdpbi10b3A6IDAuNXJlbTtcclxufVxyXG5cclxuLm9yaWdpbi13cmFwcGVyIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBnYXA6IDAuNXJlbTtcclxuICB3aWR0aDogMTAwJTtcclxufVxyXG5cclxuLm9yaWdpbi1jb250YWluZXIgLm9yaWdpbi1sYWJlbCB7XHJcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xyXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgY29sb3I6ICM3Nzc3Nzc7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIG1hcmdpbi1ib3R0b206IDAuMjVyZW07XHJcbn1cclxuXHJcbi5ob3Jpem9udGFsLWRpdmlkZXIge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogMXB4O1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNkZGQ7XHJcbiAgbWFyZ2luLXRvcDogMC41cmVtO1xyXG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcclxufVxyXG5cclxuLm9yaWdpbi1zZWN0aW9uIC5kaXZpZGVyIHtcclxuICB3aWR0aDogMXB4O1xyXG4gIGhlaWdodDogMXJlbTtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkO1xyXG59XHJcblxyXG4ub3JpZ2luLWRhc2hib2FyZC1idXR0b24ge1xyXG4gIC8qIGJhY2tncm91bmQtY29sb3I6ICNmZjZmMDA7ICovXHJcbiAgY29sb3I6ICNmZjZmMDA7XHJcbiAgYm9yZGVyOiBub25lO1xyXG4gIC8qIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07ICovXHJcbiAgcGFkZGluZzogMC4yNXJlbTtcclxuICBmb250LXNpemU6IDAuODc1cmVtO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIC8qIGJveC1zaGFkb3c6IGhzbGEoMCwgMCUsIDEwMCUsIDAuMTUpIDAgMnB4IDAgaW5zZXQsXHJcbiAgICByZ2JhKDAsIDAsIDAsIDAuMDUpIDAgLTJweCA0cHggaW5zZXQsIHJnYmEoNDYsIDU0LCA4MCwgMC4wNzUpIDAgMXB4IDFweDsgKi9cclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBnYXA6IDAuNXJlbTtcclxufVxyXG5cclxuLm9yaWdpbi1kYXNoYm9hcmQtYnV0dG9uOmhvdmVyIHtcclxuICAvKiBiYWNrZ3JvdW5kLWNvbG9yOiAjY2M0ZTAyOyAqL1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBjb2xvcjogI2NjNGUwMjtcclxufVxyXG5cclxuLm9yaWdpbi1kYXNoYm9hcmQtYnV0dG9uOmRpc2FibGVkIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NjO1xyXG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbn1cclxuXHJcbi5jb250YWluZXIgaDIge1xyXG4gIG1hcmdpbi10b3A6IDA7XHJcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcclxuICBmb250LXNpemU6IDEuMjVyZW07XHJcbn1cclxuXHJcbi5jb250YWluZXIgLmhlYWRlciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBmbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gIGNvbG9yOiAjMzMzO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIHRleHQtYWxpZ246IGxlZnQ7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xyXG4gIC8qIG1hcmdpbi10b3A6IC0wLjZyZW07ICovXHJcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgZ2FwOiAwLjVyZW07XHJcblxyXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ0MHB4KSB7XHJcbiAgICBtYXJnaW4tdG9wOiAwO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xyXG4gIH1cclxufVxyXG5cclxuLmxpbmtpbmctY29udGFpbmVyIC5oZWFkZXIge1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG59XHJcblxyXG4uY29udGFpbmVyIC5hdXRoLWhlYWRlciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgY29sb3I6ICMzMzM7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIG1hcmdpbi1ib3R0b206IDFyZW07XHJcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbn1cclxuXHJcbi5jb250YWluZXIgLmhlYWRlciAuc21hbGwtbW9kYWwtaWNvbiB7XHJcbiAgd2lkdGg6IDJyZW07XHJcbiAgaGVpZ2h0OiAycmVtO1xyXG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcclxuICBtYXJnaW4tdG9wOiAwLjVyZW07XHJcbn1cclxuXHJcbi5jb250YWluZXIgLmhlYWRlciAud2FsbGV0LWFkZHJlc3Mge1xyXG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcclxuICBjb2xvcjogIzc3NztcclxuICBmb250LXdlaWdodDogbm9ybWFsO1xyXG4gIG1hcmdpbi10b3A6IDAuMnJlbTtcclxufVxyXG5cclxuLmNvbnRhaW5lciAuY2xvc2UtYnV0dG9uIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgdG9wOiAxcmVtO1xyXG4gIHJpZ2h0OiAxcmVtO1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xyXG4gIGJvcmRlcjogMnB4IHNvbGlkICNkZGQ7XHJcbiAgYm9yZGVyLXJhZGl1czogMTAwJTtcclxuICBmb250LXNpemU6IDEuNXJlbTtcclxuICBjb2xvcjogI2FhYTtcclxuICB3aWR0aDogMS4yNXJlbTtcclxuICBoZWlnaHQ6IDEuMjVyZW07XHJcbiAgdHJhbnNpdGlvbjogY29sb3IgMC4xNXM7XHJcbn1cclxuXHJcbi5jbG9zZS1idXR0b24gPiAuY2xvc2UtaWNvbiB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG4gIHdpZHRoOiAxcmVtO1xyXG4gIGhlaWdodDogMXJlbTtcclxuICBwYWRkaW5nOiAwLjE1cmVtO1xyXG59XHJcblxyXG4uY29udGFpbmVyIC5jbG9zZS1idXR0b246aG92ZXIge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNkZGQ7XHJcbiAgY29sb3I6ICM4ODg7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4uY29udGFpbmVyIC5saW5raW5nLXRleHQge1xyXG4gIGNvbG9yOiAjNzc3O1xyXG4gIGZvbnQtc2l6ZTogMXJlbTtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgLyogbWFyZ2luLXRvcDogMDsgKi9cclxuICAvKiBtYXJnaW4tYm90dG9tOiAycmVtOyAqL1xyXG59XHJcblxyXG4ucHJvdmlkZXItbGlzdCB7XHJcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgZ2FwOiAwLjVyZW07XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgbWFyZ2luLWJvdHRvbTogMC43NXJlbTtcclxuICBtYXgtaGVpZ2h0OiAxNy45cmVtO1xyXG4gIG92ZXJmbG93LXk6IGF1dG87XHJcbiAgcGFkZGluZy1yaWdodDogMC41cmVtO1xyXG4gIHBhZGRpbmctbGVmdDogMC41cmVtO1xyXG4gIHNjcm9sbGJhci13aWR0aDogdGhpbjtcclxuICBzY3JvbGxiYXItY29sb3I6ICNjY2MgI2YxZjFmMTtcclxufVxyXG5cclxuLnByb3ZpZGVyLWxpc3QuYmlnIHtcclxuICBtYXgtaGVpZ2h0OiAxNnJlbTtcclxufVxyXG5cclxuLnByb3ZpZGVyLWxpc3Q6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcclxuICB3aWR0aDogMC41cmVtO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XHJcbn1cclxuLnByb3ZpZGVyLWxpc3Q6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NjO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XHJcbn1cclxuLnByb3ZpZGVyLWxpc3Q6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjFmMWYxO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XHJcbn1cclxuXHJcbi5zcGlubmVyOjphZnRlciB7XHJcbiAgY29udGVudDogXCJcIjtcclxuICBkaXNwbGF5OiBibG9jaztcclxuICB3aWR0aDogMXJlbTtcclxuICBoZWlnaHQ6IDFyZW07XHJcbiAgYm9yZGVyOiAwLjI1cmVtIHNvbGlkICNmM2YzZjM7XHJcbiAgYm9yZGVyLXRvcDogMC4yNXJlbSBzb2xpZCAjZmY2ZjAwO1xyXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICBhbmltYXRpb246IHNwaW4gMXMgbGluZWFyIGluZmluaXRlO1xyXG59XHJcbi5zcGlubmVyIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG4gIG1hcmdpbi1yaWdodDogMC4yNXJlbTtcclxuICBhbGlnbi1zZWxmOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgc3BpbiB7XHJcbiAgMCUge1xyXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XHJcbiAgfVxyXG4gIDEwMCUge1xyXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcclxuICB9XHJcbn1cclxuXHJcbi5tb2RhbC1pY29uIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgd2lkdGg6IDRyZW07XHJcbiAgaGVpZ2h0OiA0cmVtO1xyXG4gIG1hcmdpbi10b3A6IDAuNXJlbTtcclxuICBtYXJnaW4tYm90dG9tOiAwLjI1cmVtO1xyXG4gIHBhZGRpbmc6IDAuMzVyZW07XHJcbn1cclxuLm1vZGFsLWljb24gc3ZnIHtcclxuICB3aWR0aDogMy42cmVtO1xyXG4gIGhlaWdodDogMy42cmVtO1xyXG59XHJcblxyXG4uY29udGFpbmVyIGEuZm9vdGVyLXRleHQge1xyXG4gIC8qIG1hcmdpbi10b3A6IDFyZW07ICovXHJcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xyXG4gIGNvbG9yOiAjYmJiYmJiO1xyXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxufVxyXG5cclxuLmNvbnRhaW5lciBhLmZvb3Rlci10ZXh0OmhvdmVyIHtcclxuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxufVxyXG5cclxuLmRpc2Nvbm5lY3QtYnV0dG9uIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY2ZjAwO1xyXG4gIGNvbG9yOiB3aGl0ZTtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgYm9yZGVyLXJhZGl1czogMC43NXJlbTtcclxuICBwYWRkaW5nOiAxcmVtO1xyXG4gIHBhZGRpbmctYmxvY2s6IDA7XHJcbiAgZm9udC1zaXplOiAxcmVtO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIG1hcmdpbi1ib3R0b206IDAuNzVyZW07XHJcbiAgbWFyZ2luLXRvcDogMXJlbTtcclxuICBoZWlnaHQ6IDIuNXJlbTtcclxuICBib3gtc2hhZG93OiBoc2xhKDAsIDAlLCAxMDAlLCAwLjE1KSAwIDJweCAwIGluc2V0LFxyXG4gICAgcmdiYSgwLCAwLCAwLCAwLjA1KSAwIC0ycHggNHB4IGluc2V0LCByZ2JhKDQ2LCA1NCwgODAsIDAuMDc1KSAwIDFweCAxcHg7XHJcbn1cclxuXHJcbi5kaXNjb25uZWN0LWJ1dHRvbjpob3ZlciB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NjNGUwMjtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi5kaXNjb25uZWN0LWJ1dHRvbjpkaXNhYmxlZCB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NjYztcclxuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG59XHJcblxyXG4ubGlua2luZy1idXR0b24ge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjZmMDA7XHJcbiAgY29sb3I6IHdoaXRlO1xyXG4gIGJvcmRlcjogbm9uZTtcclxuICBib3JkZXItcmFkaXVzOiAwLjc1cmVtO1xyXG4gIHBhZGRpbmc6IDFyZW07XHJcbiAgcGFkZGluZy1ibG9jazogMDtcclxuICBmb250LXNpemU6IDFyZW07XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgbWFyZ2luLWJvdHRvbTogMC43NXJlbTtcclxuICBtYXJnaW4tdG9wOiAxcmVtO1xyXG4gIGhlaWdodDogMi41cmVtO1xyXG4gIGJveC1zaGFkb3c6IGhzbGEoMCwgMCUsIDEwMCUsIDAuMTUpIDAgMnB4IDAgaW5zZXQsXHJcbiAgICByZ2JhKDAsIDAsIDAsIDAuMDUpIDAgLTJweCA0cHggaW5zZXQsIHJnYmEoNDYsIDU0LCA4MCwgMC4wNzUpIDAgMXB4IDFweDtcclxufVxyXG5cclxuLmxpbmtpbmctYnV0dG9uOmhvdmVyIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2M0ZTAyO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLmxpbmtpbmctYnV0dG9uOmRpc2FibGVkIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NjO1xyXG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbn1cclxuXHJcbi5zb2NpYWxzLXdyYXBwZXIge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBnYXA6IDFyZW07XHJcbiAgbWFyZ2luLWJsb2NrOiAwLjVyZW07XHJcbiAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi5zb2NpYWxzLWNvbnRhaW5lciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGdhcDogMC41cmVtO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4uc29jaWFscy1jb250YWluZXIgLmNvbm5lY3Rvci1jb250YWluZXIge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGdhcDogMC4yNXJlbTtcclxufVxyXG5cclxuLnNvY2lhbHMtY29udGFpbmVyIC5jb25uZWN0b3ItYnV0dG9uIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGdhcDogMC4yNXJlbTtcclxuICBwYWRkaW5nOiAwLjc1cmVtO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07XHJcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmVmZWZlO1xyXG4gIGNvbG9yOiAjMzMzO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAyLjVyZW07XHJcbn1cclxuXHJcbi5zb2NpYWxzLWNvbnRhaW5lciAuY29ubmVjdG9yLWJ1dHRvbjpob3ZlciB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RkZDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi5zb2NpYWxzLWNvbnRhaW5lciAuY29ubmVjdG9yLWJ1dHRvbjpkaXNhYmxlZCB7XHJcbiAgY3Vyc29yOiBkZWZhdWx0O1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZWZlZmU7XHJcbn1cclxuXHJcbi5zb2NpYWxzLWNvbnRhaW5lciAuY29ubmVjdG9yLWJ1dHRvbiBzdmcge1xyXG4gIHdpZHRoOiAxLjVyZW07XHJcbiAgaGVpZ2h0OiAxLjVyZW07XHJcbiAgY29sb3I6ICMzMzM7XHJcbiAgbWFyZ2luLXJpZ2h0OiAwLjVyZW07XHJcbn1cclxuXHJcbi5zb2NpYWxzLWNvbnRhaW5lciAuY29ubmVjdG9yLWNvbm5lY3RlZCB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBnYXA6IDAuMjVyZW07XHJcbiAgcGFkZGluZzogMC43NXJlbTtcclxuICBwYWRkaW5nLXRvcDogMC41cmVtO1xyXG4gIHBhZGRpbmctYm90dG9tOiAwLjVyZW07XHJcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XHJcbiAgY29sb3I6ICMzMzM7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcclxuICB3aWR0aDogMTAwJTtcclxuICBmbGV4OiAxO1xyXG59XHJcblxyXG4uc29jaWFscy1jb250YWluZXIgLmNvbm5lY3Rvci1jb25uZWN0ZWQgc3ZnIHtcclxuICB3aWR0aDogMS41cmVtO1xyXG4gIGhlaWdodDogMS41cmVtO1xyXG4gIGNvbG9yOiAjMzMzO1xyXG4gIG1hcmdpbi1yaWdodDogMC41cmVtO1xyXG59XHJcblxyXG4uc29jaWFscy1jb250YWluZXIgaDMge1xyXG4gIGNvbG9yOiAjMzMzO1xyXG4gIG1hcmdpbjogMDtcclxufVxyXG5cclxuLmNvbm5lY3Rvci1idXR0b24gLmNvbm5lY3Rvci1jaGVja21hcmsge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB0b3A6IC0wLjVyZW07XHJcbiAgcmlnaHQ6IC0wLjVyZW07XHJcbiAgd2lkdGg6IDFyZW0gIWltcG9ydGFudDtcclxuICBoZWlnaHQ6IDFyZW0gIWltcG9ydGFudDtcclxufVxyXG5cclxuLnVubGluay1jb25uZWN0b3ItYnV0dG9uIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgcmlnaHQ6IDAuMzc1cmVtO1xyXG4gIGJvcmRlcjogbm9uZTtcclxuICBmb250LXNpemU6IDAuNzVyZW07XHJcbiAgcGFkZGluZzogMC4yNXJlbSAwLjVyZW07XHJcbiAgcGFkZGluZy1yaWdodDogMC42NzVyZW07XHJcbiAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTk5O1xyXG4gIGNvbG9yOiB3aGl0ZTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgZ2FwOiAwLjI1cmVtO1xyXG4gIGJveC1zaGFkb3c6IGhzbGEoMCwgMCUsIDEwMCUsIDAuMTUpIDAgMnB4IDAgaW5zZXQsXHJcbiAgICByZ2JhKDAsIDAsIDAsIDAuMDUpIDAgLTJweCA0cHggaW5zZXQsIHJnYmEoNDYsIDU0LCA4MCwgMC4wNzUpIDAgMXB4IDFweDtcclxuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzO1xyXG59XHJcblxyXG4udW5saW5rLWNvbm5lY3Rvci1idXR0b24gc3ZnIHtcclxuICBzdHJva2U6IHdoaXRlICFpbXBvcnRhbnQ7XHJcbiAgd2lkdGg6IDAuODc1cmVtICFpbXBvcnRhbnQ7XHJcbiAgaGVpZ2h0OiAwLjg3NXJlbSAhaW1wb3J0YW50O1xyXG4gIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4udW5saW5rLWNvbm5lY3Rvci1idXR0b246aG92ZXIge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICM4ODg7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4udW5saW5rLWNvbm5lY3Rvci1idXR0b246ZGlzYWJsZWQge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNjY2M7XHJcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcclxufVxyXG5cclxuQGtleWZyYW1lcyBsb2FkZXIge1xyXG4gIDAlIHtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XHJcbiAgfVxyXG4gIDUwJSB7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XHJcbiAgfVxyXG4gIDEwMCUge1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTtcclxuICB9XHJcbn1cclxuXHJcbi5sb2FkZXIge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICB3aWR0aDogNHJlbTtcclxuICBoZWlnaHQ6IDAuNHJlbTtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkO1xyXG4gIG1hcmdpbi10b3A6IDAuNXJlbTtcclxuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XHJcbiAgYm9yZGVyLXJhZGl1czogMC4xMjVyZW07XHJcbn1cclxuXHJcbi5sb2FkZXI6OmJlZm9yZSB7XHJcbiAgY29udGVudDogXCJcIjtcclxuICBkaXNwbGF5OiBibG9jaztcclxuICB3aWR0aDogMnJlbTtcclxuICBoZWlnaHQ6IDAuNHJlbTtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY2ZjAwO1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICBsZWZ0OiAwO1xyXG4gIGFuaW1hdGlvbjogbG9hZGVyIDEuNXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XHJcbiAgYm9yZGVyLXJhZGl1czogMC4xMjVyZW07XHJcbn1cclxuXHJcbi5uby1zb2NpYWxzIHtcclxuICBjb2xvcjogIzc3NztcclxuICBmb250LXNpemU6IDAuODc1cmVtO1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICBtYXJnaW4tdG9wOiAwLjVyZW07XHJcbn1cclxuXHJcbi5kaXZpZGVyIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgZ2FwOiAwLjVyZW07XHJcbiAgbWFyZ2luLXRvcDogMC41cmVtO1xyXG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcclxufVxyXG5cclxuLmRpdmlkZXI6OmJlZm9yZSxcclxuLmRpdmlkZXI6OmFmdGVyIHtcclxuICBjb250ZW50OiBcIlwiO1xyXG4gIGZsZXg6IDE7XHJcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGQ7XHJcbn1cclxuXHJcbmlucHV0LnRpa3Rvay1pbnB1dCB7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgZ3JheTtcclxuICBib3JkZXItcmFkaXVzOiAwLjc1cmVtO1xyXG4gIGNvbG9yOiBibGFjaztcclxuICBmb250LWZhbWlseTogU2F0b3NoaSwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFNlZ29lIFVJLFxyXG4gICAgUm9ib3RvLCBPeHlnZW4sIFVidW50dSwgQ2FudGFyZWxsLCBPcGVuIFNhbnMsIEhlbHZldGljYSBOZXVlLCBzYW5zLXNlcmlmO1xyXG4gIGZvbnQtc2l6ZTogMXJlbTtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIGhlaWdodDogMi43NXJlbTtcclxuICBsaW5lLWhlaWdodDogMS4zMzNyZW07XHJcbiAgcGFkZGluZy1pbmxpbmU6IDFyZW07XHJcbiAgbWFyZ2luLXRvcDogMXJlbTtcclxuICB3aWR0aDogMTAwJTtcclxufVxyXG5cclxuaW5wdXQudGlrdG9rLWlucHV0LmludmFsaWQge1xyXG4gIGJvcmRlci1jb2xvcjogI2RjMzU0NTtcclxuICBvdXRsaW5lLWNvbG9yOiAjZGMzNTQ1O1xyXG59XHJcblxyXG4ub3RwLWlucHV0LWNvbnRhaW5lciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBnYXA6IDAuNXJlbTtcclxuICBtYXJnaW4tdG9wOiAxcmVtO1xyXG59XHJcblxyXG4ub3RwLWlucHV0IHtcclxuICB3aWR0aDogMnJlbTtcclxuICBoZWlnaHQ6IDIuNXJlbTtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgZm9udC1zaXplOiAxLjVyZW07XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcclxuICBib3JkZXItcmFkaXVzOiAwLjVyZW07XHJcbiAgb3V0bGluZTogbm9uZTtcclxuICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4ycztcclxufVxyXG5cclxuLm90cC1pbnB1dDpmb2N1cyB7XHJcbiAgYm9yZGVyLWNvbG9yOiAjZmY2ZjAwO1xyXG59XHJcblxyXG4udGFicyB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XHJcbiAgbWFyZ2luLWJvdHRvbTogY2FsYygtMC41cmVtIC0gMXB4KTtcclxuICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgb3ZlcmZsb3cteDogYXV0bztcclxufVxyXG4udGFiczo6LXdlYmtpdC1zY3JvbGxiYXIge1xyXG4gIGRpc3BsYXk6IG5vbmU7XHJcbn1cclxuLnRhYnM6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NjO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XHJcbn1cclxuXHJcbi50YWItYnV0dG9uIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmVmZWZlO1xyXG4gIGJvcmRlci1yaWdodDogMnB4IHNvbGlkICNkZGQ7XHJcbiAgcGFkZGluZzogMC41cmVtIDFyZW07XHJcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzO1xyXG4gIHRleHQtYWxpZ246IGxlZnQ7XHJcbn1cclxuXHJcbi50YWItYnV0dG9uOmhvdmVyIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlO1xyXG59XHJcblxyXG4uYWN0aXZlLXRhYiB7XHJcbiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjZmY2ZjAwO1xyXG59XHJcblxyXG4udGFiLWNvbnRlbnQge1xyXG4gIG1hcmdpbi10b3A6IDAuMjVyZW07XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgbWluLWhlaWdodDogMjByZW07XHJcbiAgaGVpZ2h0OiAyMHJlbTtcclxufVxyXG5cclxuLnZlcnRpY2FsLXRhYnMtY29udGFpbmVyIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcbiAgZ2FwOiAwLjVyZW07XHJcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICB3aWR0aDogMTAwJTtcclxufVxyXG5cclxuLnZlcnRpY2FsLXRhYnMge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBnYXA6IDAuMjVyZW07XHJcbiAgbWluLXdpZHRoOiBmaXQtY29udGVudCAhaW1wb3J0YW50O1xyXG4gIG1hcmdpbi1sZWZ0OiAtMXJlbTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgb3ZlcmZsb3cteTogYXV0bztcclxufVxyXG5cclxuLnZlcnRpY2FsLXRhYi1jb250ZW50IHtcclxuICBmbGV4OiAxIDEgMCU7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICBtaW4taGVpZ2h0OiAyMnJlbTtcclxuICBoZWlnaHQ6IDIycmVtO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XHJcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcclxuICBwYWRkaW5nOiAxcmVtO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNmOWY5Zjk7XHJcbiAgbWF4LXdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4uaXAtdGFiLWNvbnRhaW5lciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGdhcDogMXJlbTtcclxuICB3aWR0aDogMTAwJTtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbn1cclxuXHJcbi5pcC10YWItY29udGVudCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGdhcDogMXJlbTtcclxuICB3aWR0aDogMTAwJTtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGhlaWdodDogMTAwJTtcclxufVxyXG5cclxuLmlwLXRhYi1jb250ZW50LXRleHQge1xyXG4gIGNvbG9yOiAjNzc3O1xyXG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIG1hcmdpbi10b3A6IDAuNXJlbTtcclxufVxyXG5cclxuLmNvbnRyYWN0LWJ1dHRvbi1jb250YWluZXIge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGdhcDogMXJlbTtcclxuICBtYXJnaW4tdG9wOiAxcmVtO1xyXG59XHJcblxyXG4uY29udHJhY3QtaW5wdXQge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIG1heC13aWR0aDogMzAwcHg7XHJcbiAgcGFkZGluZzogMC41cmVtO1xyXG4gIGZvbnQtc2l6ZTogMXJlbTtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcclxuICBvdXRsaW5lOiBub25lO1xyXG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjJzO1xyXG59XHJcblxyXG4uY29udHJhY3QtaW5wdXQ6Zm9jdXMge1xyXG4gIGJvcmRlci1jb2xvcjogI2ZmNmYwMDtcclxufVxyXG5cclxuLmNvbnRyYWN0LWJ1dHRvbiB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNmYwMDtcclxuICBjb2xvcjogd2hpdGU7XHJcbiAgYm9yZGVyOiBub25lO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcclxuICBwYWRkaW5nOiAwLjc1cmVtIDEuNXJlbTtcclxuICBmb250LXNpemU6IDFyZW07XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4ycztcclxufVxyXG5cclxuLmNvbnRyYWN0LWJ1dHRvbjpob3ZlciB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NjNGUwMjtcclxufVxyXG5cclxuLmNvbnRyYWN0LWJ1dHRvbjpkaXNhYmxlZCB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NjYztcclxuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG59XHJcbiJdfQ== */";
3253
+ var css_248z$1 = "@import url(\"https://api.fontshare.com/v2/css?f[]=satoshi@1&display=swap\");.auth-module_modal__yyg5L{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background-color:#000;background-color:rgba(0,0,0,.4);height:100%;left:0;overflow:auto;position:fixed;top:0;transition:all .3s;width:100%;z-index:85}.auth-module_modal__yyg5L .auth-module_outer-container__RraOQ{align-items:center;box-sizing:border-box;display:flex;flex-direction:row;font-family:Satoshi,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;justify-content:center;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);@media screen and (max-width:440px){border-bottom-left-radius:0;border-bottom-right-radius:0;bottom:0;top:auto;transform:translate(-50%);width:100%}}.auth-module_outer-container__RraOQ .auth-module_container__7utns{align-items:center;background-color:#fefefe;border:1px solid #888;border-radius:1.5rem;box-sizing:border-box;flex-direction:column;justify-content:center;padding:1.5rem 1.5rem 1rem;position:relative;text-align:center;width:400px;@media screen and (max-width:440px){border-radius:0;height:auto;max-height:100vh;overflow-y:auto;padding-bottom:1rem;padding-bottom:.5rem;padding-left:1rem;padding-right:1rem;padding-top:1rem;width:100%}}.auth-module_container__7utns.auth-module_linking-container__mYNwD{max-width:300px}.auth-module_origin-tab__miOUK{align-items:center;display:flex;flex-direction:column;gap:.5rem;height:100%;justify-content:space-between;width:100%}.auth-module_origin-section__UBhBB{align-items:center;display:flex;flex-direction:row;gap:.5rem;justify-content:space-evenly;width:100%}.auth-module_origin-section__UBhBB .auth-module_origin-container__ZIk4c{align-items:center;color:#333;display:flex;flex-direction:column;font-size:.875rem;font-weight:400;justify-content:center;margin-bottom:.5rem;margin-top:.5rem;min-height:3rem;min-width:1rem;text-align:center;width:100%}.auth-module_origin-wrapper__JQfEI{align-items:center;display:flex;flex-direction:column;gap:.5rem;justify-content:center;width:100%}.auth-module_origin-container__ZIk4c .auth-module_origin-label__l-1q9{color:#777;font-size:.75rem;font-weight:400;margin-bottom:.25rem;text-align:center}.auth-module_horizontal-divider__YfWCy{background-color:#ddd;height:1px;margin-bottom:.5rem;margin-top:.5rem;width:100%}.auth-module_origin-section__UBhBB .auth-module_divider__z65Me{background-color:#ddd;height:1rem;width:1px}.auth-module_origin-dashboard-button__-pch4{align-items:center;border:none;color:#ff6f00;display:flex;flex-direction:row;font-size:.875rem;gap:.5rem;justify-content:center;padding:.25rem;width:100%}.auth-module_origin-dashboard-button__-pch4:hover{color:#cc4e02;cursor:pointer}.auth-module_origin-dashboard-button__-pch4:disabled{background-color:#ccc;cursor:not-allowed}.auth-module_container__7utns h2{font-size:1.25rem;margin-bottom:1rem;margin-top:0}.auth-module_container__7utns .auth-module_header__pX9nM{align-items:center;color:#333;display:flex;flex-direction:row;font-weight:700;gap:.5rem;justify-content:flex-start;margin-bottom:1rem;text-align:left;width:100%;@media screen and (max-width:440px){margin-bottom:.5rem;margin-top:0}}.auth-module_linking-container__mYNwD .auth-module_header__pX9nM{justify-content:center}.auth-module_container__7utns .auth-module_auth-header__LsM1f{align-items:center;color:#333;display:flex;flex-direction:column;font-weight:700;justify-content:center;margin-bottom:1rem;text-align:center;width:100%}.auth-module_container__7utns .auth-module_header__pX9nM .auth-module_small-modal-icon__YayD1{height:2rem;margin-bottom:.5rem;margin-top:.5rem;width:2rem}.auth-module_container__7utns .auth-module_header__pX9nM .auth-module_wallet-address__AVVA5{color:#777;font-size:.75rem;font-weight:400;margin-top:.2rem}.auth-module_container__7utns .auth-module_close-button__uZrho{background-color:#fff;border:2px solid #ddd;border-radius:100%;color:#aaa;font-size:1.5rem;height:1.25rem;position:absolute;right:1rem;top:1rem;transition:color .15s;width:1.25rem}.auth-module_close-button__uZrho>.auth-module_close-icon__SSCni{display:block;height:1rem;padding:.15rem;position:relative;width:1rem}.auth-module_container__7utns .auth-module_close-button__uZrho:hover{background-color:#ddd;color:#888;cursor:pointer}.auth-module_container__7utns .auth-module_linking-text__uz3ud{color:#777;font-size:1rem;text-align:center}.auth-module_provider-list__6vISy{box-sizing:border-box;display:flex;flex-direction:column;gap:.5rem;margin-bottom:.75rem;max-height:17.9rem;overflow-y:auto;padding-left:.5rem;padding-right:.5rem;scrollbar-color:#ccc #f1f1f1;scrollbar-width:thin;width:100%}.auth-module_provider-list__6vISy.auth-module_big__jQxvN{max-height:16rem}.auth-module_provider-list__6vISy::-webkit-scrollbar{border-radius:.25rem;width:.5rem}.auth-module_provider-list__6vISy::-webkit-scrollbar-thumb{background-color:#ccc;border-radius:.25rem}.auth-module_provider-list__6vISy::-webkit-scrollbar-track{background-color:#f1f1f1;border-radius:.25rem}.auth-module_spinner__hfzlH:after{animation:auth-module_spin__tm9l6 1s linear infinite;border:.25rem solid #f3f3f3;border-radius:50%;border-top-color:#ff6f00;content:\"\";display:block;height:1rem;width:1rem}.auth-module_spinner__hfzlH{align-self:center;display:flex;justify-content:center;margin-left:auto;margin-right:.25rem}@keyframes auth-module_spin__tm9l6{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.auth-module_modal-icon__CV7ah{align-items:center;display:flex;height:4rem;justify-content:center;margin-bottom:.25rem;margin-top:.5rem;padding:.35rem;width:4rem}.auth-module_modal-icon__CV7ah svg{height:3.6rem;width:3.6rem}.auth-module_container__7utns a.auth-module_footer-text__CQnh6{color:#bbb;font-size:.75rem;text-decoration:none}.auth-module_container__7utns a.auth-module_footer-text__CQnh6:hover{text-decoration:underline}.auth-module_disconnect-button__bsu-3{background-color:#ff6f00;border:none;border-radius:.75rem;box-shadow:inset 0 2px 0 hsla(0,0%,100%,.15),inset 0 -2px 4px rgba(0,0,0,.05),0 1px 1px rgba(46,54,80,.075);color:#fff;font-size:1rem;height:2.5rem;margin-bottom:.75rem;margin-top:1rem;padding:1rem;padding-block:0;width:100%}.auth-module_disconnect-button__bsu-3:hover{background-color:#cc4e02;cursor:pointer}.auth-module_disconnect-button__bsu-3:disabled{background-color:#ccc;cursor:not-allowed}.auth-module_linking-button__g1GlL{background-color:#ff6f00;border:none;border-radius:.75rem;box-shadow:inset 0 2px 0 hsla(0,0%,100%,.15),inset 0 -2px 4px rgba(0,0,0,.05),0 1px 1px rgba(46,54,80,.075);color:#fff;font-size:1rem;height:2.5rem;margin-bottom:.75rem;margin-top:1rem;padding:1rem;padding-block:0;width:100%}.auth-module_linking-button__g1GlL:hover{background-color:#cc4e02;cursor:pointer}.auth-module_linking-button__g1GlL:disabled{background-color:#ccc;cursor:not-allowed}.auth-module_socials-wrapper__PshV3{display:flex;flex-direction:column;gap:1rem;margin-block:.5rem;width:100%}.auth-module_socials-container__iDzfJ{display:flex;flex-direction:column;gap:.5rem;width:100%}.auth-module_socials-container__iDzfJ .auth-module_connector-container__4wn11{align-items:center;display:flex;gap:.25rem;justify-content:flex-start;position:relative}.auth-module_socials-container__iDzfJ .auth-module_connector-button__j79HA{align-items:center;background-color:#fefefe;border:1px solid #ddd;border-radius:.75rem;color:#333;display:flex;font-size:.875rem;gap:.25rem;height:2.5rem;padding:.75rem;position:relative;width:100%}.auth-module_socials-container__iDzfJ .auth-module_connector-button__j79HA:hover{background-color:#ddd;cursor:pointer}.auth-module_socials-container__iDzfJ .auth-module_connector-button__j79HA:disabled{background-color:#fefefe;cursor:default}.auth-module_socials-container__iDzfJ .auth-module_connector-button__j79HA svg{color:#333;height:1.5rem;margin-right:.5rem;width:1.5rem}.auth-module_socials-container__iDzfJ .auth-module_connector-connected__JvDQb{align-items:center;background-color:#eee;border:1px solid #ddd;border-radius:.25rem;color:#333;display:flex;flex:1;font-size:.875rem;gap:.25rem;padding:.5rem .75rem;position:relative;width:100%}.auth-module_socials-container__iDzfJ .auth-module_connector-connected__JvDQb svg{color:#333;height:1.5rem;margin-right:.5rem;width:1.5rem}.auth-module_socials-container__iDzfJ h3{color:#333;margin:0}.auth-module_connector-button__j79HA .auth-module_connector-checkmark__ZS6zU{height:1rem!important;position:absolute;right:-.5rem;top:-.5rem;width:1rem!important}.auth-module_unlink-connector-button__6Fwkp{align-items:center;background-color:#999;border:none;border-radius:.5rem;box-shadow:inset 0 2px 0 hsla(0,0%,100%,.15),inset 0 -2px 4px rgba(0,0,0,.05),0 1px 1px rgba(46,54,80,.075);color:#fff;display:flex;font-size:.75rem;gap:.25rem;padding:.25rem .675rem .25rem .5rem;position:absolute;right:.375rem;text-align:center;transition:background-color .15s}.auth-module_unlink-connector-button__6Fwkp svg{stroke:#fff!important;height:.875rem!important;margin-right:0!important;width:.875rem!important}.auth-module_unlink-connector-button__6Fwkp:hover{background-color:#888;cursor:pointer}.auth-module_unlink-connector-button__6Fwkp:disabled{background-color:#ccc;cursor:not-allowed}@keyframes auth-module_loader__gH3ZC{0%{transform:translateX(0)}50%{transform:translateX(100%)}to{transform:translateX(0)}}.auth-module_loader__gH3ZC{background-color:#ddd;border-radius:.125rem;height:.4rem;margin-bottom:.5rem;margin-top:.5rem;position:relative;width:4rem}.auth-module_loader__gH3ZC:before{animation:auth-module_loader__gH3ZC 1.5s ease-in-out infinite;background-color:#ff6f00;border-radius:.125rem;content:\"\";display:block;height:.4rem;left:0;position:absolute;width:2rem}.auth-module_no-socials__wEx0t{color:#777;font-size:.875rem;margin-top:.5rem;text-align:center}.auth-module_divider__z65Me{align-items:center;display:flex;gap:.5rem;margin-bottom:.5rem;margin-top:.5rem}.auth-module_divider__z65Me:after,.auth-module_divider__z65Me:before{border-bottom:1px solid #ddd;content:\"\";flex:1}input.auth-module_tiktok-input__FeqdG{border:1px solid gray;border-radius:.75rem;color:#000;font-family:Satoshi,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;font-size:1rem;font-weight:600;height:2.75rem;line-height:1.333rem;margin-top:1rem;padding-inline:1rem;width:100%}input.auth-module_tiktok-input__FeqdG.auth-module_invalid__qqgK6{border-color:#dc3545;outline-color:#dc3545}.auth-module_otp-input-container__B2NH6{display:flex;gap:.5rem;justify-content:center;margin-top:1rem}.auth-module_otp-input__vjImt{border:1px solid #ccc;border-radius:.5rem;font-size:1.5rem;height:2.5rem;outline:none;text-align:center;transition:border-color .2s;width:2rem}.auth-module_otp-input__vjImt:focus{border-color:#ff6f00}.auth-module_tabs__RcUmV{display:flex;justify-content:flex-start;margin-bottom:calc(-.5rem - 1px);max-width:100%;overflow-x:auto}.auth-module_tabs__RcUmV::-webkit-scrollbar{display:none}.auth-module_tabs__RcUmV::-webkit-scrollbar-thumb{background-color:#ccc;border-radius:.25rem}.auth-module_tab-button__HT6wc{background-color:#fefefe;border:2px transparent;border-radius:0;border-right:2px solid #ddd;color:#333;cursor:pointer;font-size:.875rem;font-weight:400;padding:.75rem 1rem;text-align:left;transition:background-color .2s}.auth-module_tab-button__HT6wc:hover{background-color:#eee;border-color:#ddd}.auth-module_tab-button__HT6wc:focus{border-color:#ff6f00;outline:none}.auth-module_active-tab__l6P44{border-right-color:#ff6f00}.auth-module_tab-content__noHF0{height:20rem;margin-top:.25rem;min-height:20rem;width:100%}.auth-module_vertical-tabs-container__6sAOL{box-sizing:border-box;display:flex;flex-direction:row;gap:.5rem;width:100%}.auth-module_vertical-tabs__-ba-W{display:flex;flex-direction:column;gap:.25rem;height:100%;margin-left:-1rem;min-width:-moz-fit-content!important;min-width:fit-content!important;overflow-y:auto}.auth-module_vertical-tab-content__wTqKF{background-color:#f9f9f9;border:1px solid #ddd;border-radius:.25rem;flex:1 1 0%;height:22rem;max-width:100%;min-height:22rem;overflow:hidden;padding:1rem}.auth-module_ip-tab-container__ck0F8{justify-content:space-between}.auth-module_ip-tab-container__ck0F8,.auth-module_ip-tab-content__VI4zC{align-items:center;display:flex;flex-direction:column;gap:1rem;height:100%;width:100%}.auth-module_ip-tab-content__VI4zC{justify-content:center}.auth-module_ip-tab-content-text__y2BRh{color:#777;font-size:.875rem;margin-top:.5rem;text-align:center}.auth-module_contract-button-container__7HH9n{align-items:center;display:flex;flex-direction:column;gap:1rem;margin-top:1rem}.auth-module_contract-input__4BYcs{border:1px solid #ccc;border-radius:.5rem;color:#333;font-size:1rem;max-width:300px;outline:none;padding:.5rem;transition:border-color .2s;width:100%}.auth-module_contract-input__4BYcs:focus{border-color:#ff6f00}.auth-module_contract-button__Cq6zI{background-color:#ff6f00;border:none;border-radius:.5rem;color:#fff;cursor:pointer;font-size:1rem;padding:.75rem 1.5rem;transition:background-color .2s}.auth-module_contract-button__Cq6zI:hover{background-color:#cc4e02}.auth-module_contract-button__Cq6zI:disabled{background-color:#ccc;cursor:not-allowed}\n/*# sourceMappingURL=data:application/json;base64,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LENBQ2IscUJBQXNCLENBQ3RCLFVBQVksQ0FHWixXQUFZLENBRFosaUJBQWtCLENBRGxCLG9DQUFpQyxDQUFqQywrQkFBaUMsQ0FHakMsZUFDRixDQUVBLHlDQVFFLHdCQUF5QixDQUh6QixxQkFBc0IsQ0FDdEIsb0JBQXNCLENBTHRCLFdBQVksQ0FHWixZQUFhLENBS2IsY0FBZSxDQU5mLGdCQUFpQixDQURqQixlQUFnQixDQUtoQixZQUdGLENBRUEscUNBS0UsNkJBR0YsQ0FFQSx3RUFKRSxrQkFBbUIsQ0FMbkIsWUFBYSxDQUNiLHFCQUFzQixDQUN0QixRQUFTLENBSVQsV0FBWSxDQUhaLFVBY0YsQ0FSQSxtQ0FLRSxzQkFHRixDQUVBLHdDQUNFLFVBQVcsQ0FDWCxpQkFBbUIsQ0FFbkIsZ0JBQWtCLENBRGxCLGlCQUVGLENBRUEsOENBR0Usa0JBQW1CLENBRm5CLFlBQWEsQ0FDYixxQkFBc0IsQ0FFdEIsUUFBUyxDQUNULGVBQ0YsQ0FFQSxtQ0FLRSxxQkFBc0IsQ0FDdEIsbUJBQXFCLENBR3JCLFVBQVcsQ0FMWCxjQUFlLENBRmYsZUFBZ0IsQ0FLaEIsWUFBYSxDQUpiLGFBQWUsQ0FLZiwyQkFBNkIsQ0FQN0IsVUFTRixDQUVBLHlDQUNFLG9CQUNGLENBRUEsb0NBQ0Usd0JBQXlCLENBRXpCLFdBQVksQ0FDWixtQkFBcUIsQ0FGckIsVUFBWSxDQUtaLGNBQWUsQ0FEZixjQUFlLENBRGYscUJBQXVCLENBR3ZCLCtCQUNGLENBRUEsMENBQ0Usd0JBQ0YsQ0FFQSw2Q0FDRSxxQkFBc0IsQ0FDdEIsa0JBQ0YiLCJmaWxlIjoiYXV0aC5tb2R1bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCB1cmwoXCJodHRwczovL2FwaS5mb250c2hhcmUuY29tL3YyL2Nzcz9mW109c2F0b3NoaUAxJmRpc3BsYXk9c3dhcFwiKTtcclxuXHJcbi5tb2RhbCB7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIHotaW5kZXg6IDg1O1xyXG4gIGxlZnQ6IDA7XHJcbiAgdG9wOiAwO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogMTAwJTtcclxuICBvdmVyZmxvdzogYXV0bztcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwgMCwgMCk7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjQpO1xyXG4gIGJhY2tkcm9wLWZpbHRlcjogYmx1cigycHgpO1xyXG4gIHRyYW5zaXRpb246IGFsbCAwLjNzO1xyXG59XHJcblxyXG4ubW9kYWwgLm91dGVyLWNvbnRhaW5lciB7XHJcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICBmb250LWZhbWlseTogXCJTYXRvc2hpXCIsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LFxyXG4gICAgXCJTZWdvZSBVSVwiLCBSb2JvdG8sIE94eWdlbiwgVWJ1bnR1LCBDYW50YXJlbGwsIFwiT3BlbiBTYW5zXCIsIFwiSGVsdmV0aWNhIE5ldWVcIixcclxuICAgIHNhbnMtc2VyaWY7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHRvcDogNTAlO1xyXG4gIGxlZnQ6IDUwJTtcclxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcclxuXHJcbiAgLyogZGlhbG9nIG9uIG1vYmlsZSAqL1xyXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ0MHB4KSB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XHJcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcclxuICAgIGJvdHRvbTogMDtcclxuICAgIHRvcDogYXV0bztcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIDApO1xyXG4gIH1cclxufVxyXG5cclxuLm91dGVyLWNvbnRhaW5lciAuY29udGFpbmVyIHtcclxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZWZlZmU7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgIzg4ODtcclxuICBib3JkZXItcmFkaXVzOiAxLjVyZW07XHJcbiAgd2lkdGg6IDQwMHB4OyAvKiB0ZW1wb3JhcnkgKi9cclxuICBwYWRkaW5nOiAxLjVyZW07XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBwYWRkaW5nLWJvdHRvbTogMXJlbTtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHJcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDQwcHgpIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgYm9yZGVyLXJhZGl1czogMDtcclxuICAgIHBhZGRpbmc6IDFyZW07XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogMC41cmVtO1xyXG4gICAgaGVpZ2h0OiBhdXRvO1xyXG4gICAgbWF4LWhlaWdodDogMTAwdmg7XHJcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xyXG4gIH1cclxufVxyXG5cclxuLmNvbnRhaW5lci5saW5raW5nLWNvbnRhaW5lciB7XHJcbiAgbWF4LXdpZHRoOiAzMDBweDtcclxufVxyXG5cclxuLm9yaWdpbi10YWIge1xyXG4gIGhlaWdodDogMTAwJTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgZ2FwOiAwLjVyZW07XHJcbiAgd2lkdGg6IDEwMCU7XHJcbn1cclxuLm9yaWdpbi1zZWN0aW9uIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1ldmVubHk7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBnYXA6IDAuNXJlbTtcclxuICB3aWR0aDogMTAwJTtcclxufVxyXG5cclxuLm9yaWdpbi1zZWN0aW9uIC5vcmlnaW4tY29udGFpbmVyIHtcclxuICBtaW4td2lkdGg6IDFyZW07XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgbWluLWhlaWdodDogM3JlbTtcclxuICBmb250LXNpemU6IDAuODc1cmVtO1xyXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgY29sb3I6ICMzMzM7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xyXG4gIG1hcmdpbi10b3A6IDAuNXJlbTtcclxufVxyXG5cclxuLm9yaWdpbi13cmFwcGVyIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBnYXA6IDAuNXJlbTtcclxuICB3aWR0aDogMTAwJTtcclxufVxyXG5cclxuLm9yaWdpbi1jb250YWluZXIgLm9yaWdpbi1sYWJlbCB7XHJcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xyXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgY29sb3I6ICM3Nzc3Nzc7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIG1hcmdpbi1ib3R0b206IDAuMjVyZW07XHJcbn1cclxuXHJcbi5ob3Jpem9udGFsLWRpdmlkZXIge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogMXB4O1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNkZGQ7XHJcbiAgbWFyZ2luLXRvcDogMC41cmVtO1xyXG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcclxufVxyXG5cclxuLm9yaWdpbi1zZWN0aW9uIC5kaXZpZGVyIHtcclxuICB3aWR0aDogMXB4O1xyXG4gIGhlaWdodDogMXJlbTtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkO1xyXG59XHJcblxyXG4ub3JpZ2luLWRhc2hib2FyZC1idXR0b24ge1xyXG4gIC8qIGJhY2tncm91bmQtY29sb3I6ICNmZjZmMDA7ICovXHJcbiAgY29sb3I6ICNmZjZmMDA7XHJcbiAgYm9yZGVyOiBub25lO1xyXG4gIC8qIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07ICovXHJcbiAgcGFkZGluZzogMC4yNXJlbTtcclxuICBmb250LXNpemU6IDAuODc1cmVtO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIC8qIGJveC1zaGFkb3c6IGhzbGEoMCwgMCUsIDEwMCUsIDAuMTUpIDAgMnB4IDAgaW5zZXQsXHJcbiAgICByZ2JhKDAsIDAsIDAsIDAuMDUpIDAgLTJweCA0cHggaW5zZXQsIHJnYmEoNDYsIDU0LCA4MCwgMC4wNzUpIDAgMXB4IDFweDsgKi9cclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBnYXA6IDAuNXJlbTtcclxufVxyXG5cclxuLm9yaWdpbi1kYXNoYm9hcmQtYnV0dG9uOmhvdmVyIHtcclxuICAvKiBiYWNrZ3JvdW5kLWNvbG9yOiAjY2M0ZTAyOyAqL1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBjb2xvcjogI2NjNGUwMjtcclxufVxyXG5cclxuLm9yaWdpbi1kYXNoYm9hcmQtYnV0dG9uOmRpc2FibGVkIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NjO1xyXG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbn1cclxuXHJcbi5jb250YWluZXIgaDIge1xyXG4gIG1hcmdpbi10b3A6IDA7XHJcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcclxuICBmb250LXNpemU6IDEuMjVyZW07XHJcbn1cclxuXHJcbi5jb250YWluZXIgLmhlYWRlciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBmbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gIGNvbG9yOiAjMzMzO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIHRleHQtYWxpZ246IGxlZnQ7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xyXG4gIC8qIG1hcmdpbi10b3A6IC0wLjZyZW07ICovXHJcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgZ2FwOiAwLjVyZW07XHJcblxyXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ0MHB4KSB7XHJcbiAgICBtYXJnaW4tdG9wOiAwO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xyXG4gIH1cclxufVxyXG5cclxuLmxpbmtpbmctY29udGFpbmVyIC5oZWFkZXIge1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG59XHJcblxyXG4uY29udGFpbmVyIC5hdXRoLWhlYWRlciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgY29sb3I6ICMzMzM7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIG1hcmdpbi1ib3R0b206IDFyZW07XHJcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbn1cclxuXHJcbi5jb250YWluZXIgLmhlYWRlciAuc21hbGwtbW9kYWwtaWNvbiB7XHJcbiAgd2lkdGg6IDJyZW07XHJcbiAgaGVpZ2h0OiAycmVtO1xyXG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcclxuICBtYXJnaW4tdG9wOiAwLjVyZW07XHJcbn1cclxuXHJcbi5jb250YWluZXIgLmhlYWRlciAud2FsbGV0LWFkZHJlc3Mge1xyXG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcclxuICBjb2xvcjogIzc3NztcclxuICBmb250LXdlaWdodDogbm9ybWFsO1xyXG4gIG1hcmdpbi10b3A6IDAuMnJlbTtcclxufVxyXG5cclxuLmNvbnRhaW5lciAuY2xvc2UtYnV0dG9uIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgdG9wOiAxcmVtO1xyXG4gIHJpZ2h0OiAxcmVtO1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xyXG4gIGJvcmRlcjogMnB4IHNvbGlkICNkZGQ7XHJcbiAgYm9yZGVyLXJhZGl1czogMTAwJTtcclxuICBmb250LXNpemU6IDEuNXJlbTtcclxuICBjb2xvcjogI2FhYTtcclxuICB3aWR0aDogMS4yNXJlbTtcclxuICBoZWlnaHQ6IDEuMjVyZW07XHJcbiAgdHJhbnNpdGlvbjogY29sb3IgMC4xNXM7XHJcbn1cclxuXHJcbi5jbG9zZS1idXR0b24gPiAuY2xvc2UtaWNvbiB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG4gIHdpZHRoOiAxcmVtO1xyXG4gIGhlaWdodDogMXJlbTtcclxuICBwYWRkaW5nOiAwLjE1cmVtO1xyXG59XHJcblxyXG4uY29udGFpbmVyIC5jbG9zZS1idXR0b246aG92ZXIge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNkZGQ7XHJcbiAgY29sb3I6ICM4ODg7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4uY29udGFpbmVyIC5saW5raW5nLXRleHQge1xyXG4gIGNvbG9yOiAjNzc3O1xyXG4gIGZvbnQtc2l6ZTogMXJlbTtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgLyogbWFyZ2luLXRvcDogMDsgKi9cclxuICAvKiBtYXJnaW4tYm90dG9tOiAycmVtOyAqL1xyXG59XHJcblxyXG4ucHJvdmlkZXItbGlzdCB7XHJcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgZ2FwOiAwLjVyZW07XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgbWFyZ2luLWJvdHRvbTogMC43NXJlbTtcclxuICBtYXgtaGVpZ2h0OiAxNy45cmVtO1xyXG4gIG92ZXJmbG93LXk6IGF1dG87XHJcbiAgcGFkZGluZy1yaWdodDogMC41cmVtO1xyXG4gIHBhZGRpbmctbGVmdDogMC41cmVtO1xyXG4gIHNjcm9sbGJhci13aWR0aDogdGhpbjtcclxuICBzY3JvbGxiYXItY29sb3I6ICNjY2MgI2YxZjFmMTtcclxufVxyXG5cclxuLnByb3ZpZGVyLWxpc3QuYmlnIHtcclxuICBtYXgtaGVpZ2h0OiAxNnJlbTtcclxufVxyXG5cclxuLnByb3ZpZGVyLWxpc3Q6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcclxuICB3aWR0aDogMC41cmVtO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XHJcbn1cclxuLnByb3ZpZGVyLWxpc3Q6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NjO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XHJcbn1cclxuLnByb3ZpZGVyLWxpc3Q6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjFmMWYxO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XHJcbn1cclxuXHJcbi5zcGlubmVyOjphZnRlciB7XHJcbiAgY29udGVudDogXCJcIjtcclxuICBkaXNwbGF5OiBibG9jaztcclxuICB3aWR0aDogMXJlbTtcclxuICBoZWlnaHQ6IDFyZW07XHJcbiAgYm9yZGVyOiAwLjI1cmVtIHNvbGlkICNmM2YzZjM7XHJcbiAgYm9yZGVyLXRvcDogMC4yNXJlbSBzb2xpZCAjZmY2ZjAwO1xyXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICBhbmltYXRpb246IHNwaW4gMXMgbGluZWFyIGluZmluaXRlO1xyXG59XHJcbi5zcGlubmVyIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG4gIG1hcmdpbi1yaWdodDogMC4yNXJlbTtcclxuICBhbGlnbi1zZWxmOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgc3BpbiB7XHJcbiAgMCUge1xyXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XHJcbiAgfVxyXG4gIDEwMCUge1xyXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcclxuICB9XHJcbn1cclxuXHJcbi5tb2RhbC1pY29uIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgd2lkdGg6IDRyZW07XHJcbiAgaGVpZ2h0OiA0cmVtO1xyXG4gIG1hcmdpbi10b3A6IDAuNXJlbTtcclxuICBtYXJnaW4tYm90dG9tOiAwLjI1cmVtO1xyXG4gIHBhZGRpbmc6IDAuMzVyZW07XHJcbn1cclxuLm1vZGFsLWljb24gc3ZnIHtcclxuICB3aWR0aDogMy42cmVtO1xyXG4gIGhlaWdodDogMy42cmVtO1xyXG59XHJcblxyXG4uY29udGFpbmVyIGEuZm9vdGVyLXRleHQge1xyXG4gIC8qIG1hcmdpbi10b3A6IDFyZW07ICovXHJcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xyXG4gIGNvbG9yOiAjYmJiYmJiO1xyXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxufVxyXG5cclxuLmNvbnRhaW5lciBhLmZvb3Rlci10ZXh0OmhvdmVyIHtcclxuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxufVxyXG5cclxuLmRpc2Nvbm5lY3QtYnV0dG9uIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY2ZjAwO1xyXG4gIGNvbG9yOiB3aGl0ZTtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgYm9yZGVyLXJhZGl1czogMC43NXJlbTtcclxuICBwYWRkaW5nOiAxcmVtO1xyXG4gIHBhZGRpbmctYmxvY2s6IDA7XHJcbiAgZm9udC1zaXplOiAxcmVtO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIG1hcmdpbi1ib3R0b206IDAuNzVyZW07XHJcbiAgbWFyZ2luLXRvcDogMXJlbTtcclxuICBoZWlnaHQ6IDIuNXJlbTtcclxuICBib3gtc2hhZG93OiBoc2xhKDAsIDAlLCAxMDAlLCAwLjE1KSAwIDJweCAwIGluc2V0LFxyXG4gICAgcmdiYSgwLCAwLCAwLCAwLjA1KSAwIC0ycHggNHB4IGluc2V0LCByZ2JhKDQ2LCA1NCwgODAsIDAuMDc1KSAwIDFweCAxcHg7XHJcbn1cclxuXHJcbi5kaXNjb25uZWN0LWJ1dHRvbjpob3ZlciB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NjNGUwMjtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi5kaXNjb25uZWN0LWJ1dHRvbjpkaXNhYmxlZCB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NjYztcclxuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG59XHJcblxyXG4ubGlua2luZy1idXR0b24ge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjZmMDA7XHJcbiAgY29sb3I6IHdoaXRlO1xyXG4gIGJvcmRlcjogbm9uZTtcclxuICBib3JkZXItcmFkaXVzOiAwLjc1cmVtO1xyXG4gIHBhZGRpbmc6IDFyZW07XHJcbiAgcGFkZGluZy1ibG9jazogMDtcclxuICBmb250LXNpemU6IDFyZW07XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgbWFyZ2luLWJvdHRvbTogMC43NXJlbTtcclxuICBtYXJnaW4tdG9wOiAxcmVtO1xyXG4gIGhlaWdodDogMi41cmVtO1xyXG4gIGJveC1zaGFkb3c6IGhzbGEoMCwgMCUsIDEwMCUsIDAuMTUpIDAgMnB4IDAgaW5zZXQsXHJcbiAgICByZ2JhKDAsIDAsIDAsIDAuMDUpIDAgLTJweCA0cHggaW5zZXQsIHJnYmEoNDYsIDU0LCA4MCwgMC4wNzUpIDAgMXB4IDFweDtcclxufVxyXG5cclxuLmxpbmtpbmctYnV0dG9uOmhvdmVyIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2M0ZTAyO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLmxpbmtpbmctYnV0dG9uOmRpc2FibGVkIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NjO1xyXG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbn1cclxuXHJcbi5zb2NpYWxzLXdyYXBwZXIge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBnYXA6IDFyZW07XHJcbiAgbWFyZ2luLWJsb2NrOiAwLjVyZW07XHJcbiAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi5zb2NpYWxzLWNvbnRhaW5lciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGdhcDogMC41cmVtO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4uc29jaWFscy1jb250YWluZXIgLmNvbm5lY3Rvci1jb250YWluZXIge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGdhcDogMC4yNXJlbTtcclxufVxyXG5cclxuLnNvY2lhbHMtY29udGFpbmVyIC5jb25uZWN0b3ItYnV0dG9uIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGdhcDogMC4yNXJlbTtcclxuICBwYWRkaW5nOiAwLjc1cmVtO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07XHJcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmVmZWZlO1xyXG4gIGNvbG9yOiAjMzMzO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAyLjVyZW07XHJcbn1cclxuXHJcbi5zb2NpYWxzLWNvbnRhaW5lciAuY29ubmVjdG9yLWJ1dHRvbjpob3ZlciB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RkZDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi5zb2NpYWxzLWNvbnRhaW5lciAuY29ubmVjdG9yLWJ1dHRvbjpkaXNhYmxlZCB7XHJcbiAgY3Vyc29yOiBkZWZhdWx0O1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZWZlZmU7XHJcbn1cclxuXHJcbi5zb2NpYWxzLWNvbnRhaW5lciAuY29ubmVjdG9yLWJ1dHRvbiBzdmcge1xyXG4gIHdpZHRoOiAxLjVyZW07XHJcbiAgaGVpZ2h0OiAxLjVyZW07XHJcbiAgY29sb3I6ICMzMzM7XHJcbiAgbWFyZ2luLXJpZ2h0OiAwLjVyZW07XHJcbn1cclxuXHJcbi5zb2NpYWxzLWNvbnRhaW5lciAuY29ubmVjdG9yLWNvbm5lY3RlZCB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBnYXA6IDAuMjVyZW07XHJcbiAgcGFkZGluZzogMC43NXJlbTtcclxuICBwYWRkaW5nLXRvcDogMC41cmVtO1xyXG4gIHBhZGRpbmctYm90dG9tOiAwLjVyZW07XHJcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XHJcbiAgY29sb3I6ICMzMzM7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcclxuICB3aWR0aDogMTAwJTtcclxuICBmbGV4OiAxO1xyXG59XHJcblxyXG4uc29jaWFscy1jb250YWluZXIgLmNvbm5lY3Rvci1jb25uZWN0ZWQgc3ZnIHtcclxuICB3aWR0aDogMS41cmVtO1xyXG4gIGhlaWdodDogMS41cmVtO1xyXG4gIGNvbG9yOiAjMzMzO1xyXG4gIG1hcmdpbi1yaWdodDogMC41cmVtO1xyXG59XHJcblxyXG4uc29jaWFscy1jb250YWluZXIgaDMge1xyXG4gIGNvbG9yOiAjMzMzO1xyXG4gIG1hcmdpbjogMDtcclxufVxyXG5cclxuLmNvbm5lY3Rvci1idXR0b24gLmNvbm5lY3Rvci1jaGVja21hcmsge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB0b3A6IC0wLjVyZW07XHJcbiAgcmlnaHQ6IC0wLjVyZW07XHJcbiAgd2lkdGg6IDFyZW0gIWltcG9ydGFudDtcclxuICBoZWlnaHQ6IDFyZW0gIWltcG9ydGFudDtcclxufVxyXG5cclxuLnVubGluay1jb25uZWN0b3ItYnV0dG9uIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgcmlnaHQ6IDAuMzc1cmVtO1xyXG4gIGJvcmRlcjogbm9uZTtcclxuICBmb250LXNpemU6IDAuNzVyZW07XHJcbiAgcGFkZGluZzogMC4yNXJlbSAwLjVyZW07XHJcbiAgcGFkZGluZy1yaWdodDogMC42NzVyZW07XHJcbiAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTk5O1xyXG4gIGNvbG9yOiB3aGl0ZTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgZ2FwOiAwLjI1cmVtO1xyXG4gIGJveC1zaGFkb3c6IGhzbGEoMCwgMCUsIDEwMCUsIDAuMTUpIDAgMnB4IDAgaW5zZXQsXHJcbiAgICByZ2JhKDAsIDAsIDAsIDAuMDUpIDAgLTJweCA0cHggaW5zZXQsIHJnYmEoNDYsIDU0LCA4MCwgMC4wNzUpIDAgMXB4IDFweDtcclxuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzO1xyXG59XHJcblxyXG4udW5saW5rLWNvbm5lY3Rvci1idXR0b24gc3ZnIHtcclxuICBzdHJva2U6IHdoaXRlICFpbXBvcnRhbnQ7XHJcbiAgd2lkdGg6IDAuODc1cmVtICFpbXBvcnRhbnQ7XHJcbiAgaGVpZ2h0OiAwLjg3NXJlbSAhaW1wb3J0YW50O1xyXG4gIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4udW5saW5rLWNvbm5lY3Rvci1idXR0b246aG92ZXIge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICM4ODg7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4udW5saW5rLWNvbm5lY3Rvci1idXR0b246ZGlzYWJsZWQge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNjY2M7XHJcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcclxufVxyXG5cclxuQGtleWZyYW1lcyBsb2FkZXIge1xyXG4gIDAlIHtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XHJcbiAgfVxyXG4gIDUwJSB7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XHJcbiAgfVxyXG4gIDEwMCUge1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTtcclxuICB9XHJcbn1cclxuXHJcbi5sb2FkZXIge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICB3aWR0aDogNHJlbTtcclxuICBoZWlnaHQ6IDAuNHJlbTtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkO1xyXG4gIG1hcmdpbi10b3A6IDAuNXJlbTtcclxuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XHJcbiAgYm9yZGVyLXJhZGl1czogMC4xMjVyZW07XHJcbn1cclxuXHJcbi5sb2FkZXI6OmJlZm9yZSB7XHJcbiAgY29udGVudDogXCJcIjtcclxuICBkaXNwbGF5OiBibG9jaztcclxuICB3aWR0aDogMnJlbTtcclxuICBoZWlnaHQ6IDAuNHJlbTtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY2ZjAwO1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICBsZWZ0OiAwO1xyXG4gIGFuaW1hdGlvbjogbG9hZGVyIDEuNXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XHJcbiAgYm9yZGVyLXJhZGl1czogMC4xMjVyZW07XHJcbn1cclxuXHJcbi5uby1zb2NpYWxzIHtcclxuICBjb2xvcjogIzc3NztcclxuICBmb250LXNpemU6IDAuODc1cmVtO1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICBtYXJnaW4tdG9wOiAwLjVyZW07XHJcbn1cclxuXHJcbi5kaXZpZGVyIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgZ2FwOiAwLjVyZW07XHJcbiAgbWFyZ2luLXRvcDogMC41cmVtO1xyXG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcclxufVxyXG5cclxuLmRpdmlkZXI6OmJlZm9yZSxcclxuLmRpdmlkZXI6OmFmdGVyIHtcclxuICBjb250ZW50OiBcIlwiO1xyXG4gIGZsZXg6IDE7XHJcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGQ7XHJcbn1cclxuXHJcbmlucHV0LnRpa3Rvay1pbnB1dCB7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgZ3JheTtcclxuICBib3JkZXItcmFkaXVzOiAwLjc1cmVtO1xyXG4gIGNvbG9yOiBibGFjaztcclxuICBmb250LWZhbWlseTogU2F0b3NoaSwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFNlZ29lIFVJLFxyXG4gICAgUm9ib3RvLCBPeHlnZW4sIFVidW50dSwgQ2FudGFyZWxsLCBPcGVuIFNhbnMsIEhlbHZldGljYSBOZXVlLCBzYW5zLXNlcmlmO1xyXG4gIGZvbnQtc2l6ZTogMXJlbTtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIGhlaWdodDogMi43NXJlbTtcclxuICBsaW5lLWhlaWdodDogMS4zMzNyZW07XHJcbiAgcGFkZGluZy1pbmxpbmU6IDFyZW07XHJcbiAgbWFyZ2luLXRvcDogMXJlbTtcclxuICB3aWR0aDogMTAwJTtcclxufVxyXG5cclxuaW5wdXQudGlrdG9rLWlucHV0LmludmFsaWQge1xyXG4gIGJvcmRlci1jb2xvcjogI2RjMzU0NTtcclxuICBvdXRsaW5lLWNvbG9yOiAjZGMzNTQ1O1xyXG59XHJcblxyXG4ub3RwLWlucHV0LWNvbnRhaW5lciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBnYXA6IDAuNXJlbTtcclxuICBtYXJnaW4tdG9wOiAxcmVtO1xyXG59XHJcblxyXG4ub3RwLWlucHV0IHtcclxuICB3aWR0aDogMnJlbTtcclxuICBoZWlnaHQ6IDIuNXJlbTtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgZm9udC1zaXplOiAxLjVyZW07XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcclxuICBib3JkZXItcmFkaXVzOiAwLjVyZW07XHJcbiAgb3V0bGluZTogbm9uZTtcclxuICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4ycztcclxufVxyXG5cclxuLm90cC1pbnB1dDpmb2N1cyB7XHJcbiAgYm9yZGVyLWNvbG9yOiAjZmY2ZjAwO1xyXG59XHJcblxyXG4udGFicyB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XHJcbiAgbWFyZ2luLWJvdHRvbTogY2FsYygtMC41cmVtIC0gMXB4KTtcclxuICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgb3ZlcmZsb3cteDogYXV0bztcclxufVxyXG4udGFiczo6LXdlYmtpdC1zY3JvbGxiYXIge1xyXG4gIGRpc3BsYXk6IG5vbmU7XHJcbn1cclxuLnRhYnM6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NjO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XHJcbn1cclxuXHJcbi50YWItYnV0dG9uIHtcclxuICBib3JkZXItcmFkaXVzOiAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZWZlZmU7XHJcbiAgYm9yZGVyOiAycHggdHJhbnNwYXJlbnQ7XHJcbiAgYm9yZGVyLXJpZ2h0OiAycHggc29saWQgI2RkZDtcclxuICBwYWRkaW5nOiAwLjc1cmVtIDFyZW07XHJcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcclxuICBmb250LXdlaWdodDogNDAwO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMnM7XHJcbiAgdGV4dC1hbGlnbjogbGVmdDtcclxuICBjb2xvcjogIzMzMztcclxufVxyXG5cclxuLnRhYi1idXR0b246aG92ZXIge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNlZWU7XHJcbiAgYm9yZGVyLWNvbG9yOiAjZGRkO1xyXG59XHJcblxyXG4udGFiLWJ1dHRvbjpmb2N1cyB7XHJcbiAgb3V0bGluZTogbm9uZTtcclxuICBib3JkZXItY29sb3I6ICNmZjZmMDA7XHJcbn1cclxuXHJcbi5hY3RpdmUtdGFiIHtcclxuICBib3JkZXItcmlnaHQtY29sb3I6ICNmZjZmMDA7XHJcbn1cclxuXHJcbi50YWItY29udGVudCB7XHJcbiAgbWFyZ2luLXRvcDogMC4yNXJlbTtcclxuICB3aWR0aDogMTAwJTtcclxuICBtaW4taGVpZ2h0OiAyMHJlbTtcclxuICBoZWlnaHQ6IDIwcmVtO1xyXG59XHJcblxyXG4udmVydGljYWwtdGFicy1jb250YWluZXIge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcclxuICBnYXA6IDAuNXJlbTtcclxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4udmVydGljYWwtdGFicyB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGdhcDogMC4yNXJlbTtcclxuICBtaW4td2lkdGg6IGZpdC1jb250ZW50ICFpbXBvcnRhbnQ7XHJcbiAgbWFyZ2luLWxlZnQ6IC0xcmVtO1xyXG4gIGhlaWdodDogMTAwJTtcclxuICBvdmVyZmxvdy15OiBhdXRvO1xyXG59XHJcblxyXG4udmVydGljYWwtdGFiLWNvbnRlbnQge1xyXG4gIGZsZXg6IDEgMSAwJTtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIG1pbi1oZWlnaHQ6IDIycmVtO1xyXG4gIGhlaWdodDogMjJyZW07XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcclxuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xyXG4gIHBhZGRpbmc6IDFyZW07XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ZjlmOTtcclxuICBtYXgtd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi5pcC10YWItY29udGFpbmVyIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgZ2FwOiAxcmVtO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGhlaWdodDogMTAwJTtcclxufVxyXG5cclxuLmlwLXRhYi1jb250ZW50IHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgZ2FwOiAxcmVtO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG59XHJcblxyXG4uaXAtdGFiLWNvbnRlbnQtdGV4dCB7XHJcbiAgY29sb3I6ICM3Nzc7XHJcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgbWFyZ2luLXRvcDogMC41cmVtO1xyXG59XHJcblxyXG4uY29udHJhY3QtYnV0dG9uLWNvbnRhaW5lciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgZ2FwOiAxcmVtO1xyXG4gIG1hcmdpbi10b3A6IDFyZW07XHJcbn1cclxuXHJcbi5jb250cmFjdC1pbnB1dCB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgbWF4LXdpZHRoOiAzMDBweDtcclxuICBwYWRkaW5nOiAwLjVyZW07XHJcbiAgZm9udC1zaXplOiAxcmVtO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XHJcbiAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbiAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMnM7XHJcbiAgY29sb3I6ICMzMzM7XHJcbn1cclxuXHJcbi5jb250cmFjdC1pbnB1dDpmb2N1cyB7XHJcbiAgYm9yZGVyLWNvbG9yOiAjZmY2ZjAwO1xyXG59XHJcblxyXG4uY29udHJhY3QtYnV0dG9uIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY2ZjAwO1xyXG4gIGNvbG9yOiB3aGl0ZTtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xyXG4gIHBhZGRpbmc6IDAuNzVyZW0gMS41cmVtO1xyXG4gIGZvbnQtc2l6ZTogMXJlbTtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzO1xyXG59XHJcblxyXG4uY29udHJhY3QtYnV0dG9uOmhvdmVyIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2M0ZTAyO1xyXG59XHJcblxyXG4uY29udHJhY3QtYnV0dG9uOmRpc2FibGVkIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NjO1xyXG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbn1cclxuIl19 */";
704
3254
  var styles = {"modal":"auth-module_modal__yyg5L","outer-container":"auth-module_outer-container__RraOQ","container":"auth-module_container__7utns","linking-container":"auth-module_linking-container__mYNwD","origin-tab":"auth-module_origin-tab__miOUK","origin-section":"auth-module_origin-section__UBhBB","origin-container":"auth-module_origin-container__ZIk4c","origin-wrapper":"auth-module_origin-wrapper__JQfEI","origin-label":"auth-module_origin-label__l-1q9","horizontal-divider":"auth-module_horizontal-divider__YfWCy","divider":"auth-module_divider__z65Me","origin-dashboard-button":"auth-module_origin-dashboard-button__-pch4","header":"auth-module_header__pX9nM","auth-header":"auth-module_auth-header__LsM1f","small-modal-icon":"auth-module_small-modal-icon__YayD1","wallet-address":"auth-module_wallet-address__AVVA5","close-button":"auth-module_close-button__uZrho","close-icon":"auth-module_close-icon__SSCni","linking-text":"auth-module_linking-text__uz3ud","provider-list":"auth-module_provider-list__6vISy","big":"auth-module_big__jQxvN","spinner":"auth-module_spinner__hfzlH","spin":"auth-module_spin__tm9l6","modal-icon":"auth-module_modal-icon__CV7ah","footer-text":"auth-module_footer-text__CQnh6","disconnect-button":"auth-module_disconnect-button__bsu-3","linking-button":"auth-module_linking-button__g1GlL","socials-wrapper":"auth-module_socials-wrapper__PshV3","socials-container":"auth-module_socials-container__iDzfJ","connector-container":"auth-module_connector-container__4wn11","connector-button":"auth-module_connector-button__j79HA","connector-connected":"auth-module_connector-connected__JvDQb","connector-checkmark":"auth-module_connector-checkmark__ZS6zU","unlink-connector-button":"auth-module_unlink-connector-button__6Fwkp","loader":"auth-module_loader__gH3ZC","no-socials":"auth-module_no-socials__wEx0t","tiktok-input":"auth-module_tiktok-input__FeqdG","invalid":"auth-module_invalid__qqgK6","otp-input-container":"auth-module_otp-input-container__B2NH6","otp-input":"auth-module_otp-input__vjImt","tabs":"auth-module_tabs__RcUmV","tab-button":"auth-module_tab-button__HT6wc","active-tab":"auth-module_active-tab__l6P44","tab-content":"auth-module_tab-content__noHF0","vertical-tabs-container":"auth-module_vertical-tabs-container__6sAOL","vertical-tabs":"auth-module_vertical-tabs__-ba-W","vertical-tab-content":"auth-module_vertical-tab-content__wTqKF","ip-tab-container":"auth-module_ip-tab-container__ck0F8","ip-tab-content":"auth-module_ip-tab-content__VI4zC","ip-tab-content-text":"auth-module_ip-tab-content-text__y2BRh","contract-button-container":"auth-module_contract-button-container__7HH9n","contract-input":"auth-module_contract-input__4BYcs","contract-button":"auth-module_contract-button__Cq6zI"};
705
3255
  styleInject(css_248z$1);
706
3256
 
@@ -754,11 +3304,14 @@ const CloseIcon = () => (React.createElement("svg", { className: styles["close-i
754
3304
  * @returns { HTMLElement } The wrapper element.
755
3305
  */
756
3306
  const createWrapperAndAppendToBody = (wrapperId) => {
3307
+ if (typeof document === "undefined")
3308
+ return null;
757
3309
  const wrapperElement = document.createElement("div");
758
3310
  wrapperElement.setAttribute("id", wrapperId);
759
3311
  document.body.appendChild(wrapperElement);
760
3312
  return wrapperElement;
761
3313
  };
3314
+ const useIsomorphicLayoutEffect = typeof window !== "undefined" ? useLayoutEffect : useEffect;
762
3315
  /**
763
3316
  * The ReactPortal component. Renders children in a portal.
764
3317
  * @param { { children: JSX.Element, wrapperId: string } } props The props.
@@ -766,7 +3319,9 @@ const createWrapperAndAppendToBody = (wrapperId) => {
766
3319
  */
767
3320
  const ReactPortal = ({ children, wrapperId = "react-portal-wrapper", }) => {
768
3321
  const [wrapperElement, setWrapperElement] = useState(null);
769
- useLayoutEffect(() => {
3322
+ useIsomorphicLayoutEffect(() => {
3323
+ if (typeof document === "undefined")
3324
+ return;
770
3325
  let element = document.getElementById(wrapperId);
771
3326
  let systemCreated = false;
772
3327
  if (!element) {
@@ -868,8 +3423,9 @@ const ToastProvider = ({ children }) => {
868
3423
  };
869
3424
  return (React.createElement(ToastContext.Provider, { value: { addToast } },
870
3425
  children,
871
- React.createElement(ReactPortal, { wrapperId: "toast-wrapper" },
872
- React.createElement("div", { className: styles$2["toast-container"], onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave }, toasts.map((toast) => (React.createElement("div", { key: toast.id, className: `${styles$2.toast} ${styles$2[`toast-${toast.type}`]} ${toast.isVisible ? styles$2["toast-enter"] : styles$2["toast-exit"]}`, onClick: () => removeToast(toast.id) }, toast.message)))))));
3426
+ React.createElement(ClientOnly, null,
3427
+ React.createElement(ReactPortal, { wrapperId: "toast-wrapper" },
3428
+ React.createElement("div", { className: styles$2["toast-container"], onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave }, toasts.map((toast) => (React.createElement("div", { key: toast.id, className: `${styles$2.toast} ${styles$2[`toast-${toast.type}`]} ${toast.isVisible ? styles$2["toast-enter"] : styles$2["toast-exit"]}`, onClick: () => removeToast(toast.id) }, toast.message))))))));
873
3429
  };
874
3430
  const useToast = () => {
875
3431
  const context = React.useContext(ToastContext);
@@ -886,16 +3442,16 @@ const OriginContext = createContext({
886
3442
  const OriginProvider = ({ children }) => {
887
3443
  const { authenticated } = useAuthState();
888
3444
  const { auth } = useContext(CampContext);
889
- if (!auth) {
3445
+ if (!auth && typeof window !== "undefined") {
890
3446
  throw new Error("Auth instance is not available");
891
3447
  }
892
3448
  const statsQuery = useQuery({
893
3449
  queryKey: ["origin-stats", authenticated],
894
- queryFn: () => { var _a, _b; return (_b = (_a = auth.origin) === null || _a === void 0 ? void 0 : _a.getOriginUsage()) !== null && _b !== void 0 ? _b : Promise.resolve(null); },
3450
+ queryFn: () => { var _a, _b; return (_b = (_a = auth === null || auth === void 0 ? void 0 : auth.origin) === null || _a === void 0 ? void 0 : _a.getOriginUsage()) !== null && _b !== void 0 ? _b : Promise.resolve(null); },
895
3451
  });
896
3452
  const uploadsQuery = useQuery({
897
3453
  queryKey: ["origin-uploads", authenticated],
898
- queryFn: () => { var _a, _b; return (_b = (_a = auth.origin) === null || _a === void 0 ? void 0 : _a.getOriginUploads()) !== null && _b !== void 0 ? _b : Promise.resolve(null); },
3454
+ queryFn: () => { var _a, _b; return (_b = (_a = auth === null || auth === void 0 ? void 0 : auth.origin) === null || _a === void 0 ? void 0 : _a.getOriginUploads()) !== null && _b !== void 0 ? _b : Promise.resolve(null); },
899
3455
  });
900
3456
  return (React.createElement(OriginContext.Provider, { value: {
901
3457
  statsQuery: statsQuery,
@@ -922,31 +3478,33 @@ const CampContext = createContext({
922
3478
  */
923
3479
  const CampProvider = ({ clientId, redirectUri, children, allowAnalytics = true, }) => {
924
3480
  const isServer = typeof window === "undefined";
925
- const ackeeInstance = allowAnalytics && !isServer
926
- ? create(constants.ACKEE_INSTANCE, {
927
- detailed: false,
928
- ignoreLocalhost: true,
929
- ignoreOwnVisits: false,
930
- })
931
- : null;
932
- const [ackee, setAckee] = useState(ackeeInstance);
933
- const [auth, setAuth] = useState(new Auth({
3481
+ // const ackeeInstance =
3482
+ // allowAnalytics && !isServer
3483
+ // ? Ackee.create(constants.ACKEE_INSTANCE, {
3484
+ // detailed: false,
3485
+ // ignoreLocalhost: true,
3486
+ // ignoreOwnVisits: false,
3487
+ // })
3488
+ // : null;
3489
+ // const [ackee, setAckee] = useState(ackeeInstance);
3490
+ const [auth, setAuth] = useState(!isServer ? new Auth({
934
3491
  clientId,
935
3492
  redirectUri: redirectUri
936
3493
  ? redirectUri
937
3494
  : !isServer
938
3495
  ? window.location.href
939
3496
  : "",
940
- ackeeInstance,
941
- }));
942
- const wagmiContext = useContext(WagmiContext);
3497
+ // ackeeInstance,
3498
+ }) : null);
3499
+ // const wagmiContext = useContext(WagmiContext);
3500
+ const wagmiContext = typeof window !== "undefined" ? useContext(WagmiContext) : undefined;
943
3501
  return (React.createElement(CampContext.Provider, { value: {
944
3502
  clientId,
945
3503
  auth,
946
3504
  setAuth,
947
3505
  wagmiAvailable: wagmiContext !== undefined,
948
- ackee,
949
- setAckee,
3506
+ ackee: null,
3507
+ setAckee: () => { },
950
3508
  } },
951
3509
  React.createElement(SocialsProvider, null,
952
3510
  React.createElement(OriginProvider, null,
@@ -955,6 +3513,7 @@ const CampProvider = ({ clientId, redirectUri, children, allowAnalytics = true,
955
3513
  };
956
3514
 
957
3515
  const getWalletConnectProvider = (projectId) => __awaiter(void 0, void 0, void 0, function* () {
3516
+ const { EthereumProvider } = yield import('@walletconnect/ethereum-provider');
958
3517
  const provider = yield EthereumProvider.init({
959
3518
  optionalChains: [testnet.id],
960
3519
  chains: [testnet.id],
@@ -981,8 +3540,37 @@ const useWalletConnectProvider = (projectId) => {
981
3540
  return walletConnectProvider;
982
3541
  };
983
3542
 
984
- var css_248z = ".buttons-module_connect-button__CJhUa{background-color:#ff6f00;border:none;border-radius:.75rem;box-shadow:inset 0 2px 0 hsla(0,0%,100%,.15),inset 0 -2px 4px rgba(0,0,0,.05),0 1px 1px rgba(46,54,80,.075);color:#fff;font-family:Satoshi,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;font-size:1rem;font-weight:600;height:2.75rem;line-height:1.333rem;padding-inline:2.5rem;padding-left:5rem;position:relative;transition:background-color .15s;width:12rem}.buttons-module_connect-button__CJhUa .buttons-module_button-icon__JM4-2{background:hsla(0,0%,100%,.75);border-radius:.75rem 0 0 .75rem;box-shadow:inset 0 2px 0 hsla(0,0%,100%,.15),inset 0 -2px 4px rgba(0,0,0,.05);display:grid;height:100%;left:0;margin-right:.5rem;place-items:center;position:absolute;top:50%;transform:translateY(-50%);transition:background-color .15s;width:3rem}.buttons-module_connect-button__CJhUa .buttons-module_button-icon__JM4-2 svg{height:1.25rem;width:1.25rem}.buttons-module_connect-button__CJhUa:hover{background-color:#cc4e02;border-color:#cc4e02;cursor:pointer}.buttons-module_connect-button__CJhUa:hover .buttons-module_button-icon__JM4-2{background:hsla(0,0%,100%,.675)}.buttons-module_connect-button__CJhUa:focus{outline:none}.buttons-module_connect-button__CJhUa:disabled{background-color:#ccc;cursor:not-allowed}.buttons-module_provider-button__6JY7s{align-items:center;background-color:#fefefe;border:1px solid #ddd;border-radius:.5rem;display:flex;font-family:inherit;gap:.5rem;justify-content:flex-start;padding:.5rem;transition:background-color .15s;width:100%}.buttons-module_provider-button__6JY7s:focus{outline:1px solid #43b7c4}.buttons-module_provider-button__6JY7s:hover{border-color:#43b7c4}.buttons-module_provider-button__6JY7s:hover:not(:disabled){background-color:#ddd;cursor:pointer}.buttons-module_provider-button__6JY7s img{height:2rem;width:2rem}.buttons-module_provider-button__6JY7s .buttons-module_provider-icon__MOhr8{border-radius:.2rem}.buttons-module_provider-button__6JY7s span{line-height:1rem;margin-left:.5rem}.buttons-module_provider-button__6JY7s span.buttons-module_provider-name__tHWO2{color:#333;font-size:.875rem}.buttons-module_provider-button__6JY7s span.buttons-module_provider-label__CEGRr{color:#777;font-size:.7rem}.buttons-module_link-button-default__EcKUT{background-color:#ff6f00;border:none;border-radius:.75rem;box-shadow:inset 0 2px 0 hsla(0,0%,100%,.15),inset 0 -2px 4px rgba(0,0,0,.05),0 1px 1px rgba(46,54,80,.075);box-sizing:border-box;cursor:pointer;height:2.6rem;position:relative;width:7rem}.buttons-module_link-button-default__EcKUT:disabled{background-color:#b8b8b8;cursor:not-allowed}.buttons-module_link-button-default__EcKUT:after{background-color:transparent;border-radius:.75rem;bottom:0;content:\"\";left:0;position:absolute;right:0;top:0;transition:background-color .15s}.buttons-module_link-button-default__EcKUT:disabled:after{background-color:rgba(0,0,0,.35);border-radius:.35rem;color:#fff;content:\"Not connected\";display:grid;font-size:.75rem;height:2rem;left:0;opacity:0;padding:.25rem;place-items:center;position:absolute;right:0;top:-2.7rem;transform:translateY(-.5rem);transition:all .25s;-webkit-user-select:none;-moz-user-select:none;user-select:none;visibility:hidden}.buttons-module_link-button-default__EcKUT:disabled:hover:after{opacity:1;transform:translateY(0);visibility:visible}.buttons-module_link-button-default__EcKUT:not(:disabled):hover:after{background-color:rgba(0,0,0,.1)}.buttons-module_link-button-default__EcKUT:not(:disabled).buttons-module_twitter__9sRaz{background-color:#1da1f2}.buttons-module_link-button-default__EcKUT:not(:disabled).buttons-module_spotify__-fiKQ{background-color:#1db954}.buttons-module_link-button-default__EcKUT:not(:disabled).buttons-module_discord__I-YjZ{background-color:#7289da}.buttons-module_link-button-default__EcKUT:not(:disabled).buttons-module_tiktok__a80-0{background-color:#000}.buttons-module_link-button-default__EcKUT:not(:disabled).buttons-module_telegram__ExOTS{background-color:#08c}.buttons-module_link-button-default__EcKUT .buttons-module_button-container__-oPqd{align-items:center;display:flex;flex-direction:row;gap:.5rem;justify-content:center;padding:.5rem}.buttons-module_button-container__-oPqd .buttons-module_social-icon__DPdPe{align-items:center;color:#fff;display:flex;height:1.5rem;justify-content:center;width:1.5rem}.buttons-module_button-container__-oPqd .buttons-module_social-icon__DPdPe svg{fill:#fff!important;height:1.5rem;width:1.5rem}.buttons-module_button-container__-oPqd .buttons-module_social-icon__DPdPe svg path{fill:#fff!important}.buttons-module_button-container__-oPqd .buttons-module_link-icon__8V8FP{align-items:center;color:hsla(0,0%,100%,.8);display:flex;height:1.25rem;justify-content:center;width:1.25rem}.buttons-module_button-container__-oPqd .buttons-module_camp-logo__slNl0{align-items:center;background-color:#fff;border-radius:50%;box-sizing:border-box;display:flex;height:1.5rem;justify-content:center;padding:.15rem;width:1.5rem}.buttons-module_link-button-default__EcKUT:disabled .buttons-module_button-container__-oPqd .buttons-module_camp-logo__slNl0 svg path{fill:#b8b8b8!important}.buttons-module_link-button-icon__llX8m{background-color:#ff6f00;border:none;border-radius:.75rem;box-shadow:inset 0 2px 0 hsla(0,0%,100%,.15),inset 0 -2px 4px rgba(0,0,0,.05),0 1px 1px rgba(46,54,80,.075);box-sizing:border-box;cursor:pointer;height:3rem;min-height:3rem;min-width:3rem;padding:0;position:relative;width:3rem}.buttons-module_link-button-icon__llX8m:disabled{background-color:#b8b8b8;cursor:not-allowed}.buttons-module_link-button-icon__llX8m:disabled:after{background-color:rgba(0,0,0,.35);border-radius:.35rem;box-sizing:border-box;color:#fff;content:\"Not connected\";display:grid;font-size:.75rem;height:-moz-fit-content;height:fit-content;left:-1rem;opacity:0;padding:.25rem;place-items:center;position:absolute;right:-1rem;top:-2.7rem;transform:translateY(-.5rem);transition:all .25s}.buttons-module_link-button-icon__llX8m:disabled:hover:after{opacity:1;transform:translateY(0)}.buttons-module_link-button-icon__llX8m:after{background-color:transparent;border-radius:.75rem;bottom:0;content:\"\";left:0;position:absolute;right:0;top:0;transition:background-color .15s}.buttons-module_link-button-icon__llX8m:not(:disabled):hover:after{background-color:rgba(0,0,0,.1)}.buttons-module_link-button-icon__llX8m:not(:disabled).buttons-module_twitter__9sRaz{background-color:#1da1f2}.buttons-module_link-button-icon__llX8m:not(:disabled).buttons-module_spotify__-fiKQ{background-color:#1db954}.buttons-module_link-button-icon__llX8m:not(:disabled).buttons-module_discord__I-YjZ{background-color:#7289da}.buttons-module_link-button-icon__llX8m:not(:disabled).buttons-module_tiktok__a80-0{background-color:#000}.buttons-module_link-button-icon__llX8m:not(:disabled).buttons-module_telegram__ExOTS{background-color:#08c}.buttons-module_link-button-icon__llX8m .buttons-module_icon-container__Q5bI1{align-items:center;display:flex;flex:1;height:100%;justify-content:center;position:relative;width:100%}.buttons-module_link-button-icon__llX8m .buttons-module_icon-container__Q5bI1>svg{fill:#fff!important;height:1.5rem;width:1.5rem}.buttons-module_link-button-icon__llX8m .buttons-module_icon-container__Q5bI1>svg path{fill:#fff!important}.buttons-module_link-button-icon__llX8m .buttons-module_camp-logo__slNl0{align-items:center;background-color:#fff;border-radius:50%;bottom:-.5rem;box-sizing:border-box;display:flex;height:1.5rem;justify-content:center;position:absolute;right:-.5rem;width:1.5rem}.buttons-module_link-button-icon__llX8m .buttons-module_camp-logo__slNl0 svg{height:1.1rem;width:1.1rem}.buttons-module_link-button-icon__llX8m:disabled .buttons-module_camp-logo__slNl0 svg path,.buttons-module_not-linked__ua4va svg path{fill:#b8b8b8!important}.buttons-module_file-upload-container__le7Cg{align-items:center;border:2px dashed #ccc;border-radius:.75rem;box-sizing:border-box;color:#777;cursor:pointer;display:flex;flex-direction:column;justify-content:center;max-width:100%;min-height:12rem;min-width:0;padding:1rem;position:relative;text-align:center;transition:background-color .2s,border-color .2s;width:100%}.buttons-module_file-upload-container__le7Cg:hover{border-color:#e2e2e2}.buttons-module_file-upload-container__le7Cg.buttons-module_dragging__cfggZ{background-color:#f9f9f9;border-color:#ff6f00}.buttons-module_file-upload-container__le7Cg.buttons-module_dragging__cfggZ .buttons-module_file-preview__yuM5i{opacity:.2;transition:opacity .2s}.buttons-module_file-upload-container__le7Cg.buttons-module_file-selected__YY6ms{background-color:#f9f9f9;border:none;height:auto;min-height:auto;padding:0}.buttons-module_file-input__gbD5T{display:none}.buttons-module_selected-file-container__E1AXM{align-items:center;display:flex;flex-direction:column;gap:.25rem;height:100%;justify-content:space-between;max-width:100%;position:relative;width:100%}.buttons-module_remove-file-button__Q1FMa{border:1px solid #ff6f00;border-radius:.5rem;color:#fff;color:#ff6f00;cursor:pointer;font-size:.875rem;padding:.5rem;text-align:center;transition:background-color .2s}.buttons-module_remove-file-button__Q1FMa:hover{background-color:#cc4e02;border-color:#cc4e02;color:#fff;cursor:pointer}.buttons-module_upload-file-button__vTwWd{background-color:#ff6f00;border:none;border-radius:.5rem;color:#fff;cursor:pointer;font-size:.875rem;padding:.5rem;text-align:center;transition:background-color .2s;width:100%}.buttons-module_upload-file-button__vTwWd:hover{background-color:#cc4e02;cursor:pointer}.buttons-module_file-preview__yuM5i{border-radius:.5rem;max-height:8rem;max-width:100%}.buttons-module_file-preview-text__80Ju0{color:#333;font-size:.875rem;margin-bottom:.5rem}.buttons-module_file-name__3iskR{color:#333;font-size:.875rem;max-width:100%;min-height:-moz-fit-content;min-height:fit-content;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.buttons-module_upload-buttons__3SAw6{align-items:center;display:flex;gap:.25rem;justify-content:space-between;width:100%}.buttons-module_upload-buttons__3SAw6 .buttons-module_upload-file-button__vTwWd{flex-grow:1}.buttons-module_upload-buttons__3SAw6 .buttons-module_remove-file-button__Q1FMa{flex-grow:0}.buttons-module_accepted-types__Ys-D2{color:#777;font-size:.875rem;font-style:italic;margin-top:.5rem}.buttons-module_loading-bar-container__nrgPX{background-color:#e0e0e0;border-radius:4px;height:8px;margin-top:8px;overflow:hidden;width:100%}.buttons-module_loading-bar__IUAg1{background-color:#ff6f00;height:100%;transition:width .3s ease}\n/*# sourceMappingURL=data:application/json;base64,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QUVGLENBQ0EsZ0RBQ0Usd0JBQXlCLENBQ3pCLGNBQ0YsQ0FFQSxvQ0FHRSxtQkFBcUIsQ0FEckIsZUFBZ0IsQ0FEaEIsY0FHRixDQUVBLHlDQUVFLFVBQVcsQ0FEWCxpQkFBbUIsQ0FFbkIsbUJBQ0YsQ0FFQSxpQ0FFRSxVQUFXLENBRFgsaUJBQW1CLENBTW5CLGNBQWUsQ0FEZiwyQkFBdUIsQ0FBdkIsc0JBQXVCLENBRnZCLGVBQWdCLENBQ2hCLHNCQUF1QixDQUZ2QixrQkFLRixDQUVBLHNDQUtFLGtCQUFtQixDQUpuQixZQUFhLENBQ2IsVUFBWSxDQUVaLDZCQUE4QixDQUQ5QixVQUdGLENBRUEsZ0ZBQ0UsV0FDRixDQUVBLGdGQUNFLFdBQ0YsQ0FFQSxzQ0FFRSxVQUFXLENBRFgsaUJBQW1CLENBR25CLGlCQUFrQixDQURsQixnQkFFRixDQUVBLDZDQUdFLHdCQUF5QixDQUN6QixpQkFBa0IsQ0FGbEIsVUFBVyxDQUlYLGNBQWUsQ0FEZixlQUFnQixDQUpoQixVQU1GLENBRUEsbUNBRUUsd0JBQXlCLENBRHpCLFdBQVksQ0FFWix5QkFDRiIsImZpbGUiOiJidXR0b25zLm1vZHVsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuY29ubmVjdC1idXR0b24ge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY2ZjAwO1xyXG4gIGNvbG9yOiB3aGl0ZTtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgYm9yZGVyLXJhZGl1czogMC43NXJlbTtcclxuICBwYWRkaW5nLWlubGluZTogMi41cmVtO1xyXG4gIHBhZGRpbmctbGVmdDogNXJlbTtcclxuICBoZWlnaHQ6IDIuNzVyZW07XHJcbiAgbGluZS1oZWlnaHQ6IDEuMzMzcmVtO1xyXG4gIGZvbnQtc2l6ZTogMXJlbTtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIHdpZHRoOiAxMnJlbTtcclxuICBmb250LWZhbWlseTogXCJTYXRvc2hpXCIsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LFxyXG4gICAgXCJTZWdvZSBVSVwiLCBSb2JvdG8sIE94eWdlbiwgVWJ1bnR1LCBDYW50YXJlbGwsIFwiT3BlbiBTYW5zXCIsIFwiSGVsdmV0aWNhIE5ldWVcIixcclxuICAgIHNhbnMtc2VyaWY7XHJcbiAgYm94LXNoYWRvdzogaHNsYSgwLCAwJSwgMTAwJSwgMC4xNSkgMCAycHggMCBpbnNldCxcclxuICAgIHJnYmEoMCwgMCwgMCwgMC4wNSkgMCAtMnB4IDRweCBpbnNldCwgcmdiYSg0NiwgNTQsIDgwLCAwLjA3NSkgMCAxcHggMXB4O1xyXG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXM7XHJcbn1cclxuXHJcbi5jb25uZWN0LWJ1dHRvbiAuYnV0dG9uLWljb24ge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB0b3A6IDUwJTtcclxuICBsZWZ0OiAwO1xyXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcclxuICB3aWR0aDogM3JlbTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgbWFyZ2luLXJpZ2h0OiAwLjVyZW07XHJcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjc1KTtcclxuICBib3gtc2hhZG93OiBoc2xhKDAsIDAlLCAxMDAlLCAwLjE1KSAwIDJweCAwIGluc2V0LFxyXG4gICAgcmdiYSgwLCAwLCAwLCAwLjA1KSAwIC0ycHggNHB4IGluc2V0O1xyXG4gIGRpc3BsYXk6IGdyaWQ7XHJcbiAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcclxuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAuNzVyZW0gMCAwIDAuNzVyZW07XHJcbn1cclxuXHJcbi5jb25uZWN0LWJ1dHRvbiAuYnV0dG9uLWljb24gc3ZnIHtcclxuICB3aWR0aDogMS4yNXJlbTtcclxuICBoZWlnaHQ6IDEuMjVyZW07XHJcbn1cclxuXHJcbi5jb25uZWN0LWJ1dHRvbjpob3ZlciB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NjNGUwMjtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgYm9yZGVyLWNvbG9yOiAjY2M0ZTAyO1xyXG59XHJcblxyXG4uY29ubmVjdC1idXR0b246aG92ZXIgLmJ1dHRvbi1pY29uIHtcclxuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNjc1KTtcclxufVxyXG5cclxuLmNvbm5lY3QtYnV0dG9uOmZvY3VzIHtcclxuICBvdXRsaW5lOiBub25lO1xyXG59XHJcblxyXG4uY29ubmVjdC1idXR0b246ZGlzYWJsZWQge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNjY2M7XHJcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcclxufVxyXG5cclxuLnByb3ZpZGVyLWJ1dHRvbiB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBwYWRkaW5nOiAwLjVyZW07XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcclxuICBib3JkZXItcmFkaXVzOiAwLjVyZW07XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZlZmVmZTtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxuICBnYXA6IDAuNXJlbTtcclxuICB3aWR0aDogMTAwJTtcclxuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzO1xyXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xyXG59XHJcblxyXG4ucHJvdmlkZXItYnV0dG9uOmZvY3VzIHtcclxuICBvdXRsaW5lOiAxcHggc29saWQgIzQzYjdjNDtcclxufVxyXG5cclxuLnByb3ZpZGVyLWJ1dHRvbjpob3ZlciB7XHJcbiAgYm9yZGVyLWNvbG9yOiAjNDNiN2M0O1xyXG59XHJcblxyXG4ucHJvdmlkZXItYnV0dG9uOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLnByb3ZpZGVyLWJ1dHRvbiBpbWcge1xyXG4gIHdpZHRoOiAycmVtO1xyXG4gIGhlaWdodDogMnJlbTtcclxufVxyXG5cclxuLnByb3ZpZGVyLWJ1dHRvbiAucHJvdmlkZXItaWNvbiB7XHJcbiAgYm9yZGVyLXJhZGl1czogMC4ycmVtO1xyXG59XHJcblxyXG4ucHJvdmlkZXItYnV0dG9uIHNwYW4ge1xyXG4gIG1hcmdpbi1sZWZ0OiAwLjVyZW07XHJcbiAgbGluZS1oZWlnaHQ6IDFyZW07XHJcbn1cclxuXHJcbi5wcm92aWRlci1idXR0b24gc3Bhbi5wcm92aWRlci1uYW1lIHtcclxuICBjb2xvcjogIzMzMztcclxuICBmb250LXNpemU6IDAuODc1cmVtO1xyXG59XHJcblxyXG4ucHJvdmlkZXItYnV0dG9uIHNwYW4ucHJvdmlkZXItbGFiZWwge1xyXG4gIGNvbG9yOiAjNzc3O1xyXG4gIGZvbnQtc2l6ZTogMC43cmVtO1xyXG59XHJcblxyXG4vKiBcImRlZmF1bHRcIiB2YXJpYW50ICovXHJcbi5saW5rLWJ1dHRvbi1kZWZhdWx0IHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgd2lkdGg6IDdyZW07XHJcbiAgaGVpZ2h0OiAyLjZyZW07XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNmYwMDtcclxuICBib3JkZXItcmFkaXVzOiAwLjc1cmVtO1xyXG4gIGJveC1zaGFkb3c6IGhzbGEoMCwgMCUsIDEwMCUsIDAuMTUpIDAgMnB4IDAgaW5zZXQsXHJcbiAgICByZ2JhKDAsIDAsIDAsIDAuMDUpIDAgLTJweCA0cHggaW5zZXQsIHJnYmEoNDYsIDU0LCA4MCwgMC4wNzUpIDAgMXB4IDFweDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi5saW5rLWJ1dHRvbi1kZWZhdWx0OmRpc2FibGVkIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjhiOGI4O1xyXG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbn1cclxuXHJcbi5saW5rLWJ1dHRvbi1kZWZhdWx0OjphZnRlciB7XHJcbiAgY29udGVudDogXCJcIjtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgdG9wOiAwO1xyXG4gIGxlZnQ6IDA7XHJcbiAgcmlnaHQ6IDA7XHJcbiAgYm90dG9tOiAwO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTtcclxuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzO1xyXG59XHJcblxyXG4ubGluay1idXR0b24tZGVmYXVsdDpkaXNhYmxlZDo6YWZ0ZXIge1xyXG4gIGNvbnRlbnQ6IFwiTm90IGNvbm5lY3RlZFwiO1xyXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgdG9wOiAtMi43cmVtO1xyXG4gIGxlZnQ6IDA7XHJcbiAgcmlnaHQ6IDA7XHJcbiAgaGVpZ2h0OiAycmVtO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAuMzVyZW07XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjM1KTtcclxuICBjb2xvcjogd2hpdGU7XHJcbiAgZGlzcGxheTogZ3JpZDtcclxuICBwbGFjZS1pdGVtczogY2VudGVyO1xyXG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcclxuICBwYWRkaW5nOiAwLjI1cmVtO1xyXG4gIG9wYWNpdHk6IDA7XHJcbiAgdHJhbnNpdGlvbjogYWxsIDAuMjVzO1xyXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMC41cmVtKTtcclxuICB1c2VyLXNlbGVjdDogbm9uZTtcclxufVxyXG5cclxuLmxpbmstYnV0dG9uLWRlZmF1bHQ6ZGlzYWJsZWQ6aG92ZXI6OmFmdGVyIHtcclxuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xyXG4gIG9wYWNpdHk6IDE7XHJcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xyXG59XHJcblxyXG4ubGluay1idXR0b24tZGVmYXVsdDpub3QoOmRpc2FibGVkKTpob3Zlcjo6YWZ0ZXIge1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xKTtcclxufVxyXG5cclxuLmxpbmstYnV0dG9uLWRlZmF1bHQ6bm90KDpkaXNhYmxlZCkudHdpdHRlciB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYTFmMjtcclxufVxyXG5cclxuLmxpbmstYnV0dG9uLWRlZmF1bHQ6bm90KDpkaXNhYmxlZCkuc3BvdGlmeSB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1NDtcclxufVxyXG5cclxuLmxpbmstYnV0dG9uLWRlZmF1bHQ6bm90KDpkaXNhYmxlZCkuZGlzY29yZCB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzcyODlkYTtcclxufVxyXG5cclxuLmxpbmstYnV0dG9uLWRlZmF1bHQ6bm90KDpkaXNhYmxlZCkudGlrdG9rIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwO1xyXG59XHJcblxyXG4ubGluay1idXR0b24tZGVmYXVsdDpub3QoOmRpc2FibGVkKS50ZWxlZ3JhbSB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwODhjYztcclxufVxyXG5cclxuLmxpbmstYnV0dG9uLWRlZmF1bHQgLmJ1dHRvbi1jb250YWluZXIge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcclxuICBnYXA6IDAuNXJlbTtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIHBhZGRpbmc6IDAuNXJlbTtcclxufVxyXG5cclxuLmJ1dHRvbi1jb250YWluZXIgLnNvY2lhbC1pY29uIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIHdpZHRoOiAxLjVyZW07XHJcbiAgaGVpZ2h0OiAxLjVyZW07XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBjb2xvcjogd2hpdGU7XHJcbn1cclxuXHJcbi5idXR0b24tY29udGFpbmVyIC5zb2NpYWwtaWNvbiBzdmcge1xyXG4gIHdpZHRoOiAxLjVyZW07XHJcbiAgaGVpZ2h0OiAxLjVyZW07XHJcbiAgZmlsbDogd2hpdGUgIWltcG9ydGFudDtcclxufVxyXG5cclxuLmJ1dHRvbi1jb250YWluZXIgLnNvY2lhbC1pY29uIHN2ZyBwYXRoIHtcclxuICBmaWxsOiB3aGl0ZSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4uYnV0dG9uLWNvbnRhaW5lciAubGluay1pY29uIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIHdpZHRoOiAxLjI1cmVtO1xyXG4gIGhlaWdodDogMS4yNXJlbTtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7XHJcbn1cclxuXHJcbi5idXR0b24tY29udGFpbmVyIC5jYW1wLWxvZ28ge1xyXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICB3aWR0aDogMS41cmVtO1xyXG4gIGhlaWdodDogMS41cmVtO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gIHBhZGRpbmc6IDAuMTVyZW07XHJcbn1cclxuXHJcbi5saW5rLWJ1dHRvbi1kZWZhdWx0OmRpc2FibGVkIC5idXR0b24tY29udGFpbmVyIC5jYW1wLWxvZ28gc3ZnIHBhdGgge1xyXG4gIGZpbGw6ICNiOGI4YjggIWltcG9ydGFudDtcclxufVxyXG5cclxuLyogXCJpY29uXCIgdmFyaWFudCAqL1xyXG4ubGluay1idXR0b24taWNvbiB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgbWluLXdpZHRoOiAzcmVtO1xyXG4gIG1pbi1oZWlnaHQ6IDNyZW07XHJcbiAgd2lkdGg6IDNyZW07XHJcbiAgaGVpZ2h0OiAzcmVtO1xyXG4gIGJvcmRlcjogbm9uZTtcclxuICBwYWRkaW5nOiAwcmVtO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjZmMDA7XHJcbiAgYm9yZGVyLXJhZGl1czogMC43NXJlbTtcclxuICBib3gtc2hhZG93OiBoc2xhKDAsIDAlLCAxMDAlLCAwLjE1KSAwIDJweCAwIGluc2V0LFxyXG4gICAgcmdiYSgwLCAwLCAwLCAwLjA1KSAwIC0ycHggNHB4IGluc2V0LCByZ2JhKDQ2LCA1NCwgODAsIDAuMDc1KSAwIDFweCAxcHg7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4ubGluay1idXR0b24taWNvbjpkaXNhYmxlZCB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2I4YjhiODtcclxuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG59XHJcblxyXG4ubGluay1idXR0b24taWNvbjpkaXNhYmxlZDo6YWZ0ZXIge1xyXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgY29udGVudDogXCJOb3QgY29ubmVjdGVkXCI7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHRvcDogLTIuN3JlbTtcclxuICBsZWZ0OiAtMXJlbTtcclxuICByaWdodDogLTFyZW07XHJcbiAgaGVpZ2h0OiBmaXQtY29udGVudDtcclxuICBib3JkZXItcmFkaXVzOiAwLjM1cmVtO1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zNSk7XHJcbiAgY29sb3I6IHdoaXRlO1xyXG4gIGRpc3BsYXk6IGdyaWQ7XHJcbiAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcclxuICBmb250LXNpemU6IDAuNzVyZW07XHJcbiAgcGFkZGluZzogMC4yNXJlbTtcclxuICBvcGFjaXR5OiAwO1xyXG4gIHRyYW5zaXRpb246IGFsbCAwLjI1cztcclxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTAuNXJlbSk7XHJcbn1cclxuXHJcbi5saW5rLWJ1dHRvbi1pY29uOmRpc2FibGVkOmhvdmVyOjphZnRlciB7XHJcbiAgb3BhY2l0eTogMTtcclxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XHJcbn1cclxuXHJcbi5saW5rLWJ1dHRvbi1pY29uOjphZnRlciB7XHJcbiAgY29udGVudDogXCJcIjtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgdG9wOiAwO1xyXG4gIGxlZnQ6IDA7XHJcbiAgcmlnaHQ6IDA7XHJcbiAgYm90dG9tOiAwO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTtcclxuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzO1xyXG59XHJcblxyXG4ubGluay1idXR0b24taWNvbjpub3QoOmRpc2FibGVkKTpob3Zlcjo6YWZ0ZXIge1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xKTtcclxufVxyXG5cclxuLmxpbmstYnV0dG9uLWljb246bm90KDpkaXNhYmxlZCkudHdpdHRlciB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYTFmMjtcclxufVxyXG5cclxuLmxpbmstYnV0dG9uLWljb246bm90KDpkaXNhYmxlZCkuc3BvdGlmeSB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1NDtcclxufVxyXG5cclxuLmxpbmstYnV0dG9uLWljb246bm90KDpkaXNhYmxlZCkuZGlzY29yZCB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzcyODlkYTtcclxufVxyXG5cclxuLmxpbmstYnV0dG9uLWljb246bm90KDpkaXNhYmxlZCkudGlrdG9rIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwO1xyXG59XHJcblxyXG4ubGluay1idXR0b24taWNvbjpub3QoOmRpc2FibGVkKS50ZWxlZ3JhbSB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwODhjYztcclxufVxyXG5cclxuLmxpbmstYnV0dG9uLWljb24gLmljb24tY29udGFpbmVyIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgZmxleDogMTtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG59XHJcblxyXG4ubGluay1idXR0b24taWNvbiAuaWNvbi1jb250YWluZXIgPiBzdmcge1xyXG4gIHdpZHRoOiAxLjVyZW07XHJcbiAgaGVpZ2h0OiAxLjVyZW07XHJcbiAgZmlsbDogd2hpdGUgIWltcG9ydGFudDtcclxufVxyXG5cclxuLmxpbmstYnV0dG9uLWljb24gLmljb24tY29udGFpbmVyID4gc3ZnIHBhdGgge1xyXG4gIGZpbGw6IHdoaXRlICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5saW5rLWJ1dHRvbi1pY29uIC5jYW1wLWxvZ28ge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgd2lkdGg6IDEuNXJlbTtcclxuICBoZWlnaHQ6IDEuNXJlbTtcclxuICByaWdodDogLTAuNXJlbTtcclxuICBib3R0b206IC0wLjVyZW07XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcclxuICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbn1cclxuXHJcbi5saW5rLWJ1dHRvbi1pY29uIC5jYW1wLWxvZ28gc3ZnIHtcclxuICB3aWR0aDogMS4xcmVtO1xyXG4gIGhlaWdodDogMS4xcmVtO1xyXG59XHJcblxyXG4ubGluay1idXR0b24taWNvbjpkaXNhYmxlZCAuY2FtcC1sb2dvIHN2ZyBwYXRoIHtcclxuICBmaWxsOiAjYjhiOGI4ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5ub3QtbGlua2VkIHN2ZyBwYXRoIHtcclxuICBmaWxsOiAjYjhiOGI4ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5maWxlLXVwbG9hZC1jb250YWluZXIge1xyXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgYm9yZGVyOiAycHggZGFzaGVkICNjY2M7XHJcbiAgYm9yZGVyLXJhZGl1czogMC43NXJlbTtcclxuICBwYWRkaW5nOiAxcmVtO1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICBjb2xvcjogIzc3NztcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzLCBib3JkZXItY29sb3IgMC4ycztcclxuICB3aWR0aDogMTAwJTtcclxuICBtaW4td2lkdGg6IDA7XHJcbiAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gIG1pbi1oZWlnaHQ6IDEycmVtO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxufVxyXG5cclxuLmZpbGUtdXBsb2FkLWNvbnRhaW5lcjpob3ZlciB7XHJcbiAgYm9yZGVyLWNvbG9yOiAjZTJlMmUyO1xyXG59XHJcblxyXG4uZmlsZS11cGxvYWQtY29udGFpbmVyLmRyYWdnaW5nIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjlmOWY5O1xyXG4gIGJvcmRlci1jb2xvcjogI2ZmNmYwMDtcclxufVxyXG5cclxuLmZpbGUtdXBsb2FkLWNvbnRhaW5lci5kcmFnZ2luZyAuZmlsZS1wcmV2aWV3IHtcclxuICBvcGFjaXR5OiAwLjI7XHJcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzO1xyXG59XHJcblxyXG4uZmlsZS11cGxvYWQtY29udGFpbmVyLmZpbGUtc2VsZWN0ZWQge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNmOWY5Zjk7XHJcbiAgYm9yZGVyOiBub25lO1xyXG4gIHBhZGRpbmc6IDA7XHJcbiAgaGVpZ2h0OiBhdXRvO1xyXG4gIG1pbi1oZWlnaHQ6IGF1dG87XHJcbn1cclxuXHJcbi5maWxlLWlucHV0IHtcclxuICBkaXNwbGF5OiBub25lO1xyXG59XHJcblxyXG4uc2VsZWN0ZWQtZmlsZS1jb250YWluZXIge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogMTAwJTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIG1heC13aWR0aDogMTAwJTtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBnYXA6IDAuMjVyZW07XHJcbn1cclxuXHJcbi5yZW1vdmUtZmlsZS1idXR0b24ge1xyXG4gIGNvbG9yOiB3aGl0ZTtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjZmY2ZjAwO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcclxuICBwYWRkaW5nOiAwLjVyZW07XHJcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzO1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICBjb2xvcjogI2ZmNmYwMDtcclxufVxyXG5cclxuLnJlbW92ZS1maWxlLWJ1dHRvbjpob3ZlciB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NjNGUwMjtcclxuICBib3JkZXItY29sb3I6ICNjYzRlMDI7XHJcbiAgY29sb3I6IHdoaXRlO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLnVwbG9hZC1maWxlLWJ1dHRvbiB7XHJcbiAgY29sb3I6IHdoaXRlO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjZmMDA7XHJcbiAgYm9yZGVyOiBub25lO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcclxuICBwYWRkaW5nOiAwLjVyZW07XHJcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxufVxyXG4udXBsb2FkLWZpbGUtYnV0dG9uOmhvdmVyIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2M0ZTAyO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLmZpbGUtcHJldmlldyB7XHJcbiAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gIG1heC1oZWlnaHQ6IDhyZW07XHJcbiAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xyXG59XHJcblxyXG4uZmlsZS1wcmV2aWV3LXRleHQge1xyXG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XHJcbiAgY29sb3I6ICMzMzM7XHJcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xyXG59XHJcblxyXG4uZmlsZS1uYW1lIHtcclxuICBmb250LXNpemU6IDAuODc1cmVtO1xyXG4gIGNvbG9yOiAjMzMzO1xyXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxuICBtaW4taGVpZ2h0OiBmaXQtY29udGVudDtcclxuICBtYXgtd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi51cGxvYWQtYnV0dG9ucyB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBnYXA6IDAuMjVyZW07XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbn1cclxuXHJcbi51cGxvYWQtYnV0dG9ucyAudXBsb2FkLWZpbGUtYnV0dG9uIHtcclxuICBmbGV4LWdyb3c6IDE7XHJcbn1cclxuXHJcbi51cGxvYWQtYnV0dG9ucyAucmVtb3ZlLWZpbGUtYnV0dG9uIHtcclxuICBmbGV4LWdyb3c6IDA7XHJcbn1cclxuXHJcbi5hY2NlcHRlZC10eXBlcyB7XHJcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcclxuICBjb2xvcjogIzc3NztcclxuICBtYXJnaW4tdG9wOiAwLjVyZW07XHJcbiAgZm9udC1zdHlsZTogaXRhbGljO1xyXG59XHJcblxyXG4ubG9hZGluZy1iYXItY29udGFpbmVyIHtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDhweDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTBlMGUwO1xyXG4gIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIG1hcmdpbi10b3A6IDhweDtcclxufVxyXG5cclxuLmxvYWRpbmctYmFyIHtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNmYwMDtcclxuICB0cmFuc2l0aW9uOiB3aWR0aCAwLjNzIGVhc2U7XHJcbn1cclxuIl19 */";
985
- var buttonStyles = {"connect-button":"buttons-module_connect-button__CJhUa","button-icon":"buttons-module_button-icon__JM4-2","provider-button":"buttons-module_provider-button__6JY7s","provider-icon":"buttons-module_provider-icon__MOhr8","provider-name":"buttons-module_provider-name__tHWO2","provider-label":"buttons-module_provider-label__CEGRr","link-button-default":"buttons-module_link-button-default__EcKUT","twitter":"buttons-module_twitter__9sRaz","spotify":"buttons-module_spotify__-fiKQ","discord":"buttons-module_discord__I-YjZ","tiktok":"buttons-module_tiktok__a80-0","telegram":"buttons-module_telegram__ExOTS","button-container":"buttons-module_button-container__-oPqd","social-icon":"buttons-module_social-icon__DPdPe","link-icon":"buttons-module_link-icon__8V8FP","camp-logo":"buttons-module_camp-logo__slNl0","link-button-icon":"buttons-module_link-button-icon__llX8m","icon-container":"buttons-module_icon-container__Q5bI1","not-linked":"buttons-module_not-linked__ua4va","file-upload-container":"buttons-module_file-upload-container__le7Cg","dragging":"buttons-module_dragging__cfggZ","file-preview":"buttons-module_file-preview__yuM5i","file-selected":"buttons-module_file-selected__YY6ms","file-input":"buttons-module_file-input__gbD5T","selected-file-container":"buttons-module_selected-file-container__E1AXM","remove-file-button":"buttons-module_remove-file-button__Q1FMa","upload-file-button":"buttons-module_upload-file-button__vTwWd","file-preview-text":"buttons-module_file-preview-text__80Ju0","file-name":"buttons-module_file-name__3iskR","upload-buttons":"buttons-module_upload-buttons__3SAw6","accepted-types":"buttons-module_accepted-types__Ys-D2","loading-bar-container":"buttons-module_loading-bar-container__nrgPX","loading-bar":"buttons-module_loading-bar__IUAg1"};
3543
+ /**
3544
+ * Enum representing the status of data in the system.
3545
+ * * - ACTIVE: The data is currently active and available.
3546
+ * * - PENDING_DELETE: The data is scheduled for deletion but not yet removed.
3547
+ * * - DELETED: The data has been deleted and is no longer available.
3548
+ */
3549
+ var DataStatus;
3550
+ (function (DataStatus) {
3551
+ DataStatus[DataStatus["ACTIVE"] = 0] = "ACTIVE";
3552
+ DataStatus[DataStatus["PENDING_DELETE"] = 1] = "PENDING_DELETE";
3553
+ DataStatus[DataStatus["DELETED"] = 2] = "DELETED";
3554
+ })(DataStatus || (DataStatus = {}));
3555
+ /**
3556
+ * Creates license terms for a digital asset.
3557
+ * @param price The price of the asset in wei.
3558
+ * @param duration The duration of the license in seconds.
3559
+ * @param royaltyBps The royalty percentage in basis points (0-10000).
3560
+ * @param paymentToken The address of the payment token (ERC20 / address(0) for native currency).
3561
+ * @returns The created license terms.
3562
+ */
3563
+ const createLicenseTerms = (price, duration, royaltyBps, paymentToken) => {
3564
+ return {
3565
+ price,
3566
+ duration,
3567
+ royaltyBps,
3568
+ paymentToken,
3569
+ };
3570
+ };
3571
+
3572
+ var css_248z = ".buttons-module_connect-button__CJhUa{background-color:#ff6f00;border:none;border-radius:.75rem;box-shadow:inset 0 2px 0 hsla(0,0%,100%,.15),inset 0 -2px 4px rgba(0,0,0,.05),0 1px 1px rgba(46,54,80,.075);color:#fff;font-family:Satoshi,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;font-size:1rem;font-weight:600;height:2.75rem;line-height:1.333rem;padding-inline:2.5rem;padding-left:5rem;position:relative;transition:background-color .15s;width:12rem}.buttons-module_connect-button__CJhUa .buttons-module_button-icon__JM4-2{background:hsla(0,0%,100%,.75);border-radius:.75rem 0 0 .75rem;box-shadow:inset 0 2px 0 hsla(0,0%,100%,.15),inset 0 -2px 4px rgba(0,0,0,.05);display:grid;height:100%;left:0;margin-right:.5rem;place-items:center;position:absolute;top:50%;transform:translateY(-50%);transition:background-color .15s;width:3rem}.buttons-module_connect-button__CJhUa .buttons-module_button-icon__JM4-2 svg{height:1.25rem;width:1.25rem}.buttons-module_connect-button__CJhUa:hover{background-color:#cc4e02;border-color:#cc4e02;cursor:pointer}.buttons-module_connect-button__CJhUa:hover .buttons-module_button-icon__JM4-2{background:hsla(0,0%,100%,.675)}.buttons-module_connect-button__CJhUa:focus{outline:none}.buttons-module_connect-button__CJhUa:disabled{background-color:#ccc;cursor:not-allowed}.buttons-module_provider-button__6JY7s{align-items:center;background-color:#fefefe;border:1px solid #ddd;border-radius:.5rem;display:flex;font-family:inherit;gap:.5rem;justify-content:flex-start;padding:.5rem;transition:background-color .15s;width:100%}.buttons-module_provider-button__6JY7s:focus{outline:1px solid #43b7c4}.buttons-module_provider-button__6JY7s:hover{border-color:#43b7c4}.buttons-module_provider-button__6JY7s:hover:not(:disabled){background-color:#ddd;cursor:pointer}.buttons-module_provider-button__6JY7s img{height:2rem;width:2rem}.buttons-module_provider-button__6JY7s .buttons-module_provider-icon__MOhr8{border-radius:.2rem}.buttons-module_provider-button__6JY7s span{line-height:1rem;margin-left:.5rem}.buttons-module_provider-button__6JY7s span.buttons-module_provider-name__tHWO2{color:#333;font-size:.875rem}.buttons-module_provider-button__6JY7s span.buttons-module_provider-label__CEGRr{color:#777;font-size:.7rem}.buttons-module_link-button-default__EcKUT{background-color:#ff6f00;border:none;border-radius:.75rem;box-shadow:inset 0 2px 0 hsla(0,0%,100%,.15),inset 0 -2px 4px rgba(0,0,0,.05),0 1px 1px rgba(46,54,80,.075);box-sizing:border-box;cursor:pointer;height:2.6rem;position:relative;width:7rem}.buttons-module_link-button-default__EcKUT:disabled{background-color:#b8b8b8;cursor:not-allowed}.buttons-module_link-button-default__EcKUT:after{background-color:transparent;border-radius:.75rem;bottom:0;content:\"\";left:0;position:absolute;right:0;top:0;transition:background-color .15s}.buttons-module_link-button-default__EcKUT:disabled:after{background-color:rgba(0,0,0,.35);border-radius:.35rem;color:#fff;content:\"Not connected\";display:grid;font-size:.75rem;height:2rem;left:0;opacity:0;padding:.25rem;place-items:center;position:absolute;right:0;top:-2.7rem;transform:translateY(-.5rem);transition:all .25s;-webkit-user-select:none;-moz-user-select:none;user-select:none;visibility:hidden}.buttons-module_link-button-default__EcKUT:disabled:hover:after{opacity:1;transform:translateY(0);visibility:visible}.buttons-module_link-button-default__EcKUT:not(:disabled):hover:after{background-color:rgba(0,0,0,.1)}.buttons-module_link-button-default__EcKUT:not(:disabled).buttons-module_twitter__9sRaz{background-color:#1da1f2}.buttons-module_link-button-default__EcKUT:not(:disabled).buttons-module_spotify__-fiKQ{background-color:#1db954}.buttons-module_link-button-default__EcKUT:not(:disabled).buttons-module_discord__I-YjZ{background-color:#7289da}.buttons-module_link-button-default__EcKUT:not(:disabled).buttons-module_tiktok__a80-0{background-color:#000}.buttons-module_link-button-default__EcKUT:not(:disabled).buttons-module_telegram__ExOTS{background-color:#08c}.buttons-module_link-button-default__EcKUT .buttons-module_button-container__-oPqd{align-items:center;display:flex;flex-direction:row;gap:.5rem;justify-content:center;padding:.5rem}.buttons-module_button-container__-oPqd .buttons-module_social-icon__DPdPe{align-items:center;color:#fff;display:flex;height:1.5rem;justify-content:center;width:1.5rem}.buttons-module_button-container__-oPqd .buttons-module_social-icon__DPdPe svg{fill:#fff!important;height:1.5rem;width:1.5rem}.buttons-module_button-container__-oPqd .buttons-module_social-icon__DPdPe svg path{fill:#fff!important}.buttons-module_button-container__-oPqd .buttons-module_link-icon__8V8FP{align-items:center;color:hsla(0,0%,100%,.8);display:flex;height:1.25rem;justify-content:center;width:1.25rem}.buttons-module_button-container__-oPqd .buttons-module_camp-logo__slNl0{align-items:center;background-color:#fff;border-radius:50%;box-sizing:border-box;display:flex;height:1.5rem;justify-content:center;padding:.15rem;width:1.5rem}.buttons-module_link-button-default__EcKUT:disabled .buttons-module_button-container__-oPqd .buttons-module_camp-logo__slNl0 svg path{fill:#b8b8b8!important}.buttons-module_link-button-icon__llX8m{background-color:#ff6f00;border:none;border-radius:.75rem;box-shadow:inset 0 2px 0 hsla(0,0%,100%,.15),inset 0 -2px 4px rgba(0,0,0,.05),0 1px 1px rgba(46,54,80,.075);box-sizing:border-box;cursor:pointer;height:3rem;min-height:3rem;min-width:3rem;padding:0;position:relative;width:3rem}.buttons-module_link-button-icon__llX8m:disabled{background-color:#b8b8b8;cursor:not-allowed}.buttons-module_link-button-icon__llX8m:disabled:after{background-color:rgba(0,0,0,.35);border-radius:.35rem;box-sizing:border-box;color:#fff;content:\"Not connected\";display:grid;font-size:.75rem;height:-moz-fit-content;height:fit-content;left:-1rem;opacity:0;padding:.25rem;place-items:center;position:absolute;right:-1rem;top:-2.7rem;transform:translateY(-.5rem);transition:all .25s}.buttons-module_link-button-icon__llX8m:disabled:hover:after{opacity:1;transform:translateY(0)}.buttons-module_link-button-icon__llX8m:after{background-color:transparent;border-radius:.75rem;bottom:0;content:\"\";left:0;position:absolute;right:0;top:0;transition:background-color .15s}.buttons-module_link-button-icon__llX8m:not(:disabled):hover:after{background-color:rgba(0,0,0,.1)}.buttons-module_link-button-icon__llX8m:not(:disabled).buttons-module_twitter__9sRaz{background-color:#1da1f2}.buttons-module_link-button-icon__llX8m:not(:disabled).buttons-module_spotify__-fiKQ{background-color:#1db954}.buttons-module_link-button-icon__llX8m:not(:disabled).buttons-module_discord__I-YjZ{background-color:#7289da}.buttons-module_link-button-icon__llX8m:not(:disabled).buttons-module_tiktok__a80-0{background-color:#000}.buttons-module_link-button-icon__llX8m:not(:disabled).buttons-module_telegram__ExOTS{background-color:#08c}.buttons-module_link-button-icon__llX8m .buttons-module_icon-container__Q5bI1{align-items:center;display:flex;flex:1;height:100%;justify-content:center;position:relative;width:100%}.buttons-module_link-button-icon__llX8m .buttons-module_icon-container__Q5bI1>svg{fill:#fff!important;height:1.5rem;width:1.5rem}.buttons-module_link-button-icon__llX8m .buttons-module_icon-container__Q5bI1>svg path{fill:#fff!important}.buttons-module_link-button-icon__llX8m .buttons-module_camp-logo__slNl0{align-items:center;background-color:#fff;border-radius:50%;bottom:-.5rem;box-sizing:border-box;display:flex;height:1.5rem;justify-content:center;position:absolute;right:-.5rem;width:1.5rem}.buttons-module_link-button-icon__llX8m .buttons-module_camp-logo__slNl0 svg{height:1.1rem;width:1.1rem}.buttons-module_link-button-icon__llX8m:disabled .buttons-module_camp-logo__slNl0 svg path,.buttons-module_not-linked__ua4va svg path{fill:#b8b8b8!important}.buttons-module_file-upload-container__le7Cg{align-items:center;border:2px dashed #ccc;border-radius:.75rem;box-sizing:border-box;color:#777;cursor:pointer;display:flex;flex-direction:column;justify-content:center;max-width:100%;min-height:12rem;min-width:0;padding:1rem;position:relative;text-align:center;transition:background-color .2s,border-color .2s;width:100%}.buttons-module_file-upload-container__le7Cg:hover{border-color:#e2e2e2}.buttons-module_file-upload-container__le7Cg.buttons-module_dragging__cfggZ{background-color:#f9f9f9;border-color:#ff6f00}.buttons-module_file-upload-container__le7Cg.buttons-module_dragging__cfggZ .buttons-module_file-preview__yuM5i{opacity:.2;transition:opacity .2s}.buttons-module_file-upload-container__le7Cg.buttons-module_file-selected__YY6ms{background-color:#f9f9f9;border:none;height:auto;min-height:auto;padding:0}.buttons-module_file-input__gbD5T{display:none}.buttons-module_selected-file-container__E1AXM{align-items:center;display:flex;flex-direction:column;gap:.25rem;height:100%;justify-content:space-between;max-width:100%;position:relative;width:100%}.buttons-module_remove-file-button__Q1FMa{border:1px solid #ff6f00;border-radius:.5rem;color:#fff;color:#ff6f00;cursor:pointer;font-size:.875rem;padding:.5rem;text-align:center;transition:background-color .2s}.buttons-module_remove-file-button__Q1FMa:hover{background-color:#cc4e02;border-color:#cc4e02;color:#fff;cursor:pointer}.buttons-module_upload-file-button__vTwWd{background-color:#ff6f00;border:none;border-radius:.5rem;color:#fff;cursor:pointer;font-size:.875rem;padding:.5rem;text-align:center;transition:background-color .2s;width:100%}.buttons-module_upload-file-button__vTwWd:hover{background-color:#cc4e02;cursor:pointer}.buttons-module_file-preview__yuM5i{border-radius:.5rem;max-height:8rem;max-width:100%}.buttons-module_file-preview-text__80Ju0{color:#333;font-size:.875rem;margin-bottom:.5rem}.buttons-module_file-name__3iskR{color:#333;font-size:.875rem;max-width:100%;min-height:-moz-fit-content;min-height:fit-content;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.buttons-module_upload-buttons__3SAw6{align-items:center;display:flex;gap:.25rem;justify-content:space-between;width:100%}.buttons-module_upload-buttons__3SAw6 .buttons-module_upload-file-button__vTwWd{flex-grow:1}.buttons-module_upload-buttons__3SAw6 .buttons-module_remove-file-button__Q1FMa{flex-grow:0}.buttons-module_accepted-types__Ys-D2{color:#777;font-size:.875rem;font-style:italic;margin-top:.5rem}.buttons-module_loading-bar-container__nrgPX{background-color:#e0e0e0;border-radius:4px;height:8px;margin-top:8px;overflow:hidden;width:100%}.buttons-module_loading-bar__IUAg1{background-color:#ff6f00;height:100%;transition:width .3s ease}.buttons-module_date-picker__V6gRM{display:flex;flex-direction:column;font-family:sans-serif;gap:6px;width:100%}.buttons-module_date-picker__V6gRM input{border:1px solid #ccc;border-radius:4px;font-size:14px;padding:6px 10px}.buttons-module_percentage-slider__M84tC{display:flex;flex-direction:row;font-family:sans-serif;gap:8px;justify-content:space-between;width:100%}.buttons-module_percentage-slider__M84tC input[type=range]{width:100%}.buttons-module_percentage-slider__M84tC label{min-width:50px}.buttons-module_price-input-container__teIRS{display:flex;flex-direction:column;font-family:sans-serif;gap:6px;width:100%}.buttons-module_price-input__22j0n{border:1px solid #ccc;border-radius:4px;font-family:sans-serif;padding:6px 10px}.buttons-module_duration-input-container__Rh9Na{display:flex;flex-direction:column;font-family:sans-serif;gap:6px;width:100%}.buttons-module_duration-input__-gt3p{border:1px solid #ccc;border-radius:4px;font-family:sans-serif;padding:6px 10px}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1dHRvbnMubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzQ0FFRSx3QkFBeUIsQ0FFekIsV0FBWSxDQUNaLG9CQUFzQixDQVd0QiwyR0FDeUUsQ0FkekUsVUFBWSxDQVVaLDBJQUVZLENBTFosY0FBZSxDQUNmLGVBQWdCLENBSGhCLGNBQWUsQ0FDZixvQkFBcUIsQ0FIckIscUJBQXNCLENBQ3RCLGlCQUFrQixDQU5sQixpQkFBa0IsQ0FpQmxCLGdDQUFrQyxDQU5sQyxXQU9GLENBRUEseUVBUUUsOEJBQXFDLENBTXJDLCtCQUFrQyxDQUxsQyw2RUFDc0MsQ0FDdEMsWUFBYSxDQUxiLFdBQVksQ0FIWixNQUFPLENBSVAsa0JBQW9CLENBS3BCLGtCQUFtQixDQVhuQixpQkFBa0IsQ0FDbEIsT0FBUSxDQUVSLDBCQUEyQixDQVMzQixnQ0FBa0MsQ0FSbEMsVUFVRixDQUVBLDZFQUVFLGNBQWUsQ0FEZixhQUVGLENBRUEsNENBQ0Usd0JBQXlCLENBRXpCLG9CQUFxQixDQURyQixjQUVGLENBRUEsK0VBQ0UsK0JBQ0YsQ0FFQSw0Q0FDRSxZQUNGLENBRUEsK0NBQ0UscUJBQXNCLENBQ3RCLGtCQUNGLENBRUEsdUNBTUUsa0JBQW1CLENBRG5CLHdCQUF5QixDQUZ6QixxQkFBc0IsQ0FDdEIsbUJBQXFCLENBSHJCLFlBQWEsQ0FVYixtQkFBb0IsQ0FIcEIsU0FBVyxDQURYLDBCQUEyQixDQUwzQixhQUFlLENBUWYsZ0NBQWtDLENBRGxDLFVBR0YsQ0FFQSw2Q0FDRSx5QkFDRixDQUVBLDZDQUNFLG9CQUNGLENBRUEsNERBQ0UscUJBQXNCLENBQ3RCLGNBQ0YsQ0FFQSwyQ0FFRSxXQUFZLENBRFosVUFFRixDQUVBLDRFQUNFLG1CQUNGLENBRUEsNENBRUUsZ0JBQWlCLENBRGpCLGlCQUVGLENBRUEsZ0ZBQ0UsVUFBVyxDQUNYLGlCQUNGLENBRUEsaUZBQ0UsVUFBVyxDQUNYLGVBQ0YsQ0FHQSwyQ0FNRSx3QkFBeUIsQ0FIekIsV0FBWSxDQUlaLG9CQUFzQixDQUN0QiwyR0FDeUUsQ0FQekUscUJBQXNCLENBUXRCLGNBQWUsQ0FMZixhQUFjLENBSmQsaUJBQWtCLENBR2xCLFVBT0YsQ0FFQSxvREFDRSx3QkFBeUIsQ0FDekIsa0JBQ0YsQ0FFQSxpREFRRSw0QkFBa0MsQ0FEbEMsb0JBQXNCLENBRHRCLFFBQVMsQ0FMVCxVQUFXLENBR1gsTUFBTyxDQUZQLGlCQUFrQixDQUdsQixPQUFRLENBRlIsS0FBTSxDQU1OLGdDQUNGLENBRUEsMERBU0UsZ0NBQXFDLENBRHJDLG9CQUFzQixDQUV0QixVQUFZLENBVFosdUJBQXdCLENBVXhCLFlBQWEsQ0FFYixnQkFBa0IsQ0FObEIsV0FBWSxDQUZaLE1BQU8sQ0FVUCxTQUFVLENBRFYsY0FBZ0IsQ0FGaEIsa0JBQW1CLENBVG5CLGlCQUFrQixDQUdsQixPQUFRLENBRlIsV0FBWSxDQWFaLDRCQUE4QixDQUQ5QixtQkFBcUIsQ0FFckIsd0JBQWlCLENBQWpCLHFCQUFpQixDQUFqQixnQkFBaUIsQ0FoQmpCLGlCQWlCRixDQUVBLGdFQUVFLFNBQVUsQ0FDVix1QkFBd0IsQ0FGeEIsa0JBR0YsQ0FFQSxzRUFDRSwrQkFDRixDQUVBLHdGQUNFLHdCQUNGLENBRUEsd0ZBQ0Usd0JBQ0YsQ0FFQSx3RkFDRSx3QkFDRixDQUVBLHVGQUNFLHFCQUNGLENBRUEseUZBQ0UscUJBQ0YsQ0FFQSxtRkFLRSxrQkFBbUIsQ0FKbkIsWUFBYSxDQUNiLGtCQUFtQixDQUNuQixTQUFXLENBQ1gsc0JBQXVCLENBRXZCLGFBQ0YsQ0FFQSwyRUFJRSxrQkFBbUIsQ0FFbkIsVUFBWSxDQUxaLFlBQWEsQ0FFYixhQUFjLENBRWQsc0JBQXVCLENBSHZCLFlBS0YsQ0FFQSwrRUFHRSxtQkFBc0IsQ0FEdEIsYUFBYyxDQURkLFlBR0YsQ0FFQSxvRkFDRSxtQkFDRixDQUVBLHlFQUlFLGtCQUFtQixDQUVuQix3QkFBK0IsQ0FML0IsWUFBYSxDQUViLGNBQWUsQ0FFZixzQkFBdUIsQ0FIdkIsYUFLRixDQUVBLHlFQUtFLGtCQUFtQixDQUVuQixxQkFBdUIsQ0FDdkIsaUJBQWtCLENBUGxCLHFCQUFzQixDQUN0QixZQUFhLENBRWIsYUFBYyxDQUVkLHNCQUF1QixDQUd2QixjQUFnQixDQU5oQixZQU9GLENBRUEsc0lBQ0Usc0JBQ0YsQ0FHQSx3Q0FTRSx3QkFBeUIsQ0FGekIsV0FBWSxDQUdaLG9CQUFzQixDQUN0QiwyR0FDeUUsQ0FWekUscUJBQXNCLENBV3RCLGNBQWUsQ0FQZixXQUFZLENBRlosZUFBZ0IsQ0FEaEIsY0FBZSxDQUtmLFNBQWEsQ0FQYixpQkFBa0IsQ0FJbEIsVUFTRixDQUVBLGlEQUNFLHdCQUF5QixDQUN6QixrQkFDRixDQUVBLHVEQVNFLGdDQUFxQyxDQURyQyxvQkFBc0IsQ0FQdEIscUJBQXNCLENBU3RCLFVBQVksQ0FSWix1QkFBd0IsQ0FTeEIsWUFBYSxDQUViLGdCQUFrQixDQU5sQix1QkFBbUIsQ0FBbkIsa0JBQW1CLENBRm5CLFVBQVcsQ0FVWCxTQUFVLENBRFYsY0FBZ0IsQ0FGaEIsa0JBQW1CLENBVG5CLGlCQUFrQixDQUdsQixXQUFZLENBRlosV0FBWSxDQWFaLDRCQUE4QixDQUQ5QixtQkFFRixDQUVBLDZEQUNFLFNBQVUsQ0FDVix1QkFDRixDQUVBLDhDQVFFLDRCQUFrQyxDQURsQyxvQkFBc0IsQ0FEdEIsUUFBUyxDQUxULFVBQVcsQ0FHWCxNQUFPLENBRlAsaUJBQWtCLENBR2xCLE9BQVEsQ0FGUixLQUFNLENBTU4sZ0NBQ0YsQ0FFQSxtRUFDRSwrQkFDRixDQUVBLHFGQUNFLHdCQUNGLENBRUEscUZBQ0Usd0JBQ0YsQ0FFQSxxRkFDRSx3QkFDRixDQUVBLG9GQUNFLHFCQUNGLENBRUEsc0ZBQ0UscUJBQ0YsQ0FFQSw4RUFNRSxrQkFBbUIsQ0FKbkIsWUFBYSxDQUdiLE1BQU8sQ0FEUCxXQUFZLENBR1osc0JBQXVCLENBTnZCLGlCQUFrQixDQUVsQixVQUtGLENBRUEsa0ZBR0UsbUJBQXNCLENBRHRCLGFBQWMsQ0FEZCxZQUdGLENBRUEsdUZBQ0UsbUJBQ0YsQ0FFQSx5RUFRRSxrQkFBbUIsQ0FFbkIscUJBQXVCLENBQ3ZCLGlCQUFrQixDQUpsQixhQUFlLENBTGYscUJBQXNCLENBQ3RCLFlBQWEsQ0FFYixhQUFjLENBSWQsc0JBQXVCLENBUnZCLGlCQUFrQixDQUtsQixZQUFjLENBRmQsWUFRRixDQUVBLDZFQUVFLGFBQWMsQ0FEZCxZQUVGLENBTUEsc0lBQ0Usc0JBQ0YsQ0FFQSw2Q0FnQkUsa0JBQW1CLENBZG5CLHNCQUF1QixDQUN2QixvQkFBc0IsQ0FGdEIscUJBQXNCLENBS3RCLFVBQVcsQ0FDWCxjQUFlLENBTWYsWUFBYSxDQUNiLHFCQUFzQixDQUN0QixzQkFBdUIsQ0FKdkIsY0FBZSxDQUNmLGdCQUFpQixDQUZqQixXQUFZLENBTlosWUFBYSxDQWFiLGlCQUFrQixDQVpsQixpQkFBa0IsQ0FHbEIsZ0RBQW9ELENBQ3BELFVBU0YsQ0FFQSxtREFDRSxvQkFDRixDQUVBLDRFQUNFLHdCQUF5QixDQUN6QixvQkFDRixDQUVBLGdIQUNFLFVBQVksQ0FDWixzQkFDRixDQUVBLGlGQUNFLHdCQUF5QixDQUN6QixXQUFZLENBRVosV0FBWSxDQUNaLGVBQWdCLENBRmhCLFNBR0YsQ0FFQSxrQ0FDRSxZQUNGLENBRUEsK0NBT0Usa0JBQW1CLENBSm5CLFlBQWEsQ0FFYixxQkFBc0IsQ0FJdEIsVUFBWSxDQVBaLFdBQVksQ0FJWiw2QkFBOEIsQ0FGOUIsY0FBZSxDQUlmLGlCQUFrQixDQVBsQixVQVNGLENBRUEsMENBRUUsd0JBQXlCLENBQ3pCLG1CQUFxQixDQUZyQixVQUFZLENBUVosYUFBYyxDQUhkLGNBQWUsQ0FEZixpQkFBbUIsQ0FEbkIsYUFBZSxDQUlmLGlCQUFrQixDQURsQiwrQkFHRixDQUVBLGdEQUNFLHdCQUF5QixDQUN6QixvQkFBcUIsQ0FDckIsVUFBWSxDQUNaLGNBQ0YsQ0FFQSwwQ0FFRSx3QkFBeUIsQ0FDekIsV0FBWSxDQUNaLG1CQUFxQixDQUhyQixVQUFZLENBTVosY0FBZSxDQURmLGlCQUFtQixDQURuQixhQUFlLENBS2YsaUJBQWtCLENBRmxCLCtCQUFpQyxDQUNqQyxVQUVGLENBQ0EsZ0RBQ0Usd0JBQXlCLENBQ3pCLGNBQ0YsQ0FFQSxvQ0FHRSxtQkFBcUIsQ0FEckIsZUFBZ0IsQ0FEaEIsY0FHRixDQUVBLHlDQUVFLFVBQVcsQ0FEWCxpQkFBbUIsQ0FFbkIsbUJBQ0YsQ0FFQSxpQ0FFRSxVQUFXLENBRFgsaUJBQW1CLENBTW5CLGNBQWUsQ0FEZiwyQkFBdUIsQ0FBdkIsc0JBQXVCLENBRnZCLGVBQWdCLENBQ2hCLHNCQUF1QixDQUZ2QixrQkFLRixDQUVBLHNDQUtFLGtCQUFtQixDQUpuQixZQUFhLENBQ2IsVUFBWSxDQUVaLDZCQUE4QixDQUQ5QixVQUdGLENBRUEsZ0ZBQ0UsV0FDRixDQUVBLGdGQUNFLFdBQ0YsQ0FFQSxzQ0FFRSxVQUFXLENBRFgsaUJBQW1CLENBR25CLGlCQUFrQixDQURsQixnQkFFRixDQUVBLDZDQUdFLHdCQUF5QixDQUN6QixpQkFBa0IsQ0FGbEIsVUFBVyxDQUlYLGNBQWUsQ0FEZixlQUFnQixDQUpoQixVQU1GLENBRUEsbUNBRUUsd0JBQXlCLENBRHpCLFdBQVksQ0FFWix5QkFDRixDQUVBLG1DQUVFLFlBQWEsQ0FDYixxQkFBc0IsQ0FFdEIsc0JBQXVCLENBRHZCLE9BQVEsQ0FIUixVQUtGLENBRUEseUNBR0UscUJBQXNCLENBQ3RCLGlCQUFrQixDQUZsQixjQUFlLENBRGYsZ0JBSUYsQ0FFQSx5Q0FFRSxZQUFhLENBQ2Isa0JBQW1CLENBRW5CLHNCQUF1QixDQUR2QixPQUFRLENBRVIsNkJBQThCLENBTDlCLFVBTUYsQ0FFQSwyREFDRSxVQUNGLENBRUEsK0NBQ0UsY0FDRixDQUVBLDZDQUVFLFlBQWEsQ0FDYixxQkFBc0IsQ0FFdEIsc0JBQXVCLENBRHZCLE9BQVEsQ0FIUixVQUtGLENBRUEsbUNBR0UscUJBQXNCLENBQ3RCLGlCQUFrQixDQUhsQixzQkFBdUIsQ0FDdkIsZ0JBR0YsQ0FHQSxnREFFRSxZQUFhLENBQ2IscUJBQXNCLENBRXRCLHNCQUF1QixDQUR2QixPQUFRLENBSFIsVUFLRixDQUVBLHNDQUdFLHFCQUFzQixDQUN0QixpQkFBa0IsQ0FIbEIsc0JBQXVCLENBQ3ZCLGdCQUdGIiwiZmlsZSI6ImJ1dHRvbnMubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5jb25uZWN0LWJ1dHRvbiB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjZmMDA7XHJcbiAgY29sb3I6IHdoaXRlO1xyXG4gIGJvcmRlcjogbm9uZTtcclxuICBib3JkZXItcmFkaXVzOiAwLjc1cmVtO1xyXG4gIHBhZGRpbmctaW5saW5lOiAyLjVyZW07XHJcbiAgcGFkZGluZy1sZWZ0OiA1cmVtO1xyXG4gIGhlaWdodDogMi43NXJlbTtcclxuICBsaW5lLWhlaWdodDogMS4zMzNyZW07XHJcbiAgZm9udC1zaXplOiAxcmVtO1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgd2lkdGg6IDEycmVtO1xyXG4gIGZvbnQtZmFtaWx5OiBcIlNhdG9zaGlcIiwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsXHJcbiAgICBcIlNlZ29lIFVJXCIsIFJvYm90bywgT3h5Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwgXCJPcGVuIFNhbnNcIiwgXCJIZWx2ZXRpY2EgTmV1ZVwiLFxyXG4gICAgc2Fucy1zZXJpZjtcclxuICBib3gtc2hhZG93OiBoc2xhKDAsIDAlLCAxMDAlLCAwLjE1KSAwIDJweCAwIGluc2V0LFxyXG4gICAgcmdiYSgwLCAwLCAwLCAwLjA1KSAwIC0ycHggNHB4IGluc2V0LCByZ2JhKDQ2LCA1NCwgODAsIDAuMDc1KSAwIDFweCAxcHg7XHJcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1cztcclxufVxyXG5cclxuLmNvbm5lY3QtYnV0dG9uIC5idXR0b24taWNvbiB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHRvcDogNTAlO1xyXG4gIGxlZnQ6IDA7XHJcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xyXG4gIHdpZHRoOiAzcmVtO1xyXG4gIGhlaWdodDogMTAwJTtcclxuICBtYXJnaW4tcmlnaHQ6IDAuNXJlbTtcclxuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzUpO1xyXG4gIGJveC1zaGFkb3c6IGhzbGEoMCwgMCUsIDEwMCUsIDAuMTUpIDAgMnB4IDAgaW5zZXQsXHJcbiAgICByZ2JhKDAsIDAsIDAsIDAuMDUpIDAgLTJweCA0cHggaW5zZXQ7XHJcbiAgZGlzcGxheTogZ3JpZDtcclxuICBwbGFjZS1pdGVtczogY2VudGVyO1xyXG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXM7XHJcbiAgYm9yZGVyLXJhZGl1czogMC43NXJlbSAwIDAgMC43NXJlbTtcclxufVxyXG5cclxuLmNvbm5lY3QtYnV0dG9uIC5idXR0b24taWNvbiBzdmcge1xyXG4gIHdpZHRoOiAxLjI1cmVtO1xyXG4gIGhlaWdodDogMS4yNXJlbTtcclxufVxyXG5cclxuLmNvbm5lY3QtYnV0dG9uOmhvdmVyIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2M0ZTAyO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBib3JkZXItY29sb3I6ICNjYzRlMDI7XHJcbn1cclxuXHJcbi5jb25uZWN0LWJ1dHRvbjpob3ZlciAuYnV0dG9uLWljb24ge1xyXG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42NzUpO1xyXG59XHJcblxyXG4uY29ubmVjdC1idXR0b246Zm9jdXMge1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbn1cclxuXHJcbi5jb25uZWN0LWJ1dHRvbjpkaXNhYmxlZCB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NjYztcclxuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG59XHJcblxyXG4ucHJvdmlkZXItYnV0dG9uIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIHBhZGRpbmc6IDAuNXJlbTtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmVmZWZlO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xyXG4gIGdhcDogMC41cmVtO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXM7XHJcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XHJcbn1cclxuXHJcbi5wcm92aWRlci1idXR0b246Zm9jdXMge1xyXG4gIG91dGxpbmU6IDFweCBzb2xpZCAjNDNiN2M0O1xyXG59XHJcblxyXG4ucHJvdmlkZXItYnV0dG9uOmhvdmVyIHtcclxuICBib3JkZXItY29sb3I6ICM0M2I3YzQ7XHJcbn1cclxuXHJcbi5wcm92aWRlci1idXR0b246aG92ZXI6bm90KDpkaXNhYmxlZCkge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNkZGQ7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4ucHJvdmlkZXItYnV0dG9uIGltZyB7XHJcbiAgd2lkdGg6IDJyZW07XHJcbiAgaGVpZ2h0OiAycmVtO1xyXG59XHJcblxyXG4ucHJvdmlkZXItYnV0dG9uIC5wcm92aWRlci1pY29uIHtcclxuICBib3JkZXItcmFkaXVzOiAwLjJyZW07XHJcbn1cclxuXHJcbi5wcm92aWRlci1idXR0b24gc3BhbiB7XHJcbiAgbWFyZ2luLWxlZnQ6IDAuNXJlbTtcclxuICBsaW5lLWhlaWdodDogMXJlbTtcclxufVxyXG5cclxuLnByb3ZpZGVyLWJ1dHRvbiBzcGFuLnByb3ZpZGVyLW5hbWUge1xyXG4gIGNvbG9yOiAjMzMzO1xyXG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XHJcbn1cclxuXHJcbi5wcm92aWRlci1idXR0b24gc3Bhbi5wcm92aWRlci1sYWJlbCB7XHJcbiAgY29sb3I6ICM3Nzc7XHJcbiAgZm9udC1zaXplOiAwLjdyZW07XHJcbn1cclxuXHJcbi8qIFwiZGVmYXVsdFwiIHZhcmlhbnQgKi9cclxuLmxpbmstYnV0dG9uLWRlZmF1bHQge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gIGJvcmRlcjogbm9uZTtcclxuICB3aWR0aDogN3JlbTtcclxuICBoZWlnaHQ6IDIuNnJlbTtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY2ZjAwO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07XHJcbiAgYm94LXNoYWRvdzogaHNsYSgwLCAwJSwgMTAwJSwgMC4xNSkgMCAycHggMCBpbnNldCxcclxuICAgIHJnYmEoMCwgMCwgMCwgMC4wNSkgMCAtMnB4IDRweCBpbnNldCwgcmdiYSg0NiwgNTQsIDgwLCAwLjA3NSkgMCAxcHggMXB4O1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLmxpbmstYnV0dG9uLWRlZmF1bHQ6ZGlzYWJsZWQge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNiOGI4Yjg7XHJcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcclxufVxyXG5cclxuLmxpbmstYnV0dG9uLWRlZmF1bHQ6OmFmdGVyIHtcclxuICBjb250ZW50OiBcIlwiO1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB0b3A6IDA7XHJcbiAgbGVmdDogMDtcclxuICByaWdodDogMDtcclxuICBib3R0b206IDA7XHJcbiAgYm9yZGVyLXJhZGl1czogMC43NXJlbTtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApO1xyXG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXM7XHJcbn1cclxuXHJcbi5saW5rLWJ1dHRvbi1kZWZhdWx0OmRpc2FibGVkOjphZnRlciB7XHJcbiAgY29udGVudDogXCJOb3QgY29ubmVjdGVkXCI7XHJcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB0b3A6IC0yLjdyZW07XHJcbiAgbGVmdDogMDtcclxuICByaWdodDogMDtcclxuICBoZWlnaHQ6IDJyZW07XHJcbiAgYm9yZGVyLXJhZGl1czogMC4zNXJlbTtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzUpO1xyXG4gIGNvbG9yOiB3aGl0ZTtcclxuICBkaXNwbGF5OiBncmlkO1xyXG4gIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XHJcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xyXG4gIHBhZGRpbmc6IDAuMjVyZW07XHJcbiAgb3BhY2l0eTogMDtcclxuICB0cmFuc2l0aW9uOiBhbGwgMC4yNXM7XHJcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0wLjVyZW0pO1xyXG4gIHVzZXItc2VsZWN0OiBub25lO1xyXG59XHJcblxyXG4ubGluay1idXR0b24tZGVmYXVsdDpkaXNhYmxlZDpob3Zlcjo6YWZ0ZXIge1xyXG4gIHZpc2liaWxpdHk6IHZpc2libGU7XHJcbiAgb3BhY2l0eTogMTtcclxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XHJcbn1cclxuXHJcbi5saW5rLWJ1dHRvbi1kZWZhdWx0Om5vdCg6ZGlzYWJsZWQpOmhvdmVyOjphZnRlciB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjEpO1xyXG59XHJcblxyXG4ubGluay1idXR0b24tZGVmYXVsdDpub3QoOmRpc2FibGVkKS50d2l0dGVyIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRhMWYyO1xyXG59XHJcblxyXG4ubGluay1idXR0b24tZGVmYXVsdDpub3QoOmRpc2FibGVkKS5zcG90aWZ5IHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTU0O1xyXG59XHJcblxyXG4ubGluay1idXR0b24tZGVmYXVsdDpub3QoOmRpc2FibGVkKS5kaXNjb3JkIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzI4OWRhO1xyXG59XHJcblxyXG4ubGluay1idXR0b24tZGVmYXVsdDpub3QoOmRpc2FibGVkKS50aWt0b2sge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDA7XHJcbn1cclxuXHJcbi5saW5rLWJ1dHRvbi1kZWZhdWx0Om5vdCg6ZGlzYWJsZWQpLnRlbGVncmFtIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA4OGNjO1xyXG59XHJcblxyXG4ubGluay1idXR0b24tZGVmYXVsdCAuYnV0dG9uLWNvbnRhaW5lciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gIGdhcDogMC41cmVtO1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgcGFkZGluZzogMC41cmVtO1xyXG59XHJcblxyXG4uYnV0dG9uLWNvbnRhaW5lciAuc29jaWFsLWljb24ge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgd2lkdGg6IDEuNXJlbTtcclxuICBoZWlnaHQ6IDEuNXJlbTtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIGNvbG9yOiB3aGl0ZTtcclxufVxyXG5cclxuLmJ1dHRvbi1jb250YWluZXIgLnNvY2lhbC1pY29uIHN2ZyB7XHJcbiAgd2lkdGg6IDEuNXJlbTtcclxuICBoZWlnaHQ6IDEuNXJlbTtcclxuICBmaWxsOiB3aGl0ZSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4uYnV0dG9uLWNvbnRhaW5lciAuc29jaWFsLWljb24gc3ZnIHBhdGgge1xyXG4gIGZpbGw6IHdoaXRlICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5idXR0b24tY29udGFpbmVyIC5saW5rLWljb24ge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgd2lkdGg6IDEuMjVyZW07XHJcbiAgaGVpZ2h0OiAxLjI1cmVtO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTtcclxufVxyXG5cclxuLmJ1dHRvbi1jb250YWluZXIgLmNhbXAtbG9nbyB7XHJcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIHdpZHRoOiAxLjVyZW07XHJcbiAgaGVpZ2h0OiAxLjVyZW07XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcclxuICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgcGFkZGluZzogMC4xNXJlbTtcclxufVxyXG5cclxuLmxpbmstYnV0dG9uLWRlZmF1bHQ6ZGlzYWJsZWQgLmJ1dHRvbi1jb250YWluZXIgLmNhbXAtbG9nbyBzdmcgcGF0aCB7XHJcbiAgZmlsbDogI2I4YjhiOCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKiBcImljb25cIiB2YXJpYW50ICovXHJcbi5saW5rLWJ1dHRvbi1pY29uIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICBtaW4td2lkdGg6IDNyZW07XHJcbiAgbWluLWhlaWdodDogM3JlbTtcclxuICB3aWR0aDogM3JlbTtcclxuICBoZWlnaHQ6IDNyZW07XHJcbiAgYm9yZGVyOiBub25lO1xyXG4gIHBhZGRpbmc6IDByZW07XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNmYwMDtcclxuICBib3JkZXItcmFkaXVzOiAwLjc1cmVtO1xyXG4gIGJveC1zaGFkb3c6IGhzbGEoMCwgMCUsIDEwMCUsIDAuMTUpIDAgMnB4IDAgaW5zZXQsXHJcbiAgICByZ2JhKDAsIDAsIDAsIDAuMDUpIDAgLTJweCA0cHggaW5zZXQsIHJnYmEoNDYsIDU0LCA4MCwgMC4wNzUpIDAgMXB4IDFweDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi5saW5rLWJ1dHRvbi1pY29uOmRpc2FibGVkIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjhiOGI4O1xyXG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbn1cclxuXHJcbi5saW5rLWJ1dHRvbi1pY29uOmRpc2FibGVkOjphZnRlciB7XHJcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICBjb250ZW50OiBcIk5vdCBjb25uZWN0ZWRcIjtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgdG9wOiAtMi43cmVtO1xyXG4gIGxlZnQ6IC0xcmVtO1xyXG4gIHJpZ2h0OiAtMXJlbTtcclxuICBoZWlnaHQ6IGZpdC1jb250ZW50O1xyXG4gIGJvcmRlci1yYWRpdXM6IDAuMzVyZW07XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjM1KTtcclxuICBjb2xvcjogd2hpdGU7XHJcbiAgZGlzcGxheTogZ3JpZDtcclxuICBwbGFjZS1pdGVtczogY2VudGVyO1xyXG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcclxuICBwYWRkaW5nOiAwLjI1cmVtO1xyXG4gIG9wYWNpdHk6IDA7XHJcbiAgdHJhbnNpdGlvbjogYWxsIDAuMjVzO1xyXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMC41cmVtKTtcclxufVxyXG5cclxuLmxpbmstYnV0dG9uLWljb246ZGlzYWJsZWQ6aG92ZXI6OmFmdGVyIHtcclxuICBvcGFjaXR5OiAxO1xyXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcclxufVxyXG5cclxuLmxpbmstYnV0dG9uLWljb246OmFmdGVyIHtcclxuICBjb250ZW50OiBcIlwiO1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB0b3A6IDA7XHJcbiAgbGVmdDogMDtcclxuICByaWdodDogMDtcclxuICBib3R0b206IDA7XHJcbiAgYm9yZGVyLXJhZGl1czogMC43NXJlbTtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApO1xyXG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXM7XHJcbn1cclxuXHJcbi5saW5rLWJ1dHRvbi1pY29uOm5vdCg6ZGlzYWJsZWQpOmhvdmVyOjphZnRlciB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjEpO1xyXG59XHJcblxyXG4ubGluay1idXR0b24taWNvbjpub3QoOmRpc2FibGVkKS50d2l0dGVyIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRhMWYyO1xyXG59XHJcblxyXG4ubGluay1idXR0b24taWNvbjpub3QoOmRpc2FibGVkKS5zcG90aWZ5IHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTU0O1xyXG59XHJcblxyXG4ubGluay1idXR0b24taWNvbjpub3QoOmRpc2FibGVkKS5kaXNjb3JkIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzI4OWRhO1xyXG59XHJcblxyXG4ubGluay1idXR0b24taWNvbjpub3QoOmRpc2FibGVkKS50aWt0b2sge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDA7XHJcbn1cclxuXHJcbi5saW5rLWJ1dHRvbi1pY29uOm5vdCg6ZGlzYWJsZWQpLnRlbGVncmFtIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA4OGNjO1xyXG59XHJcblxyXG4ubGluay1idXR0b24taWNvbiAuaWNvbi1jb250YWluZXIge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogMTAwJTtcclxuICBmbGV4OiAxO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbn1cclxuXHJcbi5saW5rLWJ1dHRvbi1pY29uIC5pY29uLWNvbnRhaW5lciA+IHN2ZyB7XHJcbiAgd2lkdGg6IDEuNXJlbTtcclxuICBoZWlnaHQ6IDEuNXJlbTtcclxuICBmaWxsOiB3aGl0ZSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4ubGluay1idXR0b24taWNvbiAuaWNvbi1jb250YWluZXIgPiBzdmcgcGF0aCB7XHJcbiAgZmlsbDogd2hpdGUgIWltcG9ydGFudDtcclxufVxyXG5cclxuLmxpbmstYnV0dG9uLWljb24gLmNhbXAtbG9nbyB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICB3aWR0aDogMS41cmVtO1xyXG4gIGhlaWdodDogMS41cmVtO1xyXG4gIHJpZ2h0OiAtMC41cmVtO1xyXG4gIGJvdHRvbTogLTAuNXJlbTtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xyXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcclxufVxyXG5cclxuLmxpbmstYnV0dG9uLWljb24gLmNhbXAtbG9nbyBzdmcge1xyXG4gIHdpZHRoOiAxLjFyZW07XHJcbiAgaGVpZ2h0OiAxLjFyZW07XHJcbn1cclxuXHJcbi5saW5rLWJ1dHRvbi1pY29uOmRpc2FibGVkIC5jYW1wLWxvZ28gc3ZnIHBhdGgge1xyXG4gIGZpbGw6ICNiOGI4YjggIWltcG9ydGFudDtcclxufVxyXG5cclxuLm5vdC1saW5rZWQgc3ZnIHBhdGgge1xyXG4gIGZpbGw6ICNiOGI4YjggIWltcG9ydGFudDtcclxufVxyXG5cclxuLmZpbGUtdXBsb2FkLWNvbnRhaW5lciB7XHJcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICBib3JkZXI6IDJweCBkYXNoZWQgI2NjYztcclxuICBib3JkZXItcmFkaXVzOiAwLjc1cmVtO1xyXG4gIHBhZGRpbmc6IDFyZW07XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIGNvbG9yOiAjNzc3O1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMnMsIGJvcmRlci1jb2xvciAwLjJzO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIG1pbi13aWR0aDogMDtcclxuICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgbWluLWhlaWdodDogMTJyZW07XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG59XHJcblxyXG4uZmlsZS11cGxvYWQtY29udGFpbmVyOmhvdmVyIHtcclxuICBib3JkZXItY29sb3I6ICNlMmUyZTI7XHJcbn1cclxuXHJcbi5maWxlLXVwbG9hZC1jb250YWluZXIuZHJhZ2dpbmcge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNmOWY5Zjk7XHJcbiAgYm9yZGVyLWNvbG9yOiAjZmY2ZjAwO1xyXG59XHJcblxyXG4uZmlsZS11cGxvYWQtY29udGFpbmVyLmRyYWdnaW5nIC5maWxlLXByZXZpZXcge1xyXG4gIG9wYWNpdHk6IDAuMjtcclxuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnM7XHJcbn1cclxuXHJcbi5maWxlLXVwbG9hZC1jb250YWluZXIuZmlsZS1zZWxlY3RlZCB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ZjlmOTtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgcGFkZGluZzogMDtcclxuICBoZWlnaHQ6IGF1dG87XHJcbiAgbWluLWhlaWdodDogYXV0bztcclxufVxyXG5cclxuLmZpbGUtaW5wdXQge1xyXG4gIGRpc3BsYXk6IG5vbmU7XHJcbn1cclxuXHJcbi5zZWxlY3RlZC1maWxlLWNvbnRhaW5lciB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGdhcDogMC4yNXJlbTtcclxufVxyXG5cclxuLnJlbW92ZS1maWxlLWJ1dHRvbiB7XHJcbiAgY29sb3I6IHdoaXRlO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNmZjZmMDA7XHJcbiAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xyXG4gIHBhZGRpbmc6IDAuNXJlbTtcclxuICBmb250LXNpemU6IDAuODc1cmVtO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMnM7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIGNvbG9yOiAjZmY2ZjAwO1xyXG59XHJcblxyXG4ucmVtb3ZlLWZpbGUtYnV0dG9uOmhvdmVyIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2M0ZTAyO1xyXG4gIGJvcmRlci1jb2xvcjogI2NjNGUwMjtcclxuICBjb2xvcjogd2hpdGU7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4udXBsb2FkLWZpbGUtYnV0dG9uIHtcclxuICBjb2xvcjogd2hpdGU7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNmYwMDtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xyXG4gIHBhZGRpbmc6IDAuNXJlbTtcclxuICBmb250LXNpemU6IDAuODc1cmVtO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMnM7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG59XHJcbi51cGxvYWQtZmlsZS1idXR0b246aG92ZXIge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNjYzRlMDI7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4uZmlsZS1wcmV2aWV3IHtcclxuICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgbWF4LWhlaWdodDogOHJlbTtcclxuICBib3JkZXItcmFkaXVzOiAwLjVyZW07XHJcbn1cclxuXHJcbi5maWxlLXByZXZpZXctdGV4dCB7XHJcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcclxuICBjb2xvcjogIzMzMztcclxuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XHJcbn1cclxuXHJcbi5maWxlLW5hbWUge1xyXG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XHJcbiAgY29sb3I6ICMzMzM7XHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gIG1pbi1oZWlnaHQ6IGZpdC1jb250ZW50O1xyXG4gIG1heC13aWR0aDogMTAwJTtcclxufVxyXG5cclxuLnVwbG9hZC1idXR0b25zIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGdhcDogMC4yNXJlbTtcclxuICB3aWR0aDogMTAwJTtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxufVxyXG5cclxuLnVwbG9hZC1idXR0b25zIC51cGxvYWQtZmlsZS1idXR0b24ge1xyXG4gIGZsZXgtZ3JvdzogMTtcclxufVxyXG5cclxuLnVwbG9hZC1idXR0b25zIC5yZW1vdmUtZmlsZS1idXR0b24ge1xyXG4gIGZsZXgtZ3JvdzogMDtcclxufVxyXG5cclxuLmFjY2VwdGVkLXR5cGVzIHtcclxuICBmb250LXNpemU6IDAuODc1cmVtO1xyXG4gIGNvbG9yOiAjNzc3O1xyXG4gIG1hcmdpbi10b3A6IDAuNXJlbTtcclxuICBmb250LXN0eWxlOiBpdGFsaWM7XHJcbn1cclxuXHJcbi5sb2FkaW5nLWJhci1jb250YWluZXIge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogOHB4O1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNlMGUwZTA7XHJcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgbWFyZ2luLXRvcDogOHB4O1xyXG59XHJcblxyXG4ubG9hZGluZy1iYXIge1xyXG4gIGhlaWdodDogMTAwJTtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY2ZjAwO1xyXG4gIHRyYW5zaXRpb246IHdpZHRoIDAuM3MgZWFzZTtcclxufVxyXG5cclxuLmRhdGUtcGlja2VyIHtcclxuICB3aWR0aDogMTAwJTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgZ2FwOiA2cHg7XHJcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7XHJcbn1cclxuXHJcbi5kYXRlLXBpY2tlciBpbnB1dCB7XHJcbiAgcGFkZGluZzogNnB4IDEwcHg7XHJcbiAgZm9udC1zaXplOiAxNHB4O1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XHJcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG59XHJcblxyXG4ucGVyY2VudGFnZS1zbGlkZXIge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcclxuICBnYXA6IDhweDtcclxuICBmb250LWZhbWlseTogc2Fucy1zZXJpZjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbn1cclxuXHJcbi5wZXJjZW50YWdlLXNsaWRlciBpbnB1dFt0eXBlPVwicmFuZ2VcIl0ge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4ucGVyY2VudGFnZS1zbGlkZXIgbGFiZWwge1xyXG4gIG1pbi13aWR0aDogNTBweDtcclxufVxyXG5cclxuLnByaWNlLWlucHV0LWNvbnRhaW5lciB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGdhcDogNnB4O1xyXG4gIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmO1xyXG59XHJcblxyXG4ucHJpY2UtaW5wdXQge1xyXG4gIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmO1xyXG4gIHBhZGRpbmc6IDZweCAxMHB4O1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XHJcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG59XHJcblxyXG5cclxuLmR1cmF0aW9uLWlucHV0LWNvbnRhaW5lciB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGdhcDogNnB4O1xyXG4gIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmO1xyXG59XHJcblxyXG4uZHVyYXRpb24taW5wdXQge1xyXG4gIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmO1xyXG4gIHBhZGRpbmc6IDZweCAxMHB4O1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XHJcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG59XHJcbiJdfQ== */";
3573
+ var buttonStyles = {"connect-button":"buttons-module_connect-button__CJhUa","button-icon":"buttons-module_button-icon__JM4-2","provider-button":"buttons-module_provider-button__6JY7s","provider-icon":"buttons-module_provider-icon__MOhr8","provider-name":"buttons-module_provider-name__tHWO2","provider-label":"buttons-module_provider-label__CEGRr","link-button-default":"buttons-module_link-button-default__EcKUT","twitter":"buttons-module_twitter__9sRaz","spotify":"buttons-module_spotify__-fiKQ","discord":"buttons-module_discord__I-YjZ","tiktok":"buttons-module_tiktok__a80-0","telegram":"buttons-module_telegram__ExOTS","button-container":"buttons-module_button-container__-oPqd","social-icon":"buttons-module_social-icon__DPdPe","link-icon":"buttons-module_link-icon__8V8FP","camp-logo":"buttons-module_camp-logo__slNl0","link-button-icon":"buttons-module_link-button-icon__llX8m","icon-container":"buttons-module_icon-container__Q5bI1","not-linked":"buttons-module_not-linked__ua4va","file-upload-container":"buttons-module_file-upload-container__le7Cg","dragging":"buttons-module_dragging__cfggZ","file-preview":"buttons-module_file-preview__yuM5i","file-selected":"buttons-module_file-selected__YY6ms","file-input":"buttons-module_file-input__gbD5T","selected-file-container":"buttons-module_selected-file-container__E1AXM","remove-file-button":"buttons-module_remove-file-button__Q1FMa","upload-file-button":"buttons-module_upload-file-button__vTwWd","file-preview-text":"buttons-module_file-preview-text__80Ju0","file-name":"buttons-module_file-name__3iskR","upload-buttons":"buttons-module_upload-buttons__3SAw6","accepted-types":"buttons-module_accepted-types__Ys-D2","loading-bar-container":"buttons-module_loading-bar-container__nrgPX","loading-bar":"buttons-module_loading-bar__IUAg1","date-picker":"buttons-module_date-picker__V6gRM","percentage-slider":"buttons-module_percentage-slider__M84tC","price-input-container":"buttons-module_price-input-container__teIRS","price-input":"buttons-module_price-input__22j0n","duration-input-container":"buttons-module_duration-input-container__Rh9Na","duration-input":"buttons-module_duration-input__-gt3p"};
986
3574
  styleInject(css_248z);
987
3575
 
988
3576
  /**
@@ -1138,6 +3726,19 @@ const LoadingBar = ({ progress }) => {
1138
3726
  return (React.createElement("div", { className: buttonStyles["loading-bar-container"] },
1139
3727
  React.createElement("div", { className: buttonStyles["loading-bar"], style: { width: `${progress}%` } })));
1140
3728
  };
3729
+ const PercentageSlider = ({ onChange, }) => {
3730
+ const [value, setValue] = useState(0);
3731
+ const handleChange = (e) => {
3732
+ const val = Number(e.target.value);
3733
+ setValue(val);
3734
+ onChange(val);
3735
+ };
3736
+ return (React.createElement("div", { className: buttonStyles["percentage-slider"] },
3737
+ React.createElement("input", { id: "slider", type: "range", min: "0", max: "100", value: value, onChange: handleChange }),
3738
+ React.createElement("label", { htmlFor: "slider" },
3739
+ value,
3740
+ "%")));
3741
+ };
1141
3742
  /**
1142
3743
  * The FileUpload component.
1143
3744
  * Provides a file upload field with drag-and-drop support.
@@ -1154,12 +3755,21 @@ const FileUpload = ({ onFileUpload, accept, maxFileSize, }) => {
1154
3755
  const [uploadProgress, setUploadProgress] = useState(0);
1155
3756
  const fileInputRef = useRef(null);
1156
3757
  const { addToast } = useToast();
3758
+ const [price, setPrice] = useState(BigInt(0)); // price in wei
3759
+ const [royaltyBps, setRoyaltyBps] = useState(0); // royalty basis points (0-10000)
3760
+ const [licenseDuration, setLicenseDuration] = useState(Math.floor(60 * 60 * 24 * 30) // 30 days in seconds
3761
+ );
1157
3762
  const handleUpload = () => __awaiter(void 0, void 0, void 0, function* () {
1158
3763
  var _a;
1159
3764
  if (selectedFile) {
1160
3765
  setIsUploading(true);
1161
3766
  try {
1162
- yield ((_a = auth === null || auth === void 0 ? void 0 : auth.origin) === null || _a === void 0 ? void 0 : _a.uploadFile(selectedFile, {
3767
+ const license = createLicenseTerms(price, // price in wei
3768
+ licenseDuration, // duration in seconds
3769
+ royaltyBps, // royalty basis points
3770
+ zeroAddress // payment token
3771
+ );
3772
+ const res = yield ((_a = auth === null || auth === void 0 ? void 0 : auth.origin) === null || _a === void 0 ? void 0 : _a.mintFile(selectedFile, license, {
1163
3773
  progressCallback(percent) {
1164
3774
  setUploadProgress(percent);
1165
3775
  },
@@ -1167,7 +3777,7 @@ const FileUpload = ({ onFileUpload, accept, maxFileSize, }) => {
1167
3777
  if (onFileUpload) {
1168
3778
  onFileUpload([selectedFile]);
1169
3779
  }
1170
- addToast("File uploaded successfully", "success", 5000);
3780
+ addToast(`File minted successfully. Token ID: ${res}`, "success", 5000);
1171
3781
  refetch();
1172
3782
  }
1173
3783
  catch (error) {
@@ -1259,10 +3869,24 @@ const FileUpload = ({ onFileUpload, accept, maxFileSize, }) => {
1259
3869
  renderFilePreview(),
1260
3870
  React.createElement("span", { className: buttonStyles["file-name"] }, selectedFile.name),
1261
3871
  isUploading && React.createElement(LoadingBar, { progress: uploadProgress }),
3872
+ React.createElement("div", { className: buttonStyles["price-input-container"] },
3873
+ React.createElement("input", { type: "number", placeholder: "Price in wei", className: buttonStyles["price-input"], value: price > 0 ? price.toString() : "", onChange: (e) => {
3874
+ const value = e.target.value;
3875
+ setPrice(value ? BigInt(value) : BigInt(0));
3876
+ } })),
3877
+ React.createElement("div", { className: buttonStyles["duration-input-container"] },
3878
+ React.createElement("input", { type: "number", placeholder: "License duration (seconds)", className: buttonStyles["duration-input"], value: licenseDuration > 0 ? licenseDuration.toString() : "", onChange: (e) => {
3879
+ const value = e.target.value;
3880
+ setLicenseDuration(value ? Number(value) : 0);
3881
+ } })),
3882
+ React.createElement(PercentageSlider, { onChange: (value) => {
3883
+ const royaltyBps = Math.round((value / 100) * 10000);
3884
+ setRoyaltyBps(royaltyBps);
3885
+ } }),
1262
3886
  React.createElement("div", { className: buttonStyles["upload-buttons"] },
1263
3887
  React.createElement("button", { className: buttonStyles["remove-file-button"], disabled: isUploading, onClick: handleRemoveFile },
1264
3888
  React.createElement(BinIcon, { w: "1rem", h: "1rem" })),
1265
- React.createElement("button", { className: buttonStyles["upload-file-button"], onClick: handleUpload, disabled: !selectedFile || isUploading }, "Upload")))) : (React.createElement("p", null,
3889
+ React.createElement("button", { className: buttonStyles["upload-file-button"], onClick: handleUpload, disabled: !selectedFile || isUploading }, "Mint")))) : (React.createElement("p", null,
1266
3890
  "Drag and drop your file here, or click to select a file.",
1267
3891
  React.createElement("br", null),
1268
3892
  accept && (React.createElement("span", { className: buttonStyles["accepted-types"] }, accept
@@ -1278,37 +3902,6 @@ const FileUpload = ({ onFileUpload, accept, maxFileSize, }) => {
1278
3902
  " MB"))))));
1279
3903
  };
1280
3904
 
1281
- var StorageABI = [
1282
- {
1283
- inputs: [
1284
- ],
1285
- name: "retrieve",
1286
- outputs: [
1287
- {
1288
- internalType: "uint256",
1289
- name: "",
1290
- type: "uint256"
1291
- }
1292
- ],
1293
- stateMutability: "view",
1294
- type: "function"
1295
- },
1296
- {
1297
- inputs: [
1298
- {
1299
- internalType: "uint256",
1300
- name: "num",
1301
- type: "uint256"
1302
- }
1303
- ],
1304
- name: "store",
1305
- outputs: [
1306
- ],
1307
- stateMutability: "nonpayable",
1308
- type: "function"
1309
- }
1310
- ];
1311
-
1312
3905
  /**
1313
3906
  * The Auth modal component.
1314
3907
  * @param { { setIsVisible: function, wcProvider: object, loading: boolean, onlyWagmi: boolean, defaultProvider: object } } props The props.
@@ -1856,43 +4449,6 @@ const LinkingModal = () => {
1856
4449
  flow === "telegram" && React.createElement(TelegramFlow, null))),
1857
4450
  React.createElement("a", { href: "https://campnetwork.xyz", className: styles["footer-text"], target: "_blank", rel: "noopener noreferrer", style: { marginTop: 0 } }, "Powered by Camp Network")))));
1858
4451
  };
1859
- /** demo */
1860
- const ContractInteraction = () => {
1861
- const { auth } = useContext(CampContext);
1862
- const [inputValue, setInputValue] = useState("");
1863
- const [loading, setLoading] = useState(false);
1864
- const { addToast: toast } = useToast();
1865
- const CONTRACT_ADDRESS = "0xcCB22CdA4857E1665dE3043FF77ff125c9E0A2A7";
1866
- const callContract = (methodName_1, params_1, ...args_1) => __awaiter(void 0, [methodName_1, params_1, ...args_1], void 0, function* (methodName, params, isWrite = false) {
1867
- if (!auth) {
1868
- toast("Auth instance not available", "error", 5000);
1869
- return;
1870
- }
1871
- try {
1872
- setLoading(true);
1873
- const result = yield auth.callContractMethod(CONTRACT_ADDRESS, StorageABI, methodName, params, { waitForReceipt: true });
1874
- if (isWrite) {
1875
- toast("Transaction sent successfully", "success", 5000);
1876
- alert(`Transaction sent successfully: ${result.transactionHash}`);
1877
- }
1878
- else {
1879
- toast("Retrieved value successfully", "success", 5000);
1880
- alert(`Retrieved value: ${result}`);
1881
- }
1882
- }
1883
- catch (err) {
1884
- console.error("Contract call failed:", err);
1885
- toast(`Error: ${err.message || "Contract call failed"}`, "error", 5000);
1886
- }
1887
- finally {
1888
- setLoading(false);
1889
- }
1890
- });
1891
- return (React.createElement("div", { className: styles["contract-button-container"] },
1892
- React.createElement("input", { type: "number", value: inputValue, onChange: (e) => setInputValue(e.target.value), placeholder: "Enter a number", className: styles["contract-input"] }),
1893
- React.createElement("button", { className: styles["contract-button"], onClick: () => callContract("store", [parseInt(inputValue, 10)], true), disabled: loading || !inputValue }, loading ? "Setting..." : "Set"),
1894
- React.createElement("button", { className: styles["contract-button"], onClick: () => callContract("retrieve", []), disabled: loading }, loading ? "Retrieving..." : "Retrieve")));
1895
- };
1896
4452
  /**
1897
4453
  * The OriginSection component. Displays the Origin status, royalty multiplier, and royalty credits.
1898
4454
  * @returns { JSX.Element } The OriginSection component.
@@ -1947,20 +4503,12 @@ const OriginSection = () => {
1947
4503
  }, [uploads.data]);
1948
4504
  return stats.isLoading ? (React.createElement("div", { style: { marginTop: "1rem", marginBottom: "1rem", flex: 1 } },
1949
4505
  React.createElement("div", { className: styles.spinner }))) : (React.createElement("div", { className: styles["origin-wrapper"] },
1950
- React.createElement(ContractInteraction, null),
1951
4506
  React.createElement("div", { className: styles["origin-section"] },
1952
4507
  React.createElement(Tooltip, { content: isOriginAuthorized ? "Origin Authorized" : "Origin Unauthorized", position: "top", containerStyle: { width: "100%" } },
1953
4508
  React.createElement("div", { className: styles["origin-container"] },
1954
4509
  React.createElement("span", null, isOriginAuthorized ? (React.createElement(CheckMarkIcon, { w: "1.2rem", h: "1.2rem" })) : (React.createElement(XMarkIcon, { w: "1.2rem", h: "1.2rem" }))),
1955
4510
  React.createElement("span", { className: styles["origin-label"] }, isOriginAuthorized ? "Authorized" : "Unauthorized"))),
1956
4511
  React.createElement("div", { className: styles["divider"] }),
1957
- React.createElement(Tooltip, { content: `Royalty Multiplier: ${royaltyMultiplier}x`, position: "top", containerStyle: { width: "100%" } },
1958
- React.createElement("div", { className: styles["origin-container"] },
1959
- React.createElement("span", null,
1960
- royaltyMultiplier,
1961
- "x"),
1962
- React.createElement("span", { className: styles["origin-label"] }, "Multiplier"))),
1963
- React.createElement("div", { className: styles["divider"] }),
1964
4512
  React.createElement(Tooltip, { content: `Royalty Credits: ${royaltyCredits.toLocaleString()}`, position: "top", containerStyle: { width: "100%" } },
1965
4513
  React.createElement("div", { className: styles["origin-container"] },
1966
4514
  React.createElement("span", null, formatCampAmount(royaltyCredits)),
@@ -2100,11 +4648,15 @@ const ImagesTab = () => {
2100
4648
  const { isLoading } = uploads;
2101
4649
  return (React.createElement("div", { className: styles["ip-tab-container"] },
2102
4650
  React.createElement(FileUpload, { accept: constants.SUPPORTED_IMAGE_FORMATS.join(","), maxFileSize: 1.049e7 }),
2103
- React.createElement("div", { className: styles["ip-tab-content"] }, isLoading ? (React.createElement("div", { className: styles.spinner, style: { marginRight: "auto" } })) : (React.createElement("div", { className: styles["ip-tab-content-text"] },
2104
- uploads.data.filter((item) => item.type.startsWith("image"))
2105
- .length,
2106
- " ",
2107
- "images uploaded"))),
4651
+ React.createElement("div", { className: styles["ip-tab-content"] }, isLoading ? (React.createElement("div", { className: styles.spinner, style: { marginRight: "auto" } })) : (
4652
+ // <div className={styles["ip-tab-content-text"]}>
4653
+ // {
4654
+ // uploads.data.filter((item) => item.type.startsWith("image"))
4655
+ // .length
4656
+ // }{" "}
4657
+ // images uploaded
4658
+ // </div>
4659
+ React.createElement(React.Fragment, null))),
2108
4660
  React.createElement(GoToOriginDashboard, { text: "Manage on Origin Dashboard" })));
2109
4661
  };
2110
4662
  const AudioTab = () => {
@@ -2112,11 +4664,15 @@ const AudioTab = () => {
2112
4664
  const { isLoading } = uploads;
2113
4665
  return (React.createElement("div", { className: styles["ip-tab-container"] },
2114
4666
  React.createElement(FileUpload, { accept: constants.SUPPORTED_AUDIO_FORMATS.join(","), maxFileSize: 1.573e7 }),
2115
- React.createElement("div", { className: styles["ip-tab-content"] }, isLoading ? (React.createElement("div", { className: styles.spinner, style: { marginRight: "auto" } })) : (React.createElement("div", { className: styles["ip-tab-content-text"] },
2116
- uploads.data.filter((item) => item.type.startsWith("audio"))
2117
- .length,
2118
- " ",
2119
- "audio files uploaded"))),
4667
+ React.createElement("div", { className: styles["ip-tab-content"] }, isLoading ? (React.createElement("div", { className: styles.spinner, style: { marginRight: "auto" } })) : (
4668
+ // <div className={styles["ip-tab-content-text"]}>
4669
+ // {
4670
+ // uploads.data.filter((item) => item.type.startsWith("audio"))
4671
+ // .length
4672
+ // }{" "}
4673
+ // audio files uploaded
4674
+ // </div>
4675
+ React.createElement(React.Fragment, null))),
2120
4676
  React.createElement(GoToOriginDashboard, { text: "Manage on Origin Dashboard" })));
2121
4677
  };
2122
4678
  const VideosTab = () => {
@@ -2124,11 +4680,15 @@ const VideosTab = () => {
2124
4680
  const { isLoading } = uploads;
2125
4681
  return (React.createElement("div", { className: styles["ip-tab-container"] },
2126
4682
  React.createElement(FileUpload, { accept: constants.SUPPORTED_VIDEO_FORMATS.join(","), maxFileSize: 2.097e7 }),
2127
- React.createElement("div", { className: styles["ip-tab-content"] }, isLoading ? (React.createElement("div", { className: styles.spinner, style: { marginRight: "auto" } })) : (React.createElement("div", { className: styles["ip-tab-content-text"] },
2128
- uploads.data.filter((item) => item.type.startsWith("video"))
2129
- .length,
2130
- " ",
2131
- "videos uploaded"))),
4683
+ React.createElement("div", { className: styles["ip-tab-content"] }, isLoading ? (React.createElement("div", { className: styles.spinner, style: { marginRight: "auto" } })) : (
4684
+ // <div className={styles["ip-tab-content-text"]}>
4685
+ // {
4686
+ // uploads.data.filter((item) => item.type.startsWith("video"))
4687
+ // .length
4688
+ // }{" "}
4689
+ // videos uploaded
4690
+ // </div>
4691
+ React.createElement(React.Fragment, null))),
2132
4692
  React.createElement(GoToOriginDashboard, { text: "Manage on Origin Dashboard" })));
2133
4693
  };
2134
4694
  const TextTab = () => {
@@ -2136,13 +4696,16 @@ const TextTab = () => {
2136
4696
  const { isLoading } = uploads;
2137
4697
  return (React.createElement("div", { className: styles["ip-tab-container"] },
2138
4698
  React.createElement(FileUpload, { accept: constants.SUPPORTED_TEXT_FORMATS.join(","), maxFileSize: 1.049e7 }),
2139
- React.createElement("div", { className: styles["ip-tab-content"] }, isLoading ? (React.createElement("div", { className: styles.spinner, style: { marginRight: "auto" } })) : (React.createElement("div", { className: styles["ip-tab-content-text"] },
2140
- uploads.data.filter((item) => item.type.startsWith("text")).length,
2141
- " ",
2142
- "text files uploaded"))),
4699
+ React.createElement("div", { className: styles["ip-tab-content"] }, isLoading ? (React.createElement("div", { className: styles.spinner, style: { marginRight: "auto" } })) : (
4700
+ // <div className={styles["ip-tab-content-text"]}>
4701
+ // {uploads.data.filter((item) => item.type.startsWith("text")).length}{" "}
4702
+ // text files uploaded
4703
+ // </div>
4704
+ React.createElement(React.Fragment, null))),
2143
4705
  React.createElement(GoToOriginDashboard, { text: "Manage on Origin Dashboard" })));
2144
4706
  };
2145
4707
 
4708
+ const isBrowser = typeof window !== "undefined";
2146
4709
  const getAuthProperties = (auth) => {
2147
4710
  const prototype = Object.getPrototypeOf(auth);
2148
4711
  const properties = Object.getOwnPropertyNames(prototype);
@@ -2170,6 +4733,9 @@ const getAuthVariables = (auth) => {
2170
4733
  * auth.connect();
2171
4734
  */
2172
4735
  const useAuth = () => {
4736
+ if (!isBrowser) {
4737
+ return {};
4738
+ }
2173
4739
  const { auth } = useContext(CampContext);
2174
4740
  if (!auth) {
2175
4741
  throw new Error("Auth instance is not available. Make sure to wrap your component with CampProvider.");
@@ -2181,6 +4747,9 @@ const useAuth = () => {
2181
4747
  setAuthProperties(getAuthProperties(auth));
2182
4748
  };
2183
4749
  useEffect(() => {
4750
+ if (!isBrowser) {
4751
+ return;
4752
+ }
2184
4753
  auth.on("state", updateAuth);
2185
4754
  auth.on("provider", updateAuth);
2186
4755
  }, [auth]);
@@ -2216,18 +4785,26 @@ const useLinkSocials = () => {
2216
4785
  */
2217
4786
  const useProvider = () => {
2218
4787
  var _a, _b, _c;
4788
+ if (!isBrowser) {
4789
+ return {
4790
+ provider: { provider: null, info: { name: "" } },
4791
+ setProvider: () => { },
4792
+ };
4793
+ }
2219
4794
  const { auth } = useContext(CampContext);
2220
4795
  if (!auth) {
2221
4796
  throw new Error("Auth instance is not available. Make sure to wrap your component with CampProvider.");
2222
4797
  }
2223
4798
  const [provider, setProvider] = useState({
2224
- provider: (_a = auth.viem) === null || _a === void 0 ? void 0 : _a.transport,
2225
- info: { name: (_c = (_b = auth.viem) === null || _b === void 0 ? void 0 : _b.transport) === null || _c === void 0 ? void 0 : _c.name },
4799
+ provider: isBrowser ? (_a = auth.viem) === null || _a === void 0 ? void 0 : _a.transport : null,
4800
+ info: { name: isBrowser ? (_c = (_b = auth.viem) === null || _b === void 0 ? void 0 : _b.transport) === null || _c === void 0 ? void 0 : _c.name : "" },
2226
4801
  });
2227
4802
  useEffect(() => {
2228
- auth.on("provider", ({ provider, info }) => {
2229
- setProvider({ provider, info });
2230
- });
4803
+ if (isBrowser) {
4804
+ auth.on("provider", ({ provider, info }) => {
4805
+ setProvider({ provider, info });
4806
+ });
4807
+ }
2231
4808
  }, [auth]);
2232
4809
  const authSetProvider = auth.setProvider.bind(auth);
2233
4810
  return { provider, setProvider: authSetProvider };
@@ -2237,6 +4814,9 @@ const useProvider = () => {
2237
4814
  * @returns { { authenticated: boolean, loading: boolean } } The authenticated state and loading state.
2238
4815
  */
2239
4816
  const useAuthState = () => {
4817
+ if (!isBrowser) {
4818
+ return { authenticated: false, loading: false };
4819
+ }
2240
4820
  const { auth } = useContext(CampContext);
2241
4821
  if (!auth) {
2242
4822
  throw new Error("Auth instance is not available. Make sure to wrap your component with CampProvider.");
@@ -2246,13 +4826,23 @@ const useAuthState = () => {
2246
4826
  useEffect(() => {
2247
4827
  setAuthenticated(auth.isAuthenticated);
2248
4828
  auth.on("state", (state) => {
2249
- setAuthenticated(state === "authenticated");
2250
- setLoading(state === "loading");
4829
+ if (state === "loading")
4830
+ setLoading(true);
4831
+ else {
4832
+ if (state === "authenticated")
4833
+ setAuthenticated(true);
4834
+ else if (state === "unauthenticated")
4835
+ setAuthenticated(false);
4836
+ setLoading(false);
4837
+ }
2251
4838
  });
2252
4839
  }, [auth]);
2253
4840
  return { authenticated, loading };
2254
4841
  };
2255
4842
  const useViem = () => {
4843
+ if (!isBrowser) {
4844
+ return { client: null };
4845
+ }
2256
4846
  const { auth } = useContext(CampContext);
2257
4847
  const [client, setClient] = useState(null);
2258
4848
  useEffect(() => {
@@ -2273,6 +4863,12 @@ const useViem = () => {
2273
4863
  * @returns { { connect: function, disconnect: function } } The connect and disconnect functions.
2274
4864
  */
2275
4865
  const useConnect = () => {
4866
+ if (!isBrowser) {
4867
+ return {
4868
+ connect: () => Promise.resolve({ success: false, message: "", walletAddress: "" }),
4869
+ disconnect: () => Promise.resolve(),
4870
+ };
4871
+ }
2276
4872
  const { auth } = useContext(CampContext);
2277
4873
  if (!auth) {
2278
4874
  throw new Error("Auth instance is not available. Make sure to wrap your component with CampProvider.");
@@ -2285,7 +4881,12 @@ const useConnect = () => {
2285
4881
  * Returns the array of providers.
2286
4882
  * @returns { Array } The array of providers and the loading state.
2287
4883
  */
2288
- const useProviders = () => useSyncExternalStore(providerStore.subscribe, providerStore.value, providerStore.value);
4884
+ const useProviders = () => {
4885
+ if (!isBrowser) {
4886
+ return [];
4887
+ }
4888
+ return useSyncExternalStore(providerStore.subscribe, providerStore.value, providerStore.value);
4889
+ };
2289
4890
  /**
2290
4891
  * Returns the modal state and functions to open and close the modal.
2291
4892
  * @returns { { isOpen: boolean, openModal: function, closeModal: function } } The modal state and functions to open and close the modal.
@@ -2388,19 +4989,5 @@ const useOrigin = () => {
2388
4989
  },
2389
4990
  };
2390
4991
  };
2391
- // export const useOrigin = (): {
2392
- // stats: any;
2393
- // uploads: any[];
2394
- // } => {
2395
- // const { statsQuery, uploadsQuery } = useContext(OriginContext) as {
2396
- // statsQuery: UseQueryResult<any, Error>;
2397
- // uploadsQuery: UseQueryResult<any, Error>;
2398
- // };
2399
- // // return {
2400
- // // ...statsQuery,
2401
- // // uploads: uploadsQuery?.data || [],
2402
- // // // error: statsQuery?.error || uploadsQuery?.error || new Error("Unknown error"),
2403
- // // };
2404
- // };
2405
4992
 
2406
4993
  export { StandaloneCampButton as CampButton, CampContext, CampModal, CampProvider, LinkButton, ModalContext, MyCampModal, useAuth, useAuthState, useConnect, useLinkModal, useLinkSocials, useModal, useOrigin, useProvider, useProviders, useSocials, useViem };