@everipedia/iq-utils 0.4.4 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/build/main/data/constants.d.ts +18 -0
- package/build/main/data/constants.js +20 -2
- package/build/main/lib/checkWikiValidity.d.ts +1 -1
- package/build/main/lib/checkWikiValidity.js +12 -9
- package/build/main/lib/helpers/wiki.helpers.d.ts +32 -0
- package/build/main/lib/helpers/wiki.helpers.js +86 -0
- package/build/main/lib/wikiScore.d.ts +1 -1
- package/build/main/lib/wikiScore.js +34 -49
- package/build/main/schema/wiki.schema.d.ts +798 -0
- package/build/main/schema/wiki.schema.js +289 -0
- package/build/main/types/wiki.d.ts +5 -205
- package/build/main/types/wiki.js +10 -172
- package/build/main/types/wikiBuilder.d.ts +1 -1
- package/build/module/data/constants.d.ts +18 -0
- package/build/module/data/constants.js +19 -1
- package/build/module/lib/checkWikiValidity.d.ts +1 -1
- package/build/module/lib/checkWikiValidity.js +13 -13
- package/build/module/lib/helpers/wiki.helpers.d.ts +32 -0
- package/build/module/lib/helpers/wiki.helpers.js +75 -0
- package/build/module/lib/wikiScore.d.ts +1 -1
- package/build/module/lib/wikiScore.js +4 -19
- package/build/module/schema/wiki.schema.d.ts +798 -0
- package/build/module/schema/wiki.schema.js +286 -0
- package/build/module/types/wiki.d.ts +5 -205
- package/build/module/types/wiki.js +9 -171
- package/build/module/types/wikiBuilder.d.ts +1 -1
- package/package.json +52 -51
package/build/main/types/wiki.js
CHANGED
|
@@ -1,176 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.whiteListedLinkNames = exports.whiteListedDomains =
|
|
4
|
-
var MediaType;
|
|
5
|
-
(function (MediaType) {
|
|
6
|
-
MediaType["GALLERY"] = "GALLERY";
|
|
7
|
-
MediaType["ICON"] = "ICON";
|
|
8
|
-
})(MediaType = exports.MediaType || (exports.MediaType = {}));
|
|
9
|
-
var MediaSource;
|
|
10
|
-
(function (MediaSource) {
|
|
11
|
-
MediaSource["IPFS_IMG"] = "IPFS_IMG";
|
|
12
|
-
MediaSource["VIMEO"] = "VIMEO";
|
|
13
|
-
MediaSource["YOUTUBE"] = "YOUTUBE";
|
|
14
|
-
MediaSource["IPFS_VID"] = "IPFS_VID";
|
|
15
|
-
})(MediaSource = exports.MediaSource || (exports.MediaSource = {}));
|
|
16
|
-
exports.EditorContentOverride = '%OVERRIDE@EDITOR@MARKDOWN%';
|
|
17
|
-
exports.CreateNewWikiSlug = '/*CREATE+NEW+WIKI*/';
|
|
18
|
-
var CommonMetaIds;
|
|
19
|
-
(function (CommonMetaIds) {
|
|
20
|
-
CommonMetaIds["REFERENCES"] = "references";
|
|
21
|
-
// other info
|
|
22
|
-
CommonMetaIds["WEBSITE"] = "website";
|
|
23
|
-
CommonMetaIds["CONTRACT_URL"] = "contract_url";
|
|
24
|
-
CommonMetaIds["LOCATION"] = "location";
|
|
25
|
-
// social Links
|
|
26
|
-
CommonMetaIds["EMAIL_URL"] = "email_url";
|
|
27
|
-
CommonMetaIds["FACEBOOK_PROFILE"] = "facebook_profile";
|
|
28
|
-
CommonMetaIds["INSTAGRAM_PROFILE"] = "instagram_profile";
|
|
29
|
-
CommonMetaIds["TWITTER_PROFILE"] = "twitter_profile";
|
|
30
|
-
CommonMetaIds["LINKEDIN_PROFILE"] = "linkedin_profile";
|
|
31
|
-
CommonMetaIds["YOUTUBE_PROFILE"] = "youtube_profile";
|
|
32
|
-
CommonMetaIds["DISCORD_PROFILE"] = "discord_profile";
|
|
33
|
-
CommonMetaIds["REDDIT_URL"] = "reddit_profile";
|
|
34
|
-
CommonMetaIds["TELEGRAM_URL"] = "telegram_profile";
|
|
35
|
-
CommonMetaIds["GITHUB_URL"] = "github_profile";
|
|
36
|
-
CommonMetaIds["COIN_MARKET_CAP"] = "coinmarketcap_url";
|
|
37
|
-
CommonMetaIds["COINGECKO_PROFILE"] = "coingecko_profile";
|
|
38
|
-
CommonMetaIds["OPENSEA_PROFILE"] = "opensea_profile";
|
|
39
|
-
CommonMetaIds["MEDIUM_PROFILE"] = "medium_profile";
|
|
40
|
-
CommonMetaIds["MIRROR_PROFILE"] = "mirror_profile";
|
|
41
|
-
CommonMetaIds["TIKTOK_PROFILE"] = "tiktok_profile";
|
|
42
|
-
// Explorers
|
|
43
|
-
CommonMetaIds["ETHERSCAN_PROFILE"] = "etherscan_profile";
|
|
44
|
-
CommonMetaIds["ARBISCAN_PROFILE"] = "arbiscan_profile";
|
|
45
|
-
CommonMetaIds["POLYGONSCAN_PROFILE"] = "polygonscan_profile";
|
|
46
|
-
CommonMetaIds["BSCSCAN_PROFILE"] = "bscscan_profile";
|
|
47
|
-
CommonMetaIds["OPTIMISTIC_ETHERSCAN_PROFILE"] = "optimistic_etherscan_profile";
|
|
48
|
-
CommonMetaIds["BASESCAN_PROFILE"] = "basescan_profile";
|
|
49
|
-
CommonMetaIds["FTMSCAN_PROFILE"] = "ftmscan_profile";
|
|
50
|
-
CommonMetaIds["SOLSCAN_PROFILE"] = "solscan_profile";
|
|
51
|
-
CommonMetaIds["AVASCAN_PROFILE"] = "avascan_profile";
|
|
52
|
-
CommonMetaIds["NEARBLOCKS_PROFILE"] = "nearblocks_profile";
|
|
53
|
-
CommonMetaIds["TROSCAN_PROFILE"] = "troscan_profile";
|
|
54
|
-
CommonMetaIds["XRPSCAN_PROFILE"] = "xrpscan_profile";
|
|
55
|
-
CommonMetaIds["KAVASCAN_PROFILE"] = "kavascan_profile";
|
|
56
|
-
CommonMetaIds["TONSCAN_PROFILE"] = "tonscan_profile";
|
|
57
|
-
CommonMetaIds["CELOSCAN_PROFILE"] = "celoscan_profile";
|
|
58
|
-
CommonMetaIds["CRONOSCAN_PROFILE"] = "cronoscan_profile";
|
|
59
|
-
CommonMetaIds["ZKSCAN_PROFILE"] = "zkscan_profile";
|
|
60
|
-
CommonMetaIds["EXPLORER_INJECTIVE"] = "explorer_injective_profile";
|
|
61
|
-
CommonMetaIds["BLASTSCAN_PROFILE"] = "blastscan_profile";
|
|
62
|
-
})(CommonMetaIds = exports.CommonMetaIds || (exports.CommonMetaIds = {}));
|
|
63
|
-
exports.WikiPossibleSocialsList = [
|
|
64
|
-
// other info
|
|
65
|
-
CommonMetaIds.WEBSITE,
|
|
66
|
-
CommonMetaIds.CONTRACT_URL,
|
|
67
|
-
// social Links
|
|
68
|
-
CommonMetaIds.EMAIL_URL,
|
|
69
|
-
CommonMetaIds.FACEBOOK_PROFILE,
|
|
70
|
-
CommonMetaIds.INSTAGRAM_PROFILE,
|
|
71
|
-
CommonMetaIds.TWITTER_PROFILE,
|
|
72
|
-
CommonMetaIds.LINKEDIN_PROFILE,
|
|
73
|
-
CommonMetaIds.YOUTUBE_PROFILE,
|
|
74
|
-
CommonMetaIds.REDDIT_URL,
|
|
75
|
-
CommonMetaIds.TELEGRAM_URL,
|
|
76
|
-
CommonMetaIds.DISCORD_PROFILE,
|
|
77
|
-
CommonMetaIds.GITHUB_URL,
|
|
78
|
-
CommonMetaIds.COIN_MARKET_CAP,
|
|
79
|
-
CommonMetaIds.COINGECKO_PROFILE,
|
|
80
|
-
CommonMetaIds.OPENSEA_PROFILE,
|
|
81
|
-
CommonMetaIds.MEDIUM_PROFILE,
|
|
82
|
-
CommonMetaIds.TIKTOK_PROFILE,
|
|
83
|
-
// Explorers
|
|
84
|
-
CommonMetaIds.ETHERSCAN_PROFILE,
|
|
85
|
-
CommonMetaIds.ARBISCAN_PROFILE,
|
|
86
|
-
CommonMetaIds.POLYGONSCAN_PROFILE,
|
|
87
|
-
CommonMetaIds.BSCSCAN_PROFILE,
|
|
88
|
-
CommonMetaIds.OPTIMISTIC_ETHERSCAN_PROFILE,
|
|
89
|
-
CommonMetaIds.BASESCAN_PROFILE,
|
|
90
|
-
CommonMetaIds.FTMSCAN_PROFILE,
|
|
91
|
-
CommonMetaIds.XRPSCAN_PROFILE,
|
|
92
|
-
CommonMetaIds.KAVASCAN_PROFILE,
|
|
93
|
-
CommonMetaIds.TONSCAN_PROFILE,
|
|
94
|
-
CommonMetaIds.CELOSCAN_PROFILE,
|
|
95
|
-
CommonMetaIds.CRONOSCAN_PROFILE,
|
|
96
|
-
CommonMetaIds.ZKSCAN_PROFILE,
|
|
97
|
-
CommonMetaIds.EXPLORER_INJECTIVE,
|
|
98
|
-
CommonMetaIds.BLASTSCAN_PROFILE,
|
|
99
|
-
];
|
|
100
|
-
var ValidatorCodes;
|
|
101
|
-
(function (ValidatorCodes) {
|
|
102
|
-
ValidatorCodes["VALID_WIKI"] = "VALID_WIKI";
|
|
103
|
-
ValidatorCodes["ID"] = "ID_ERROR";
|
|
104
|
-
ValidatorCodes["LANGUAGE"] = "LANGUAGE_ERROR";
|
|
105
|
-
ValidatorCodes["USER"] = "USER_ERROR";
|
|
106
|
-
ValidatorCodes["WORDS"] = "WORD_COUNT_ERROR";
|
|
107
|
-
ValidatorCodes["CATEGORY"] = "CATEGORY_ERROR";
|
|
108
|
-
ValidatorCodes["SUMMARY"] = "SUMMARY_ERROR";
|
|
109
|
-
ValidatorCodes["IMAGE"] = "IMAGE_ERROR";
|
|
110
|
-
ValidatorCodes["TAG"] = "TAG_ERROR";
|
|
111
|
-
ValidatorCodes["URL"] = "EXTERNAL_URL_ERROR";
|
|
112
|
-
ValidatorCodes["METADATA"] = "METADATA_ERROR";
|
|
113
|
-
ValidatorCodes["MEDIA"] = "MEDIA_ERROR";
|
|
114
|
-
ValidatorCodes["GLOBAL_RATE_LIMIT"] = "GLOBAL_RATE_LIMIT";
|
|
115
|
-
ValidatorCodes["ID_ERROR"] = "ID_ERROR";
|
|
116
|
-
ValidatorCodes["LINKED_WIKIS"] = "LINKED_WIKIS";
|
|
117
|
-
ValidatorCodes["EVENTS"] = "EVENTS_ERROR";
|
|
118
|
-
})(ValidatorCodes = exports.ValidatorCodes || (exports.ValidatorCodes = {}));
|
|
119
|
-
var EditSpecificMetaIds;
|
|
120
|
-
(function (EditSpecificMetaIds) {
|
|
121
|
-
EditSpecificMetaIds["PREVIOUS_CID"] = "previous_cid";
|
|
122
|
-
EditSpecificMetaIds["COMMIT_MESSAGE"] = "commit-message";
|
|
123
|
-
EditSpecificMetaIds["WORDS_CHANGED"] = "words-changed";
|
|
124
|
-
EditSpecificMetaIds["PERCENT_CHANGED"] = "percent-changed";
|
|
125
|
-
EditSpecificMetaIds["BLOCKS_CHANGED"] = "blocks-changed";
|
|
126
|
-
EditSpecificMetaIds["WIKI_SCORE"] = "wiki-score";
|
|
127
|
-
})(EditSpecificMetaIds = exports.EditSpecificMetaIds || (exports.EditSpecificMetaIds = {}));
|
|
128
|
-
var LanguagesValuesEnum;
|
|
129
|
-
(function (LanguagesValuesEnum) {
|
|
130
|
-
LanguagesValuesEnum["SPANISH"] = "Espa\u00F1ol";
|
|
131
|
-
LanguagesValuesEnum["ENGLISH"] = "English";
|
|
132
|
-
LanguagesValuesEnum["CHINESE"] = "\u4E2D\u6587";
|
|
133
|
-
LanguagesValuesEnum["KOREAN"] = "\uD55C\uAD6D\uC5B4";
|
|
134
|
-
})(LanguagesValuesEnum || (LanguagesValuesEnum = {}));
|
|
135
|
-
var LanguagesISOEnum;
|
|
136
|
-
(function (LanguagesISOEnum) {
|
|
137
|
-
LanguagesISOEnum["EN"] = "en";
|
|
138
|
-
LanguagesISOEnum["ES"] = "es";
|
|
139
|
-
LanguagesISOEnum["ZH"] = "zh";
|
|
140
|
-
LanguagesISOEnum["KO"] = "ko";
|
|
141
|
-
})(LanguagesISOEnum = exports.LanguagesISOEnum || (exports.LanguagesISOEnum = {}));
|
|
142
|
-
exports.Languages = {
|
|
143
|
-
en: LanguagesValuesEnum.ENGLISH,
|
|
144
|
-
es: LanguagesValuesEnum.SPANISH,
|
|
145
|
-
zh: LanguagesValuesEnum.CHINESE,
|
|
146
|
-
ko: LanguagesValuesEnum.KOREAN,
|
|
147
|
-
};
|
|
148
|
-
var LinkedWikiKey;
|
|
149
|
-
(function (LinkedWikiKey) {
|
|
150
|
-
LinkedWikiKey["FOUNDER"] = "founders";
|
|
151
|
-
LinkedWikiKey["BLOCKCHAIN"] = "blockchains";
|
|
152
|
-
LinkedWikiKey["SPEAKERS"] = "speakers";
|
|
153
|
-
})(LinkedWikiKey = exports.LinkedWikiKey || (exports.LinkedWikiKey = {}));
|
|
154
|
-
var EventType;
|
|
155
|
-
(function (EventType) {
|
|
156
|
-
EventType["CREATED"] = "CREATED";
|
|
157
|
-
EventType["DEFAULT"] = "DEFAULT";
|
|
158
|
-
EventType["MULTIDATE"] = "MULTIDATE";
|
|
159
|
-
})(EventType = exports.EventType || (exports.EventType = {}));
|
|
160
|
-
var EventAction;
|
|
161
|
-
(function (EventAction) {
|
|
162
|
-
EventAction["DELETE"] = "DELETE";
|
|
163
|
-
EventAction["EDIT"] = "EDIT";
|
|
164
|
-
EventAction["CREATE"] = "CREATE";
|
|
165
|
-
})(EventAction = exports.EventAction || (exports.EventAction = {}));
|
|
3
|
+
exports.whiteListedLinkNames = exports.whiteListedDomains = void 0;
|
|
166
4
|
exports.whiteListedDomains = [
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
5
|
+
"youtube.com/watch",
|
|
6
|
+
"youtu.be",
|
|
7
|
+
"vimeo.com",
|
|
8
|
+
"alpha.everipedia.org/wiki",
|
|
9
|
+
"beta.everipedia.org/wiki",
|
|
10
|
+
"iq.wiki/wiki",
|
|
11
|
+
"ipfs.everipedia.org/ipfs",
|
|
174
12
|
];
|
|
175
|
-
exports.whiteListedLinkNames = [
|
|
176
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
13
|
+
exports.whiteListedLinkNames = ["YOUTUBE@VID", "DUNE@EMBED"];
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lraS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90eXBlcy93aWtpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTZCYSxRQUFBLGtCQUFrQixHQUFHO0lBQ2pDLG1CQUFtQjtJQUNuQixVQUFVO0lBQ1YsV0FBVztJQUNYLDJCQUEyQjtJQUMzQiwwQkFBMEI7SUFDMUIsY0FBYztJQUNkLDBCQUEwQjtDQUMxQixDQUFDO0FBRVcsUUFBQSxvQkFBb0IsR0FBRyxDQUFDLGFBQWEsRUFBRSxZQUFZLENBQUMsQ0FBQyJ9
|
|
@@ -4,3 +4,21 @@ export declare const WIKI_TITLE_MAX_LENGTH = 60;
|
|
|
4
4
|
export declare const MEDIA_UPLOAD_PENDING_SUFFIX = "default";
|
|
5
5
|
export declare const MAX_MEDIA_COUNT = 25;
|
|
6
6
|
export declare const IPFS_HASH_LENGTH = 46;
|
|
7
|
+
export declare const EditorContentOverride = "%OVERRIDE@EDITOR@MARKDOWN%";
|
|
8
|
+
export declare const CreateNewWikiSlug = "/*CREATE+NEW+WIKI*/";
|
|
9
|
+
export declare const MIN_CONTENT_WORD_COUNT = 10;
|
|
10
|
+
export declare const GOOD_CONTENT_WORD_COUNT = 500;
|
|
11
|
+
export declare const IDEAL_CONTENT_WORD_COUNT = 1500;
|
|
12
|
+
export declare const CONTENT_SCORE_WEIGHT = 0.8;
|
|
13
|
+
export declare const INTERNAL_LINKS_SCORE_WEIGHT = 0.5;
|
|
14
|
+
export declare const CITATIONS_SCORE_WEIGHT = 0.5;
|
|
15
|
+
export declare const MEDIA_SCORE_WEIGHT = 0.3;
|
|
16
|
+
export declare const TAGS_SCORE_WEIGHT = 0.3;
|
|
17
|
+
export declare const SUMMARY_SCORE_WEIGHT = 0.5;
|
|
18
|
+
export declare const SOCIAL_SCORE_WEIGHT = 0.5;
|
|
19
|
+
export declare const IDEAL_INTERNAL_LINKS_COUNT = 10;
|
|
20
|
+
export declare const IDEAL_CITATIONS_COUNT = 10;
|
|
21
|
+
export declare const IDEAL_MEDIA_COUNT = 5;
|
|
22
|
+
export declare const IDEAL_TAGS_COUNT = 3;
|
|
23
|
+
export declare const IDEAL_SUMMARY_LENGTH = 100;
|
|
24
|
+
export declare const IDEAL_SOCIAL_MEDIA_COUNT = 4;
|
|
@@ -4,4 +4,22 @@ export const WIKI_TITLE_MAX_LENGTH = 60;
|
|
|
4
4
|
export const MEDIA_UPLOAD_PENDING_SUFFIX = "default";
|
|
5
5
|
export const MAX_MEDIA_COUNT = 25;
|
|
6
6
|
export const IPFS_HASH_LENGTH = 46;
|
|
7
|
-
|
|
7
|
+
export const EditorContentOverride = "%OVERRIDE@EDITOR@MARKDOWN%";
|
|
8
|
+
export const CreateNewWikiSlug = "/*CREATE+NEW+WIKI*/";
|
|
9
|
+
export const MIN_CONTENT_WORD_COUNT = 10;
|
|
10
|
+
export const GOOD_CONTENT_WORD_COUNT = 500;
|
|
11
|
+
export const IDEAL_CONTENT_WORD_COUNT = 1500;
|
|
12
|
+
export const CONTENT_SCORE_WEIGHT = 0.8;
|
|
13
|
+
export const INTERNAL_LINKS_SCORE_WEIGHT = 0.5;
|
|
14
|
+
export const CITATIONS_SCORE_WEIGHT = 0.5;
|
|
15
|
+
export const MEDIA_SCORE_WEIGHT = 0.3;
|
|
16
|
+
export const TAGS_SCORE_WEIGHT = 0.3;
|
|
17
|
+
export const SUMMARY_SCORE_WEIGHT = 0.5;
|
|
18
|
+
export const SOCIAL_SCORE_WEIGHT = 0.5;
|
|
19
|
+
export const IDEAL_INTERNAL_LINKS_COUNT = 10;
|
|
20
|
+
export const IDEAL_CITATIONS_COUNT = 10;
|
|
21
|
+
export const IDEAL_MEDIA_COUNT = 5;
|
|
22
|
+
export const IDEAL_TAGS_COUNT = 3;
|
|
23
|
+
export const IDEAL_SUMMARY_LENGTH = 100;
|
|
24
|
+
export const IDEAL_SOCIAL_MEDIA_COUNT = 4;
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2RhdGEvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLEdBQUcsQ0FBQztBQUMzQyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxHQUFHLENBQUM7QUFDMUMsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsRUFBRSxDQUFDO0FBQ3hDLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLFNBQVMsQ0FBQztBQUNyRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFDO0FBQ2xDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztBQUNuQyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyw0QkFBNEIsQ0FBQztBQUNsRSxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxxQkFBcUIsQ0FBQztBQUV2RCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxFQUFFLENBQUM7QUFDekMsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsR0FBRyxDQUFDO0FBQzNDLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLElBQUksQ0FBQztBQUU3QyxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxHQUFHLENBQUM7QUFDeEMsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsR0FBRyxDQUFDO0FBQy9DLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLEdBQUcsQ0FBQztBQUMxQyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLENBQUM7QUFDdEMsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsR0FBRyxDQUFDO0FBQ3JDLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLEdBQUcsQ0FBQztBQUN4QyxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxHQUFHLENBQUM7QUFFdkMsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsRUFBRSxDQUFDO0FBQzdDLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztBQUN4QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQUM7QUFDbkMsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO0FBQ2xDLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLEdBQUcsQ0FBQztBQUN4QyxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLENBQUMifQ==
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { IPFS_HASH_LENGTH, MAX_MEDIA_COUNT, MEDIA_UPLOAD_PENDING_SUFFIX, WIKI_CONTENT_MIN_WORDS, WIKI_SUMMARY_MAX_LENGTH, WIKI_TITLE_MAX_LENGTH, } from "../data/constants";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
whiteListedDomains, whiteListedLinkNames, } from "../types/wiki";
|
|
2
|
+
import { CommonMetaIdsEnum, MediaSourceEnum, MediaTypeEnum, } from "../schema/wiki.schema";
|
|
3
|
+
import { whiteListedDomains, whiteListedLinkNames } from "../types/wiki";
|
|
5
4
|
/**
|
|
6
5
|
* Counts the number of words in a given string.
|
|
7
6
|
* @param text - The input string to count words from.
|
|
@@ -52,21 +51,23 @@ export const isMediaValid = (wiki) => {
|
|
|
52
51
|
if (!wiki.media)
|
|
53
52
|
return true;
|
|
54
53
|
const isMediaContentValid = wiki.media.every((media) => {
|
|
55
|
-
if (media.source ===
|
|
56
|
-
media.source ===
|
|
54
|
+
if (media.source === MediaSourceEnum.Enum.IPFS_IMG ||
|
|
55
|
+
media.source === MediaSourceEnum.Enum.IPFS_VID) {
|
|
57
56
|
return media.id.length === IPFS_HASH_LENGTH;
|
|
58
57
|
}
|
|
59
|
-
if (media.source ===
|
|
58
|
+
if (media.source === MediaSourceEnum.Enum.YOUTUBE) {
|
|
60
59
|
const youtubePattern = /^.*(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/|shorts\/|watch\?v=)([^#&?]*).*/;
|
|
61
60
|
return (media.id === `https://www.youtube.com/watch?v=${media.name}` &&
|
|
62
61
|
youtubePattern.test(media.id));
|
|
63
62
|
}
|
|
64
|
-
if (media.source ===
|
|
63
|
+
if (media.source === MediaSourceEnum.Enum.VIMEO) {
|
|
65
64
|
return media.id === `https://vimeo.com/${media.name}`;
|
|
66
65
|
}
|
|
67
|
-
return media.type
|
|
66
|
+
return media.type
|
|
67
|
+
? Object.values(MediaTypeEnum).includes(media.type)
|
|
68
|
+
: true;
|
|
68
69
|
});
|
|
69
|
-
const iconMediaCount = wiki.media.filter((media) => media.type ===
|
|
70
|
+
const iconMediaCount = wiki.media.filter((media) => media.type === MediaTypeEnum.Enum.ICON).length;
|
|
70
71
|
return (wiki.media.length <= MAX_MEDIA_COUNT &&
|
|
71
72
|
isMediaContentValid &&
|
|
72
73
|
iconMediaCount <= 1);
|
|
@@ -85,8 +86,7 @@ export const isAnyMediaUploading = (wiki) => wiki.media?.some((media) => media.i
|
|
|
85
86
|
*/
|
|
86
87
|
export const isEventUrlMissing = (wiki) => {
|
|
87
88
|
if (wiki.tags.some((tag) => tag.id === "Events")) {
|
|
88
|
-
const referencesData = wiki.metadata.find((meta) => meta.id ===
|
|
89
|
-
?.value || "[]";
|
|
89
|
+
const referencesData = wiki.metadata.find((meta) => meta.id === CommonMetaIdsEnum.Enum.references)?.value || "[]";
|
|
90
90
|
const references = JSON.parse(referencesData);
|
|
91
91
|
return !references.some((item) => item.description.toLowerCase() === "event link");
|
|
92
92
|
}
|
|
@@ -110,7 +110,7 @@ export const isSummaryTooLong = (wiki) => !!(wiki.summary && wiki.summary.length
|
|
|
110
110
|
* @returns True if there are no citations, false otherwise.
|
|
111
111
|
*/
|
|
112
112
|
export const hasNoCitations = (wiki) => {
|
|
113
|
-
const references = wiki.metadata.find((meta) => meta.id ===
|
|
113
|
+
const references = wiki.metadata.find((meta) => meta.id === CommonMetaIdsEnum.Enum.references);
|
|
114
114
|
return !references?.value || references.value.length === 0;
|
|
115
115
|
};
|
|
116
116
|
/**
|
|
@@ -188,4 +188,4 @@ export const validateWiki = (wiki) => {
|
|
|
188
188
|
}
|
|
189
189
|
return { isValid: true };
|
|
190
190
|
};
|
|
191
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
191
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tXaWtpVmFsaWRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2NoZWNrV2lraVZhbGlkaXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLDJCQUEyQixFQUMzQixzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLHFCQUFxQixHQUNyQixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFDTixpQkFBaUIsRUFDakIsZUFBZSxFQUNmLGFBQWEsR0FFYixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6RTs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FDMUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUM7QUFFdEQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLFNBQWlCLEVBQUUsRUFBRTtJQUMvQyxJQUFJO1FBQ0gsT0FBTyxPQUFPLENBQUMsSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztLQUNuQztJQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ1osT0FBTyxLQUFLLENBQUM7S0FDYjtBQUNGLENBQUMsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLE9BQWUsRUFBRSxFQUFFO0lBQzFELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUMzRCxPQUFPLENBQ04sYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDLElB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
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { z } from "zod";
|
|
2
|
+
import { type Media, type TagEnum } from "../../schema/wiki.schema";
|
|
3
|
+
/**
|
|
4
|
+
* Counts the number of words in a given string.
|
|
5
|
+
* @param text - The input string to count words from.
|
|
6
|
+
* @returns The number of words in the string.
|
|
7
|
+
*/
|
|
8
|
+
export declare const countWords: (text: string) => number;
|
|
9
|
+
/**
|
|
10
|
+
* Checks if a given string is a valid URL.
|
|
11
|
+
* @param urlString - The string to check.
|
|
12
|
+
* @returns True if the string is a valid URL, false otherwise.
|
|
13
|
+
*/
|
|
14
|
+
export declare const isValidUrl: (urlString: string) => boolean;
|
|
15
|
+
export declare const validateMediaContent: (media: Media[]) => boolean;
|
|
16
|
+
export declare const validateMediaCount: (media: Media[]) => boolean;
|
|
17
|
+
export declare const validateEventWiki: (wiki: {
|
|
18
|
+
tags: {
|
|
19
|
+
id: z.infer<typeof TagEnum>;
|
|
20
|
+
}[];
|
|
21
|
+
metadata: {
|
|
22
|
+
id: string;
|
|
23
|
+
value?: string;
|
|
24
|
+
}[];
|
|
25
|
+
events?: unknown[];
|
|
26
|
+
}) => boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Checks if all content links in the given text are verified.
|
|
29
|
+
* @param content - The content to check for links.
|
|
30
|
+
* @returns True if all links are verified, false otherwise.
|
|
31
|
+
*/
|
|
32
|
+
export declare const areContentLinksVerified: (content: string) => boolean;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { IPFS_HASH_LENGTH, MAX_MEDIA_COUNT } from "../../data/constants";
|
|
2
|
+
import { CommonMetaIdsEnum, MediaSourceEnum, MediaTypeEnum, } from "../../schema/wiki.schema";
|
|
3
|
+
import { whiteListedDomains, whiteListedLinkNames } from "../../types/wiki";
|
|
4
|
+
/**
|
|
5
|
+
* Counts the number of words in a given string.
|
|
6
|
+
* @param text - The input string to count words from.
|
|
7
|
+
* @returns The number of words in the string.
|
|
8
|
+
*/
|
|
9
|
+
export const countWords = (text) => text.split(" ").filter((word) => word !== "").length;
|
|
10
|
+
/**
|
|
11
|
+
* Checks if a given string is a valid URL.
|
|
12
|
+
* @param urlString - The string to check.
|
|
13
|
+
* @returns True if the string is a valid URL, false otherwise.
|
|
14
|
+
*/
|
|
15
|
+
export const isValidUrl = (urlString) => {
|
|
16
|
+
try {
|
|
17
|
+
return Boolean(new URL(urlString));
|
|
18
|
+
}
|
|
19
|
+
catch (_e) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
export const validateMediaContent = (media) => {
|
|
24
|
+
return media.every((item) => {
|
|
25
|
+
if (item.source === MediaSourceEnum.Enum.IPFS_IMG ||
|
|
26
|
+
item.source === MediaSourceEnum.Enum.IPFS_VID) {
|
|
27
|
+
return item.id.length === IPFS_HASH_LENGTH;
|
|
28
|
+
}
|
|
29
|
+
if (item.source === MediaSourceEnum.Enum.YOUTUBE) {
|
|
30
|
+
const youtubePattern = /^.*(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/|shorts\/|watch\?v=)([^#&?]*).*/;
|
|
31
|
+
return (item.id === `https://www.youtube.com/watch?v=${item.name}` &&
|
|
32
|
+
youtubePattern.test(item.id));
|
|
33
|
+
}
|
|
34
|
+
if (item.source === MediaSourceEnum.Enum.VIMEO) {
|
|
35
|
+
return item.id === `https://vimeo.com/${item.name}`;
|
|
36
|
+
}
|
|
37
|
+
return item.type ? item.type in MediaTypeEnum : true;
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
export const validateMediaCount = (media) => {
|
|
41
|
+
const iconMediaCount = media.filter((item) => item.type === MediaTypeEnum.Enum.ICON).length;
|
|
42
|
+
return media.length <= MAX_MEDIA_COUNT && iconMediaCount <= 1;
|
|
43
|
+
};
|
|
44
|
+
export const validateEventWiki = (wiki) => {
|
|
45
|
+
if (wiki.tags.some((tag) => tag.id === "Events")) {
|
|
46
|
+
const referencesData = wiki.metadata.find((meta) => meta.id === CommonMetaIdsEnum.Enum.references)?.value || "[]";
|
|
47
|
+
const references = JSON.parse(referencesData);
|
|
48
|
+
const hasEventLink = references.some((item) => item.description.toLowerCase() === "event link");
|
|
49
|
+
return hasEventLink && Array.isArray(wiki.events) && wiki.events.length > 0;
|
|
50
|
+
}
|
|
51
|
+
return true;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Checks if all content links in the given text are verified.
|
|
55
|
+
* @param content - The content to check for links.
|
|
56
|
+
* @returns True if all links are verified, false otherwise.
|
|
57
|
+
*/
|
|
58
|
+
export const areContentLinksVerified = (content) => {
|
|
59
|
+
const markdownLinks = content.match(/\[(.*?)\]\((.*?)\)/g);
|
|
60
|
+
return (markdownLinks?.every((link) => {
|
|
61
|
+
const [, linkText, linkUrl] = RegExp(/\[(.*?)\]\((.*?)\)/).exec(link) || [];
|
|
62
|
+
if (linkText &&
|
|
63
|
+
linkUrl &&
|
|
64
|
+
whiteListedLinkNames.includes(linkText) &&
|
|
65
|
+
!isValidUrl(linkUrl)) {
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
if (linkUrl && !linkUrl.startsWith("#")) {
|
|
69
|
+
const validDomainPattern = new RegExp(`^https?://(www\\.)?(${whiteListedDomains.join("|")})`);
|
|
70
|
+
return validDomainPattern.test(linkUrl);
|
|
71
|
+
}
|
|
72
|
+
return true;
|
|
73
|
+
}) ?? true);
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lraS5oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9oZWxwZXJzL3dpa2kuaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekUsT0FBTyxFQUNOLGlCQUFpQixFQUVqQixlQUFlLEVBQ2YsYUFBYSxHQUViLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUU7Ozs7R0FJRztBQUVILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFLENBQzFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDO0FBRXREOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxTQUFpQixFQUFFLEVBQUU7SUFDL0MsSUFBSTtRQUNILE9BQU8sT0FBTyxDQUFDLElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7S0FDbkM7SUFBQyxPQUFPLEVBQUUsRUFBRTtRQUNaLE9BQU8sS0FBSyxDQUFDO0tBQ2I7QUFDRixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEtBQWMsRUFBRSxFQUFFO0lBQ3RELE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQzNCLElBQ0MsSUFBSSxDQUFDLE1BQU0sS0FBSyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVE7WUFDN0MsSUFBSSxDQUFDLE1BQU0sS0FBSyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFDNUM7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
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { type Wiki } from "../
|
|
1
|
+
import { type Wiki } from "../schema/wiki.schema";
|
|
2
2
|
export declare const calculateWikiScore: (wiki: Wiki) => number;
|
|
@@ -1,20 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
const GOOD_CONTENT_WORD_COUNT = 500;
|
|
4
|
-
const IDEAL_CONTENT_WORD_COUNT = 1500;
|
|
5
|
-
const CONTENT_SCORE_WEIGHT = 0.8;
|
|
6
|
-
const INTERNAL_LINKS_SCORE_WEIGHT = 0.5;
|
|
7
|
-
const CITATIONS_SCORE_WEIGHT = 0.5;
|
|
8
|
-
const MEDIA_SCORE_WEIGHT = 0.3;
|
|
9
|
-
const TAGS_SCORE_WEIGHT = 0.3;
|
|
10
|
-
const SUMMARY_SCORE_WEIGHT = 0.5;
|
|
11
|
-
const SOCIAL_SCORE_WEIGHT = 0.5;
|
|
12
|
-
const IDEAL_INTERNAL_LINKS_COUNT = 10;
|
|
13
|
-
const IDEAL_CITATIONS_COUNT = 10;
|
|
14
|
-
const IDEAL_MEDIA_COUNT = 5;
|
|
15
|
-
const IDEAL_TAGS_COUNT = 3;
|
|
16
|
-
const IDEAL_SUMMARY_LENGTH = 100;
|
|
17
|
-
const IDEAL_SOCIAL_MEDIA_COUNT = 4;
|
|
1
|
+
import { CITATIONS_SCORE_WEIGHT, CONTENT_SCORE_WEIGHT, GOOD_CONTENT_WORD_COUNT, IDEAL_CITATIONS_COUNT, IDEAL_CONTENT_WORD_COUNT, IDEAL_INTERNAL_LINKS_COUNT, IDEAL_MEDIA_COUNT, IDEAL_SOCIAL_MEDIA_COUNT, IDEAL_SUMMARY_LENGTH, IDEAL_TAGS_COUNT, INTERNAL_LINKS_SCORE_WEIGHT, MEDIA_SCORE_WEIGHT, MIN_CONTENT_WORD_COUNT, SOCIAL_SCORE_WEIGHT, SUMMARY_SCORE_WEIGHT, TAGS_SCORE_WEIGHT, } from "../data/constants";
|
|
2
|
+
import { CommonMetaIdsEnum, WikiPossibleSocialsList, } from "../schema/wiki.schema";
|
|
18
3
|
const contentQuality = (wordCount) => {
|
|
19
4
|
const scoreMin = 0.0;
|
|
20
5
|
const scoreMax = 1.0;
|
|
@@ -81,7 +66,7 @@ const getWikiInternalLinks = (content) => {
|
|
|
81
66
|
return internalLinksCount;
|
|
82
67
|
};
|
|
83
68
|
const getWikiCitationLinks = (wiki) => {
|
|
84
|
-
const rawWikiReferences = wiki.metadata.find((m) => m.id ===
|
|
69
|
+
const rawWikiReferences = wiki.metadata.find((m) => m.id === CommonMetaIdsEnum.Enum.references)?.value;
|
|
85
70
|
if (rawWikiReferences === undefined ||
|
|
86
71
|
rawWikiReferences?.trim().length === 0) {
|
|
87
72
|
return 0;
|
|
@@ -133,4 +118,4 @@ export const calculateWikiScore = (wiki) => {
|
|
|
133
118
|
const percentScore = Math.floor(score * 100);
|
|
134
119
|
return percentScore;
|
|
135
120
|
};
|
|
136
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lraVNjb3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi93aWtpU2NvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDcEIsdUJBQXVCLEVBQ3ZCLHFCQUFxQixFQUNyQix3QkFBd0IsRUFDeEIsMEJBQTBCLEVBQzFCLGlCQUFpQixFQUNqQix3QkFBd0IsRUFDeEIsb0JBQW9CLEVBQ3BCLGdCQUFnQixFQUNoQiwyQkFBMkIsRUFDM0Isa0JBQWtCLEVBQ2xCLHNCQUFzQixFQUN0QixtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3BCLGlCQUFpQixHQUNqQixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFDTixpQkFBaUIsRUFFakIsdUJBQXVCLEdBQ3ZCLE1BQU0sdUJBQXVCLENBQUM7QUFFL0IsTUFBTSxjQUFjLEdBQUcsQ0FBQyxTQUFpQixFQUFVLEVBQUU7SUFDcEQsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDO0lBQ3JCLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQztJQUVyQixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7SUFFZCxJQUFJLFNBQVMsR0FBRyxzQkFBc0IsRUFBRTtRQUN2QyxPQUFPLFFBQVEsQ0FBQztLQUNoQjtJQUVELElBQ0MsU0FBUyxJQUFJLHNCQUFzQjtRQUNuQyxTQUFTLElBQUksdUJBQXVCLEVBQ25DO1FBQ0QsS0FBSyxHQUFHLFNBQVMsR0FBRyx1QkFBdUIsQ0FBQztRQUM1QyxLQUFLLElBQUksR0FBRyxDQUFDO0tBQ2I7SUFFRCxJQUNDLFNBQVMsR0FBRyx1QkFBdUI7UUFDbkMsU0FBUyxHQUFHLHdCQUF3QixFQUNuQztRQUNELE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQztRQUN0QixNQUFNLGtCQUFrQixHQUFHLFNBQVMsR0FBRyx1QkFBdUIsQ0FBQztRQUMvRCxNQUFNLGdCQUFnQixHQUNyQixrQkFBa0IsR0FB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
|