@discordeno/bot 19.0.0-next.f8f976a → 19.0.0-next.f9bdfce
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/README.md +30 -0
- package/dist/cjs/bot.cjs +1 -1
- package/dist/cjs/handlers/emojis/GUILD_EMOJIS_UPDATE.cjs +2 -2
- package/dist/cjs/handlers/guilds/GUILD_STICKERS_UPDATE.cjs +8 -5
- package/dist/cjs/handlers/interactions/INTERACTION_CREATE.cjs +6 -3
- package/dist/cjs/handlers/messages/MESSAGE_REACTION_ADD.cjs +4 -2
- package/dist/cjs/handlers/messages/MESSAGE_REACTION_REMOVE.cjs +3 -2
- package/dist/cjs/transformers/attachment.cjs +2 -1
- package/dist/cjs/transformers/avatarDecorationData.cjs +20 -0
- package/dist/cjs/transformers/channel.cjs +29 -2
- package/dist/cjs/transformers/emoji.cjs +19 -4
- package/dist/cjs/transformers/guild.cjs +5 -2
- package/dist/cjs/transformers/index.cjs +2 -1
- package/dist/cjs/transformers/interaction.cjs +38 -41
- package/dist/cjs/transformers/invite.cjs +2 -1
- package/dist/cjs/transformers/member.cjs +3 -2
- package/dist/cjs/transformers/message.cjs +32 -33
- package/dist/cjs/transformers/reverse/member.cjs +7 -2
- package/dist/cjs/transformers/sku.cjs +1 -1
- package/dist/cjs/transformers/toggles/Permissions.cjs +2 -2
- package/dist/cjs/transformers/toggles/channel.cjs +7 -2
- package/dist/cjs/transformers/toggles/guild.cjs +74 -52
- package/dist/cjs/transformers/user.cjs +2 -2
- package/dist/cjs/transformers.cjs +48 -7
- package/dist/cjs/typings.cjs +4 -26
- package/dist/esm/bot.js +1 -1
- package/dist/esm/handlers/emojis/GUILD_EMOJIS_UPDATE.js +2 -2
- package/dist/esm/handlers/guilds/GUILD_STICKERS_UPDATE.js +8 -5
- package/dist/esm/handlers/interactions/INTERACTION_CREATE.js +6 -3
- package/dist/esm/handlers/messages/MESSAGE_REACTION_ADD.js +4 -2
- package/dist/esm/handlers/messages/MESSAGE_REACTION_REMOVE.js +3 -2
- package/dist/esm/transformers/attachment.js +2 -1
- package/dist/esm/transformers/avatarDecorationData.js +10 -0
- package/dist/esm/transformers/channel.js +27 -3
- package/dist/esm/transformers/emoji.js +8 -1
- package/dist/esm/transformers/guild.js +5 -2
- package/dist/esm/transformers/index.js +2 -1
- package/dist/esm/transformers/interaction.js +37 -40
- package/dist/esm/transformers/invite.js +2 -1
- package/dist/esm/transformers/member.js +3 -2
- package/dist/esm/transformers/message.js +3 -4
- package/dist/esm/transformers/reverse/member.js +7 -2
- package/dist/esm/transformers/sku.js +1 -1
- package/dist/esm/transformers/toggles/Permissions.js +2 -2
- package/dist/esm/transformers/toggles/channel.js +7 -2
- package/dist/esm/transformers/toggles/guild.js +74 -52
- package/dist/esm/transformers/user.js +2 -2
- package/dist/esm/transformers.js +51 -10
- package/dist/esm/typings.js +1 -15
- package/dist/types/bot.d.ts +9 -3
- package/dist/types/bot.d.ts.map +1 -1
- package/dist/types/handlers/guilds/GUILD_STICKERS_UPDATE.d.ts.map +1 -1
- package/dist/types/handlers/interactions/INTERACTION_CREATE.d.ts +1 -1
- package/dist/types/handlers/interactions/INTERACTION_CREATE.d.ts.map +1 -1
- package/dist/types/handlers/messages/MESSAGE_REACTION_ADD.d.ts.map +1 -1
- package/dist/types/handlers/messages/MESSAGE_REACTION_REMOVE.d.ts.map +1 -1
- package/dist/types/transformers/attachment.d.ts +2 -0
- package/dist/types/transformers/attachment.d.ts.map +1 -1
- package/dist/types/transformers/avatarDecorationData.d.ts +9 -0
- package/dist/types/transformers/avatarDecorationData.d.ts.map +1 -0
- package/dist/types/transformers/channel.d.ts +38 -4
- package/dist/types/transformers/channel.d.ts.map +1 -1
- package/dist/types/transformers/emoji.d.ts +8 -1
- package/dist/types/transformers/emoji.d.ts.map +1 -1
- package/dist/types/transformers/guild.d.ts +3 -3
- package/dist/types/transformers/guild.d.ts.map +1 -1
- package/dist/types/transformers/index.d.ts +1 -0
- package/dist/types/transformers/index.d.ts.map +1 -1
- package/dist/types/transformers/interaction.d.ts +8 -14
- package/dist/types/transformers/interaction.d.ts.map +1 -1
- package/dist/types/transformers/invite.d.ts +3 -1
- package/dist/types/transformers/invite.d.ts.map +1 -1
- package/dist/types/transformers/member.d.ts +4 -1
- package/dist/types/transformers/member.d.ts.map +1 -1
- package/dist/types/transformers/message.d.ts +2 -2
- package/dist/types/transformers/message.d.ts.map +1 -1
- package/dist/types/transformers/reverse/member.d.ts.map +1 -1
- package/dist/types/transformers/sku.d.ts +2 -2
- package/dist/types/transformers/sku.d.ts.map +1 -1
- package/dist/types/transformers/toggles/Permissions.d.ts +4 -4
- package/dist/types/transformers/toggles/Permissions.d.ts.map +1 -1
- package/dist/types/transformers/toggles/channel.d.ts +3 -0
- package/dist/types/transformers/toggles/channel.d.ts.map +1 -1
- package/dist/types/transformers/toggles/guild.d.ts +50 -35
- package/dist/types/transformers/toggles/guild.d.ts.map +1 -1
- package/dist/types/transformers/user.d.ts +3 -3
- package/dist/types/transformers/user.d.ts.map +1 -1
- package/dist/types/transformers.d.ts +50 -8
- package/dist/types/transformers.d.ts.map +1 -1
- package/dist/types/typings.d.ts +0 -24
- package/dist/types/typings.d.ts.map +1 -1
- package/package.json +13 -13
- package/dist/tsconfig.tsbuildinfo +0 -1
|
@@ -22,56 +22,55 @@ _export(exports, {
|
|
|
22
22
|
const _types = require("@discordeno/types");
|
|
23
23
|
const _constants = require("../constants.cjs");
|
|
24
24
|
const _index = require("../index.cjs");
|
|
25
|
-
const _typings = require("../typings.cjs");
|
|
26
25
|
const _ToggleBitfield = require("./toggles/ToggleBitfield.cjs");
|
|
27
26
|
const baseMessage = {
|
|
28
27
|
get crossposted () {
|
|
29
|
-
return this.flags?.contains(
|
|
28
|
+
return this.flags?.contains(_types.MessageFlags.Crossposted) ?? false;
|
|
30
29
|
},
|
|
31
30
|
set crossposted (value){
|
|
32
31
|
if (!this.flags) return;
|
|
33
|
-
if (value) this.flags.add(
|
|
34
|
-
else this.flags.remove(
|
|
32
|
+
if (value) this.flags.add(_types.MessageFlags.Crossposted);
|
|
33
|
+
else this.flags.remove(_types.MessageFlags.Crossposted);
|
|
35
34
|
},
|
|
36
35
|
get ephemeral () {
|
|
37
|
-
return this.flags?.contains(
|
|
36
|
+
return this.flags?.contains(_types.MessageFlags.Ephemeral) ?? false;
|
|
38
37
|
},
|
|
39
38
|
set ephemeral (value){
|
|
40
39
|
if (!this.flags) return;
|
|
41
|
-
if (value) this.flags.add(
|
|
42
|
-
else this.flags.remove(
|
|
40
|
+
if (value) this.flags.add(_types.MessageFlags.Ephemeral);
|
|
41
|
+
else this.flags.remove(_types.MessageFlags.Ephemeral);
|
|
43
42
|
},
|
|
44
43
|
get failedToMentionSomeRolesInThread () {
|
|
45
|
-
return this.flags?.contains(
|
|
44
|
+
return this.flags?.contains(_types.MessageFlags.FailedToMentionSomeRolesInThread) ?? false;
|
|
46
45
|
},
|
|
47
46
|
set failedToMentionSomeRolesInThread (value){
|
|
48
47
|
if (!this.flags) return;
|
|
49
|
-
if (value) this.flags.add(
|
|
50
|
-
else this.flags.remove(
|
|
48
|
+
if (value) this.flags.add(_types.MessageFlags.FailedToMentionSomeRolesInThread);
|
|
49
|
+
else this.flags.remove(_types.MessageFlags.FailedToMentionSomeRolesInThread);
|
|
51
50
|
},
|
|
52
51
|
get hasThread () {
|
|
53
|
-
return this.flags?.contains(
|
|
52
|
+
return this.flags?.contains(_types.MessageFlags.HasThread) ?? false;
|
|
54
53
|
},
|
|
55
54
|
set hasThread (value){
|
|
56
55
|
if (!this.flags) return;
|
|
57
|
-
if (value) this.flags.add(
|
|
58
|
-
else this.flags.remove(
|
|
56
|
+
if (value) this.flags.add(_types.MessageFlags.HasThread);
|
|
57
|
+
else this.flags.remove(_types.MessageFlags.HasThread);
|
|
59
58
|
},
|
|
60
59
|
get isCrosspost () {
|
|
61
|
-
return this.flags?.contains(
|
|
60
|
+
return this.flags?.contains(_types.MessageFlags.IsCrosspost) ?? false;
|
|
62
61
|
},
|
|
63
62
|
set isCrosspost (value){
|
|
64
63
|
if (!this.flags) return;
|
|
65
|
-
if (value) this.flags.add(
|
|
66
|
-
else this.flags.remove(
|
|
64
|
+
if (value) this.flags.add(_types.MessageFlags.IsCrosspost);
|
|
65
|
+
else this.flags.remove(_types.MessageFlags.IsCrosspost);
|
|
67
66
|
},
|
|
68
67
|
get loading () {
|
|
69
|
-
return this.flags?.contains(
|
|
68
|
+
return this.flags?.contains(_types.MessageFlags.Loading) ?? false;
|
|
70
69
|
},
|
|
71
70
|
set loading (value){
|
|
72
71
|
if (!this.flags) return;
|
|
73
|
-
if (value) this.flags.add(
|
|
74
|
-
else this.flags.remove(
|
|
72
|
+
if (value) this.flags.add(_types.MessageFlags.Loading);
|
|
73
|
+
else this.flags.remove(_types.MessageFlags.Loading);
|
|
75
74
|
},
|
|
76
75
|
get mentionedUserIds () {
|
|
77
76
|
return this.mentions?.map((user)=>user.id) ?? [];
|
|
@@ -93,28 +92,28 @@ const baseMessage = {
|
|
|
93
92
|
else this.bitfield.remove(3);
|
|
94
93
|
},
|
|
95
94
|
get sourceMessageDeleted () {
|
|
96
|
-
return this.flags?.contains(
|
|
95
|
+
return this.flags?.contains(_types.MessageFlags.SourceMessageDeleted) ?? false;
|
|
97
96
|
},
|
|
98
97
|
set sourceMessageDeleted (value){
|
|
99
98
|
if (!this.flags) return;
|
|
100
|
-
if (value) this.flags.add(
|
|
101
|
-
else this.flags.remove(
|
|
99
|
+
if (value) this.flags.add(_types.MessageFlags.SourceMessageDeleted);
|
|
100
|
+
else this.flags.remove(_types.MessageFlags.SourceMessageDeleted);
|
|
102
101
|
},
|
|
103
102
|
get suppressEmbeds () {
|
|
104
|
-
return this.flags?.contains(
|
|
103
|
+
return this.flags?.contains(_types.MessageFlags.SuppressEmbeds) ?? false;
|
|
105
104
|
},
|
|
106
105
|
set suppressEmbeds (value){
|
|
107
106
|
if (!this.flags) return;
|
|
108
|
-
if (value) this.flags.add(
|
|
109
|
-
else this.flags.remove(
|
|
107
|
+
if (value) this.flags.add(_types.MessageFlags.SuppressEmbeds);
|
|
108
|
+
else this.flags.remove(_types.MessageFlags.SuppressEmbeds);
|
|
110
109
|
},
|
|
111
110
|
get suppressNotifications () {
|
|
112
|
-
return this.flags?.contains(
|
|
111
|
+
return this.flags?.contains(_types.MessageFlags.SuppressNotifications) ?? false;
|
|
113
112
|
},
|
|
114
113
|
set suppressNotifications (value){
|
|
115
114
|
if (!this.flags) return;
|
|
116
|
-
if (value) this.flags.add(
|
|
117
|
-
else this.flags.remove(
|
|
115
|
+
if (value) this.flags.add(_types.MessageFlags.SuppressNotifications);
|
|
116
|
+
else this.flags.remove(_types.MessageFlags.SuppressNotifications);
|
|
118
117
|
},
|
|
119
118
|
get timestamp () {
|
|
120
119
|
return this.id ? (0, _index.snowflakeToTimestamp)(this.id) : 0;
|
|
@@ -128,12 +127,12 @@ const baseMessage = {
|
|
|
128
127
|
else this.bitfield.remove(1);
|
|
129
128
|
},
|
|
130
129
|
get urgent () {
|
|
131
|
-
return this.flags?.contains(
|
|
130
|
+
return this.flags?.contains(_types.MessageFlags.Urgent) ?? false;
|
|
132
131
|
},
|
|
133
132
|
set urgent (value){
|
|
134
133
|
if (!this.flags) return;
|
|
135
|
-
if (value) this.flags.add(
|
|
136
|
-
else this.flags.remove(
|
|
134
|
+
if (value) this.flags.add(_types.MessageFlags.Urgent);
|
|
135
|
+
else this.flags.remove(_types.MessageFlags.Urgent);
|
|
137
136
|
}
|
|
138
137
|
};
|
|
139
138
|
const EMPTY_STRING = '';
|
|
@@ -255,7 +254,7 @@ function transformMessageInteractionMetadata(bot, payload) {
|
|
|
255
254
|
if (props.originalResponseMessageId && payload.original_response_message_id) metadata.originalResponseMessageId = bot.transformers.snowflake(payload.original_response_message_id);
|
|
256
255
|
if (props.triggeringInteractionMetadata && payload.triggering_interaction_metadata) metadata.triggeringInteractionMetadata = transformMessageInteractionMetadata(bot, payload.triggering_interaction_metadata);
|
|
257
256
|
if (props.type) metadata.type = payload.type;
|
|
258
|
-
if (props.
|
|
257
|
+
if (props.user && payload.user) metadata.user = bot.transformers.user(bot, payload.user);
|
|
259
258
|
return bot.transformers.customizers.messageInteractionMetadata(bot, payload, metadata);
|
|
260
259
|
}
|
|
261
260
|
function transformMessageCall(bot, payload) {
|
|
@@ -266,4 +265,4 @@ function transformMessageCall(bot, payload) {
|
|
|
266
265
|
return bot.transformers.customizers.messageCall(bot, payload, call);
|
|
267
266
|
}
|
|
268
267
|
|
|
269
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvbWVzc2FnZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXNjb3JkQXBwbGljYXRpb25JbnRlZ3JhdGlvblR5cGUsXG4gIHR5cGUgRGlzY29yZE1lc3NhZ2UsXG4gIHR5cGUgRGlzY29yZE1lc3NhZ2VDYWxsLFxuICB0eXBlIERpc2NvcmRNZXNzYWdlSW50ZXJhY3Rpb25NZXRhZGF0YSxcbiAgdHlwZSBJbnRlcmFjdGlvblR5cGVzLFxuICB0eXBlIE1lc3NhZ2VBY3Rpdml0eVR5cGVzLFxuICB0eXBlIE1lc3NhZ2VUeXBlcyxcbiAgdHlwZSBTdGlja2VyRm9ybWF0VHlwZXMsXG59IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHsgQ0hBTk5FTF9NRU5USU9OX1JFR0VYIH0gZnJvbSAnLi4vY29uc3RhbnRzLmpzJ1xuaW1wb3J0IHsgc25vd2ZsYWtlVG9UaW1lc3RhbXAsIHR5cGUgQm90LCB0eXBlIFBvbGwgfSBmcm9tICcuLi9pbmRleC5qcydcbmltcG9ydCB7IE1lc3NhZ2VGbGFncyB9IGZyb20gJy4uL3R5cGluZ3MuanMnXG5pbXBvcnQgdHlwZSB7IEF0dGFjaG1lbnQgfSBmcm9tICcuL2F0dGFjaG1lbnQuanMnXG5pbXBvcnQgdHlwZSB7IENoYW5uZWwgfSBmcm9tICcuL2NoYW5uZWwuanMnXG5pbXBvcnQgdHlwZSB7IENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50LmpzJ1xuaW1wb3J0IHR5cGUgeyBFbWJlZCB9IGZyb20gJy4vZW1iZWQuanMnXG5pbXBvcnQgdHlwZSB7IEVtb2ppIH0gZnJvbSAnLi9lbW9qaS5qcydcbmltcG9ydCB0eXBlIHsgTWVtYmVyIH0gZnJvbSAnLi9tZW1iZXIuanMnXG5pbXBvcnQgeyBUb2dnbGVCaXRmaWVsZCB9IGZyb20gJy4vdG9nZ2xlcy9Ub2dnbGVCaXRmaWVsZC5qcydcbmltcG9ydCB0eXBlIHsgVXNlciB9IGZyb20gJy4vdXNlci5qcydcblxuY29uc3QgYmFzZU1lc3NhZ2U6IFBhcnRpYWw8TWVzc2FnZT4gJiBNZXNzYWdlQmFzZSA9IHtcbiAgZ2V0IGNyb3NzcG9zdGVkKCkge1xuICAgIHJldHVybiB0aGlzLmZsYWdzPy5jb250YWlucyhNZXNzYWdlRmxhZ3MuQ3Jvc3Nwb3N0ZWQpID8/IGZhbHNlXG4gIH0sXG4gIHNldCBjcm9zc3Bvc3RlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICghdGhpcy5mbGFncykgcmV0dXJuXG4gICAgaWYgKHZhbHVlKSB0aGlzLmZsYWdzLmFkZChNZXNzYWdlRmxhZ3MuQ3Jvc3Nwb3N0ZWQpXG4gICAgZWxzZSB0aGlzLmZsYWdzLnJlbW92ZShNZXNzYWdlRmxhZ3MuQ3Jvc3Nwb3N0ZWQpXG4gIH0sXG4gIGdldCBlcGhlbWVyYWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmxhZ3M/LmNvbnRhaW5zKE1lc3NhZ2VGbGFncy5FcGhlbWVyYWwpID8/IGZhbHNlXG4gIH0sXG4gIHNldCBlcGhlbWVyYWwodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAoIXRoaXMuZmxhZ3MpIHJldHVyblxuICAgIGlmICh2YWx1ZSkgdGhpcy5mbGFncy5hZGQoTWVzc2FnZUZsYWdzLkVwaGVtZXJhbClcbiAgICBlbHNlIHRoaXMuZmxhZ3MucmVtb3ZlKE1lc3NhZ2VGbGFncy5FcGhlbWVyYWwpXG4gIH0sXG4gIGdldCBmYWlsZWRUb01lbnRpb25Tb21lUm9sZXNJblRocmVhZCgpIHtcbiAgICByZXR1cm4gdGhpcy5mbGFncz8uY29udGFpbnMoTWVzc2FnZUZsYWdzLkZhaWxlZFRvTWVudGlvblNvbWVSb2xlc0luVGhyZWFkKSA/PyBmYWxzZVxuICB9LFxuICBzZXQgZmFpbGVkVG9NZW50aW9uU29tZVJvbGVzSW5UaHJlYWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAoIXRoaXMuZmxhZ3MpIHJldHVyblxuICAgIGlmICh2YWx1ZSkgdGhpcy5mbGFncy5hZGQoTWVzc2FnZUZsYWdzLkZhaWxlZFRvTWVudGlvblNvbWVSb2xlc0luVGhyZWFkKVxuICAgIGVsc2UgdGhpcy5mbGFncy5yZW1vdmUoTWVzc2FnZUZsYWdzLkZhaWxlZFRvTWVudGlvblNvbWVSb2xlc0luVGhyZWFkKVxuICB9LFxuICBnZXQgaGFzVGhyZWFkKCkge1xuICAgIHJldHVybiB0aGlzLmZsYWdzPy5jb250YWlucyhNZXNzYWdlRmxhZ3MuSGFzVGhyZWFkKSA/PyBmYWxzZVxuICB9LFxuICBzZXQgaGFzVGhyZWFkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKCF0aGlzLmZsYWdzKSByZXR1cm5cbiAgICBpZiAodmFsdWUpIHRoaXMuZmxhZ3MuYWRkKE1lc3NhZ2VGbGFncy5IYXNUaHJlYWQpXG4gICAgZWxzZSB0aGlzLmZsYWdzLnJlbW92ZShNZXNzYWdlRmxhZ3MuSGFzVGhyZWFkKVxuICB9LFxuICBnZXQgaXNDcm9zc3Bvc3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmxhZ3M/LmNvbnRhaW5zKE1lc3NhZ2VGbGFncy5Jc0Nyb3NzcG9zdCkgPz8gZmFsc2VcbiAgfSxcbiAgc2V0IGlzQ3Jvc3Nwb3N0KHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKCF0aGlzLmZsYWdzKSByZXR1cm5cbiAgICBpZiAodmFsdWUpIHRoaXMuZmxhZ3MuYWRkKE1lc3NhZ2VGbGFncy5Jc0Nyb3NzcG9zdClcbiAgICBlbHNlIHRoaXMuZmxhZ3MucmVtb3ZlKE1lc3NhZ2VGbGFncy5Jc0Nyb3NzcG9zdClcbiAgfSxcbiAgZ2V0IGxvYWRpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmxhZ3M/LmNvbnRhaW5zKE1lc3NhZ2VGbGFncy5Mb2FkaW5nKSA/PyBmYWxzZVxuICB9LFxuICBzZXQgbG9hZGluZyh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICghdGhpcy5mbGFncykgcmV0dXJuXG4gICAgaWYgKHZhbHVlKSB0aGlzLmZsYWdzLmFkZChNZXNzYWdlRmxhZ3MuTG9hZGluZylcbiAgICBlbHNlIHRoaXMuZmxhZ3MucmVtb3ZlKE1lc3NhZ2VGbGFncy5Mb2FkaW5nKVxuICB9LFxuICBnZXQgbWVudGlvbmVkVXNlcklkcygpIHtcbiAgICByZXR1cm4gdGhpcy5tZW50aW9ucz8ubWFwKCh1c2VyKSA9PiB1c2VyLmlkKSA/PyBbXVxuICB9LFxuICBnZXQgbWVudGlvbkV2ZXJ5b25lKCkge1xuICAgIHJldHVybiB0aGlzLmJpdGZpZWxkPy5jb250YWlucygyKSA/PyBmYWxzZVxuICB9LFxuICBzZXQgbWVudGlvbkV2ZXJ5b25lKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKCF0aGlzLmJpdGZpZWxkKSByZXR1cm5cbiAgICBpZiAodmFsdWUpIHRoaXMuYml0ZmllbGQuYWRkKDIpXG4gICAgZWxzZSB0aGlzLmJpdGZpZWxkLnJlbW92ZSgyKVxuICB9LFxuICBnZXQgcGlubmVkKCkge1xuICAgIHJldHVybiB0aGlzLmJpdGZpZWxkPy5jb250YWlucygzKSA/PyBmYWxzZVxuICB9LFxuICBzZXQgcGlubmVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKCF0aGlzLmJpdGZpZWxkKSByZXR1cm5cbiAgICBpZiAodmFsdWUpIHRoaXMuYml0ZmllbGQuYWRkKDMpXG4gICAgZWxzZSB0aGlzLmJpdGZpZWxkLnJlbW92ZSgzKVxuICB9LFxuICBnZXQgc291cmNlTWVzc2FnZURlbGV0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmxhZ3M/LmNvbnRhaW5zKE1lc3NhZ2VGbGFncy5Tb3VyY2VNZXNzYWdlRGVsZXRlZCkgPz8gZmFsc2VcbiAgfSxcbiAgc2V0IHNvdXJjZU1lc3NhZ2VEZWxldGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKCF0aGlzLmZsYWdzKSByZXR1cm5cbiAgICBpZiAodmFsdWUpIHRoaXMuZmxhZ3MuYWRkKE1lc3NhZ2VGbGFncy5Tb3VyY2VNZXNzYWdlRGVsZXRlZClcbiAgICBlbHNlIHRoaXMuZmxhZ3MucmVtb3ZlKE1lc3NhZ2VGbGFncy5Tb3VyY2VNZXNzYWdlRGVsZXRlZClcbiAgfSxcbiAgZ2V0IHN1cHByZXNzRW1iZWRzKCkge1xuICAgIHJldHVybiB0aGlzLmZsYWdzPy5jb250YWlucyhNZXNzYWdlRmxhZ3MuU3VwcHJlc3NFbWJlZHMpID8/IGZhbHNlXG4gIH0sXG4gIHNldCBzdXBwcmVzc0VtYmVkcyh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICghdGhpcy5mbGFncykgcmV0dXJuXG4gICAgaWYgKHZhbHVlKSB0aGlzLmZsYWdzLmFkZChNZXNzYWdlRmxhZ3MuU3VwcHJlc3NFbWJlZHMpXG4gICAgZWxzZSB0aGlzLmZsYWdzLnJlbW92ZShNZXNzYWdlRmxhZ3MuU3VwcHJlc3NFbWJlZHMpXG4gIH0sXG4gIGdldCBzdXBwcmVzc05vdGlmaWNhdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmxhZ3M/LmNvbnRhaW5zKE1lc3NhZ2VGbGFncy5TdXBwcmVzc05vdGlmaWNhdGlvbnMpID8/IGZhbHNlXG4gIH0sXG4gIHNldCBzdXBwcmVzc05vdGlmaWNhdGlvbnModmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAoIXRoaXMuZmxhZ3MpIHJldHVyblxuICAgIGlmICh2YWx1ZSkgdGhpcy5mbGFncy5hZGQoTWVzc2FnZUZsYWdzLlN1cHByZXNzTm90aWZpY2F0aW9ucylcbiAgICBlbHNlIHRoaXMuZmxhZ3MucmVtb3ZlKE1lc3NhZ2VGbGFncy5TdXBwcmVzc05vdGlmaWNhdGlvbnMpXG4gIH0sXG4gIGdldCB0aW1lc3RhbXAoKSB7XG4gICAgcmV0dXJuIHRoaXMuaWQgPyBzbm93Zmxha2VUb1RpbWVzdGFtcCh0aGlzLmlkKSA6IDBcbiAgfSxcbiAgZ2V0IHR0cygpIHtcbiAgICByZXR1cm4gdGhpcy5iaXRmaWVsZD8uY29udGFpbnMoMSkgPz8gZmFsc2VcbiAgfSxcbiAgc2V0IHR0cyh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICghdGhpcy5iaXRmaWVsZCkgcmV0dXJuXG4gICAgaWYgKHZhbHVlKSB0aGlzLmJpdGZpZWxkLmFkZCgxKVxuICAgIGVsc2UgdGhpcy5iaXRmaWVsZC5yZW1vdmUoMSlcbiAgfSxcbiAgZ2V0IHVyZ2VudCgpIHtcbiAgICByZXR1cm4gdGhpcy5mbGFncz8uY29udGFpbnMoTWVzc2FnZUZsYWdzLlVyZ2VudCkgPz8gZmFsc2VcbiAgfSxcbiAgc2V0IHVyZ2VudCh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICghdGhpcy5mbGFncykgcmV0dXJuXG4gICAgaWYgKHZhbHVlKSB0aGlzLmZsYWdzLmFkZChNZXNzYWdlRmxhZ3MuVXJnZW50KVxuICAgIGVsc2UgdGhpcy5mbGFncy5yZW1vdmUoTWVzc2FnZUZsYWdzLlVyZ2VudClcbiAgfSxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlQmFzZSB7XG4gIC8qKiBIb2xkcyBhbGwgdGhlIGJvb2xlYW4gdmFsdWVzIG9uIHRoaXMgbWVzc2FnZS4gKi9cbiAgYml0ZmllbGQ/OiBUb2dnbGVCaXRmaWVsZFxuICAvKiogV2hldGhlciB0aGlzIG1lc3NhZ2UgaGFzIGJlZW4gcHVibGlzaGVkIHRvIHN1YnNjcmliZWQgY2hhbm5lbHMgKHZpYSBDaGFubmVsIEZvbGxvd2luZykgKi9cbiAgY3Jvc3Nwb3N0ZWQ6IGJvb2xlYW5cbiAgLyoqIFdoZXRoZXIgdGhpcyBtZXNzYWdlIGlzIG9ubHkgdmlzaWJsZSB0byB0aGUgdXNlciB3aG8gaW52b2tlZCB0aGUgSW50ZXJhY3Rpb24gKi9cbiAgZXBoZW1lcmFsOiBib29sZWFuXG4gIC8qKiBXaGV0aGVyIHRoaXMgbWVzc2FnZSBmYWlsZWQgdG8gbWVudGlvbiBzb21lIHJvbGVzIGFuZCBhZGQgdGhlaXIgbWVtYmVycyB0byB0aGUgdGhyZWFkICovXG4gIGZhaWxlZFRvTWVudGlvblNvbWVSb2xlc0luVGhyZWFkOiBib29sZWFuXG4gIC8qKiBNZXNzYWdlIGZsYWdzIGNvbWJpbmVkIGFzIGEgYml0ZmllbGQgKi9cbiAgZmxhZ3M/OiBUb2dnbGVCaXRmaWVsZFxuICAvKiogV2hldGhlciB0aGlzIG1lc3NhZ2UgaGFzIGFuIGFzc29jaWF0ZWQgdGhyZWFkLCB3aXRoIHRoZSBzYW1lIGlkIGFzIHRoZSBtZXNzYWdlICovXG4gIGhhc1RocmVhZDogYm9vbGVhblxuICAvKiogV2hldGhlciB0aGlzIG1lc3NhZ2Ugb3JpZ2luYXRlZCBmcm9tIGEgbWVzc2FnZSBpbiBhbm90aGVyIGNoYW5uZWwgKHZpYSBDaGFubmVsIEZvbGxvd2luZykgKi9cbiAgaXNDcm9zc3Bvc3Q6IGJvb2xlYW5cbiAgLyoqIFdoZXRoZXIgdGhpcyBtZXNzYWdlIGlzIGFuIEludGVyYWN0aW9uIFJlc3BvbnNlIGFuZCB0aGUgYm90IGlzIFwidGhpbmtpbmdcIiAqL1xuICBsb2FkaW5nOiBib29sZWFuXG4gIC8qKiBUaGUgaWRzIG9mIHRoZSB1c2VycyB3aG8gd2VyZSBtZW50aW9uZWQgaW4gdGhpcyBtZXNzYWdlLiAqL1xuICBtZW50aW9uZWRVc2VySWRzOiBiaWdpbnRbXVxuICAvKiogV2hldGhlciB0aGlzIG1lc3NhZ2UgbWVudGlvbnMgZXZlcnlvbmUgKi9cbiAgbWVudGlvbkV2ZXJ5b25lOiBib29sZWFuXG4gIC8qKiBXaGV0aGVyIHRoaXMgbWVzc2FnZSBpcyBwaW5uZWQgKi9cbiAgcGlubmVkOiBib29sZWFuXG4gIC8qKiBXaGV0aGVyIHRoZSBzb3VyY2UgbWVzc2FnZSBmb3IgdGhpcyBjcm9zc3Bvc3QgaGFzIGJlZW4gZGVsZXRlZCAodmlhIENoYW5uZWwgRm9sbG93aW5nKSAqL1xuICBzb3VyY2VNZXNzYWdlRGVsZXRlZDogYm9vbGVhblxuICAvKiogV2hldGhlciBkbyBub3QgaW5jbHVkZSBhbnkgZW1iZWRzIHdoZW4gc2VyaWFsaXppbmcgdGhpcyBtZXNzYWdlICovXG4gIHN1cHByZXNzRW1iZWRzOiBib29sZWFuXG4gIC8qKiBXaGV0aGVyIHRoaXMgbWVzc2FnZSB3aWxsIG5vdCB0cmlnZ2VyIHB1c2ggYW5kIGRlc2t0b3Agbm90aWZpY2F0aW9ucyAqL1xuICBzdXBwcmVzc05vdGlmaWNhdGlvbnM6IGJvb2xlYW5cbiAgLyoqIFRoZSB0aW1lc3RhbXAgaW4gbWlsbGlzZWNvbmRzIHdoZW4gdGhpcyBtZXNzYWdlIHdhcyBjcmVhdGVkICovXG4gIHRpbWVzdGFtcDogbnVtYmVyXG4gIC8qKiBXaGV0aGVyIHRoaXMgd2FzIGEgVFRTIG1lc3NhZ2UuICovXG4gIHR0czogYm9vbGVhblxuICAvKiogV2hldGhlciB0aGlzIG1lc3NhZ2UgY2FtZSBmcm9tIHRoZSB1cmdlbnQgbWVzc2FnZSBzeXN0ZW0gKi9cbiAgdXJnZW50OiBib29sZWFuXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2VCYXNlIHtcbiAgLyoqIFNlbnQgd2l0aCBSaWNoIFByZXNlbmNlLXJlbGF0ZWQgY2hhdCBlbWJlZHMgKi9cbiAgYWN0aXZpdHk/OiB7XG4gICAgLyoqIFR5cGUgb2YgbWVzc2FnZSBhY3Rpdml0eSAqL1xuICAgIHR5cGU6IE1lc3NhZ2VBY3Rpdml0eVR5cGVzXG4gICAgLyoqIHBhcnR5X2lkIGZyb20gYSBSaWNoIFByZXNlbmNlIGV2ZW50ICovXG4gICAgcGFydHlJZD86IHN0cmluZ1xuICB9XG4gIC8qKiBpZiB0aGUgbWVzc2FnZSBpcyBhbiBJbnRlcmFjdGlvbiBvciBhcHBsaWNhdGlvbi1vd25lZCB3ZWJob29rLCB0aGlzIGlzIHRoZSBpZCBvZiB0aGUgYXBwbGljYXRpb24gKi9cbiAgYXBwbGljYXRpb25JZD86IGJpZ2ludFxuICAvKiogQW55IGF0dGFjaGVkIGZpbGVzIG9uIHRoaXMgbWVzc2FnZS4gKi9cbiAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50W11cbiAgLyoqIFRoZSBhdXRob3Igb2YgdGhpcyBtZXNzYWdlIChub3QgZ3VhcmFudGVlZCB0byBiZSBhIHZhbGlkIHVzZXIpIE5vdGU6IFRoZSBhdXRob3Igb2JqZWN0IGZvbGxvd3MgdGhlIHN0cnVjdHVyZSBvZiB0aGUgdXNlciBvYmplY3QsIGJ1dCBpcyBvbmx5IGEgdmFsaWQgdXNlciBpbiB0aGUgY2FzZSB3aGVyZSB0aGUgbWVzc2FnZSBpcyBnZW5lcmF0ZWQgYnkgYSB1c2VyIG9yIGJvdCB1c2VyLiBJZiB0aGUgbWVzc2FnZSBpcyBnZW5lcmF0ZWQgYnkgYSB3ZWJob29rLCB0aGUgYXV0aG9yIG9iamVjdCBjb3JyZXNwb25kcyB0byB0aGUgd2ViaG9vaydzIGlkLCB1c2VybmFtZSwgYW5kIGF2YXRhci4gWW91IGNhbiB0ZWxsIGlmIGEgbWVzc2FnZSBpcyBnZW5lcmF0ZWQgYnkgYSB3ZWJob29rIGJ5IGNoZWNraW5nIGZvciB0aGUgd2ViaG9va19pZCBvbiB0aGUgbWVzc2FnZSBvYmplY3QuICovXG4gIGF1dGhvcjogVXNlclxuICAvKiogaWQgb2YgdGhlIGNoYW5uZWwgdGhlIG1lc3NhZ2Ugd2FzIHNlbnQgaW4gKi9cbiAgY2hhbm5lbElkOiBiaWdpbnRcbiAgLyoqIFRoZSBjb21wb25lbnRzIHJlbGF0ZWQgdG8gdGhpcyBtZXNzYWdlICovXG4gIGNvbXBvbmVudHM6IENvbXBvbmVudFtdXG4gIC8qKiBDb250ZW50cyBvZiB0aGUgbWVzc2FnZSAqL1xuICBjb250ZW50OiBzdHJpbmdcbiAgLyoqIFRoZSB0aW1lc3RhbXAgaW4gbWlsbGlzZWNvbmRzIHdoZW4gdGhpcyBtZXNzYWdlIHdhcyBlZGl0ZWQgbGFzdC4gKi9cbiAgZWRpdGVkVGltZXN0YW1wPzogbnVtYmVyXG4gIC8qKiBBbnkgZW1iZWRkZWQgY29udGVudCAqL1xuICBlbWJlZHM/OiBFbWJlZFtdXG4gIC8qKiBpZCBvZiB0aGUgZ3VpbGQgdGhlIG1lc3NhZ2Ugd2FzIHNlbnQgaW4gTm90ZTogRm9yIE1FU1NBR0VfQ1JFQVRFIGFuZCBNRVNTQUdFX1VQREFURSBldmVudHMsIHRoZSBtZXNzYWdlIG9iamVjdCBtYXkgbm90IGNvbnRhaW4gYSBndWlsZF9pZCBvciBtZW1iZXIgZmllbGQgc2luY2UgdGhlIGV2ZW50cyBhcmUgc2VudCBkaXJlY3RseSB0byB0aGUgcmVjZWl2aW5nIHVzZXIgYW5kIHRoZSBib3Qgd2hvIHNlbnQgdGhlIG1lc3NhZ2UsIHJhdGhlciB0aGFuIGJlaW5nIHNlbnQgdGhyb3VnaCB0aGUgZ3VpbGQgbGlrZSBub24tZXBoZW1lcmFsIG1lc3NhZ2VzLiAqL1xuICBndWlsZElkPzogYmlnaW50XG4gIC8qKiBpZCBvZiB0aGUgbWVzc2FnZSAqL1xuICBpZDogYmlnaW50XG4gIC8qKiBzZW50IGlmIHRoZSBtZXNzYWdlIGlzIHNlbnQgYXMgYSByZXN1bHQgb2YgYW4gaW50ZXJhY3Rpb24gKi9cbiAgaW50ZXJhY3Rpb25NZXRhZGF0YT86IE1lc3NhZ2VJbnRlcmFjdGlvbk1ldGFkYXRhXG4gIC8qKlxuICAgKiBTZW50IGlmIHRoZSBtZXNzYWdlIGlzIGEgcmVzcG9uc2UgdG8gYW4gSW50ZXJhY3Rpb25cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgRGVwcmVjYXRlZCBpbiBmYXZvciBvZiB7QGxpbmsgaW50ZXJhY3Rpb25NZXRhZGF0YX1cbiAgICovXG4gIGludGVyYWN0aW9uPzoge1xuICAgIC8qKiBJZCBvZiB0aGUgaW50ZXJhY3Rpb24gKi9cbiAgICBpZDogYmlnaW50XG4gICAgLyoqIFRoZSBtZW1iZXIgd2hvIGludm9rZWQgdGhlIGludGVyYWN0aW9uIGluIHRoZSBndWlsZCAgKi9cbiAgICBtZW1iZXI/OiBNZW1iZXJcbiAgICAvKiogVGhlIG5hbWUgb2YgdGhlIEFwcGxpY2F0aW9uQ29tbWFuZCBpbmNsdWRpbmcgdGhlIG5hbWUgb2YgdGhlIHN1YmNvbW1hbmQvc3ViY29tbWFuZCBncm91cCAqL1xuICAgIG5hbWU6IHN0cmluZ1xuICAgIC8qKiBUaGUgdHlwZSBvZiBpbnRlcmFjdGlvbiAqL1xuICAgIHR5cGU6IEludGVyYWN0aW9uVHlwZXNcbiAgICAvKiogVGhlIHVzZXIgd2hvIGludm9rZWQgdGhlIGludGVyYWN0aW9uICovXG4gICAgdXNlcjogVXNlclxuICB9XG4gIC8qKiBNZW1iZXIgcHJvcGVydGllcyBmb3IgdGhpcyBtZXNzYWdlJ3MgYXV0aG9yIE5vdGU6IFRoZSBtZW1iZXIgb2JqZWN0IGV4aXN0cyBpbiBNRVNTQUdFX0NSRUFURSBhbmQgTUVTU0FHRV9VUERBVEUgZXZlbnRzIGZyb20gdGV4dC1iYXNlZCBndWlsZCBjaGFubmVscy4gVGhpcyBhbGxvd3MgYm90cyB0byBvYnRhaW4gcmVhbC10aW1lIG1lbWJlciBkYXRhIHdpdGhvdXQgcmVxdWlyaW5nIGJvdHMgdG8gc3RvcmUgbWVtYmVyIHN0YXRlIGluIG1lbW9yeS4gKi9cbiAgbWVtYmVyPzogTWVtYmVyXG4gIC8qKiBVc2VycyBzcGVjaWZpY2FsbHkgbWVudGlvbmVkIGluIHRoZSBtZXNzYWdlIE5vdGU6IFRoZSB1c2VyIG9iamVjdHMgaW4gdGhlIG1lbnRpb25zIGFycmF5IHdpbGwgb25seSBoYXZlIHRoZSBwYXJ0aWFsIG1lbWJlciBmaWVsZCBwcmVzZW50IGluIE1FU1NBR0VfQ1JFQVRFIGFuZCBNRVNTQUdFX1VQREFURSBldmVudHMgZnJvbSB0ZXh0LWJhc2VkIGd1aWxkIGNoYW5uZWxzLiAqL1xuICBtZW50aW9ucz86IFVzZXJbXVxuICAvKiogQ2hhbm5lbHMgc3BlY2lmaWNhbGx5IG1lbnRpb25lZCBpbiB0aGlzIG1lc3NhZ2UgTm90ZTogTm90IGFsbCBjaGFubmVsIG1lbnRpb25zIGluIGEgbWVzc2FnZSB3aWxsIGFwcGVhciBpbiBtZW50aW9uX2NoYW5uZWxzLiBPbmx5IHRleHR1YWwgY2hhbm5lbHMgdGhhdCBhcmUgdmlzaWJsZSB0byBldmVyeW9uZSBpbiBhIGRpc2NvdmVyYWJsZSBndWlsZCB3aWxsIGV2ZXIgYmUgaW5jbHVkZWQuIE9ubHkgY3Jvc3Nwb3N0ZWQgbWVzc2FnZXMgKHZpYSBDaGFubmVsIEZvbGxvd2luZykgY3VycmVudGx5IGluY2x1ZGUgbWVudGlvbl9jaGFubmVscyBhdCBhbGwuIElmIG5vIG1lbnRpb25zIGluIHRoZSBtZXNzYWdlIG1lZXQgdGhlc2UgcmVxdWlyZW1lbnRzLCB0aGlzIGZpZWxkIHdpbGwgbm90IGJlIHNlbnQuICovXG4gIG1lbnRpb25lZENoYW5uZWxJZHM/OiBiaWdpbnRbXVxuICAvKiogUm9sZXMgc3BlY2lmaWNhbGx5IG1lbnRpb25lZCBpbiB0aGlzIG1lc3NhZ2UgKi9cbiAgbWVudGlvbmVkUm9sZUlkcz86IGJpZ2ludFtdXG4gIC8qKiBEYXRhIHNob3dpbmcgdGhlIHNvdXJjZSBvZiBhIGNyb3NzcG9zdGVkIGNoYW5uZWwgZm9sbG93IGFkZCwgcGluIG9yIHJlcGx5IG1lc3NhZ2UgKi9cbiAgbWVzc2FnZVJlZmVyZW5jZT86IHtcbiAgICAvKiogaWQgb2YgdGhlIG9yaWdpbmF0aW5nIG1lc3NhZ2UncyBjaGFubmVsIE5vdGU6IGNoYW5uZWxfaWQgaXMgb3B0aW9uYWwgd2hlbiBjcmVhdGluZyBhIHJlcGx5LCBidXQgd2lsbCBhbHdheXMgYmUgcHJlc2VudCB3aGVuIHJlY2VpdmluZyBhbiBldmVudC9yZXNwb25zZSB0aGF0IGluY2x1ZGVzIHRoaXMgZGF0YSBtb2RlbC4gKi9cbiAgICBjaGFubmVsSWQ/OiBiaWdpbnRcbiAgICAvKiogaWQgb2YgdGhlIG9yaWdpbmF0aW5nIG1lc3NhZ2UncyBndWlsZCAqL1xuICAgIGd1aWxkSWQ/OiBiaWdpbnRcbiAgICAvKiogaWQgb2YgdGhlIG9yaWdpbmF0aW5nIG1lc3NhZ2UgKi9cbiAgICBtZXNzYWdlSWQ/OiBiaWdpbnRcbiAgfVxuICAvKiogVXNlZCBmb3IgdmFsaWRhdGluZyBhIG1lc3NhZ2Ugd2FzIHNlbnQgKi9cbiAgbm9uY2U/OiBzdHJpbmcgfCBudW1iZXJcbiAgLyoqIFJlYWN0aW9ucyBvbiB0aGlzIG1lc3NhZ2UuICovXG4gIHJlYWN0aW9ucz86IEFycmF5PHtcbiAgICAvKiogV2hldGhlciB0aGUgY3VycmVudCB1c2VyIHJlYWN0ZWQgdXNpbmcgdGhpcyBlbW9qaSAqL1xuICAgIG1lOiBib29sZWFuXG4gICAgLyoqXHRXaGV0aGVyIHRoZSBjdXJyZW50IHVzZXIgc3VwZXItcmVhY3RlZCB1c2luZyB0aGlzIGVtb2ppICovXG4gICAgbWVCdXJzdDogYm9vbGVhblxuICAgIC8qKiBUaW1lcyB0aGlzIGVtb2ppIGhhcyBiZWVuIHVzZWQgdG8gcmVhY3QgKi9cbiAgICBjb3VudDogbnVtYmVyXG4gICAgLyoqXHRSZWFjdGlvbiBjb3VudCBkZXRhaWxzIG9iamVjdCAqL1xuICAgIGNvdW50RGV0YWlsczoge1xuICAgICAgLyoqIENvdW50IG9mIHN1cGVyIHJlYWN0aW9ucyAqL1xuICAgICAgYnVyc3Q6IG51bWJlclxuICAgICAgLyoqXHRDb3VudCBvZiBub3JtYWwgcmVhY3Rpb25zICovXG4gICAgICBub3JtYWw6IG51bWJlclxuICAgIH1cbiAgICAvKiogRW1vamkgaW5mb3JtYXRpb24gKi9cbiAgICBlbW9qaTogRW1vamlcbiAgICAvKiogSEVYIGNvbG9ycyB1c2VkIGZvciBzdXBlciByZWFjdGlvbiAqL1xuICAgIGJ1cnN0Q29sb3JzOiBzdHJpbmdbXVxuICB9PlxuICAvKiogU2VudCBpZiB0aGUgbWVzc2FnZSBjb250YWlucyBzdGlja2VycyAqL1xuICBzdGlja2VySXRlbXM/OiBBcnJheTx7XG4gICAgLyoqIFRoZSBpZCBvZiB0aGlzIHN0aWNrZXIuICovXG4gICAgaWQ6IGJpZ2ludFxuICAgIC8qKiBUaGUgbmFtZSBvZiB0aGlzIHN0aWNrZXIuICovXG4gICAgbmFtZTogc3RyaW5nXG4gICAgLyoqIFRoZSB0eXBlIG9mIHRoaXMgc3RpY2tlcnMgZm9ybWF0LiAqL1xuICAgIGZvcm1hdFR5cGU6IFN0aWNrZXJGb3JtYXRUeXBlc1xuICB9PlxuICAvKiogVHlwZSBvZiBtZXNzYWdlICovXG4gIHR5cGU6IE1lc3NhZ2VUeXBlc1xuICAvKiogVGhlIHRocmVhZCB0aGF0IHdhcyBzdGFydGVkIGZyb20gdGhpcyBtZXNzYWdlLCBpbmNsdWRlcyB0aHJlYWQgbWVtYmVyIG9iamVjdCAgKi9cbiAgdGhyZWFkPzogQ2hhbm5lbFxuICAvKiogSWYgdGhlIG1lc3NhZ2UgaXMgZ2VuZXJhdGVkIGJ5IGEgd2ViaG9vaywgdGhpcyBpcyB0aGUgd2ViaG9vaydzIGlkICovXG4gIHdlYmhvb2tJZD86IGJpZ2ludFxuICAvKiogQSBwb2xsISAqL1xuICBwb2xsPzogUG9sbFxuICAvKiogVGhlIGNhbGwgYXNzb2NpYXRlZCB3aXRoIHRoZSBtZXNzYWdlICovXG4gIGNhbGw/OiBNZXNzYWdlQ2FsbFxufVxuXG5jb25zdCBFTVBUWV9TVFJJTkcgPSAnJ1xuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtTWVzc2FnZShib3Q6IEJvdCwgcGF5bG9hZDogRGlzY29yZE1lc3NhZ2UpOiBNZXNzYWdlIHtcbiAgY29uc3QgZ3VpbGRJZCA9IHBheWxvYWQuZ3VpbGRfaWQgPyBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmd1aWxkX2lkKSA6IHVuZGVmaW5lZFxuICBjb25zdCB1c2VySWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmF1dGhvci5pZClcblxuICBjb25zdCBtZXNzYWdlOiBNZXNzYWdlID0gT2JqZWN0LmNyZWF0ZShiYXNlTWVzc2FnZSlcbiAgbWVzc2FnZS5iaXRmaWVsZCA9IG5ldyBUb2dnbGVCaXRmaWVsZCgpXG4gIG1lc3NhZ2UuZmxhZ3MgPSBuZXcgVG9nZ2xlQml0ZmllbGQocGF5bG9hZC5mbGFncylcblxuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMubWVzc2FnZVxuXG4gIGlmIChwcm9wcy5hdXRob3IgJiYgcGF5bG9hZC5hdXRob3IpIG1lc3NhZ2UuYXV0aG9yID0gYm90LnRyYW5zZm9ybWVycy51c2VyKGJvdCwgcGF5bG9hZC5hdXRob3IpXG4gIGlmIChwcm9wcy5hcHBsaWNhdGlvbklkICYmIHBheWxvYWQuYXBwbGljYXRpb25faWQpIG1lc3NhZ2UuYXBwbGljYXRpb25JZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuYXBwbGljYXRpb25faWQpXG4gIGlmIChwcm9wcy5hdHRhY2htZW50cyAmJiBwYXlsb2FkLmF0dGFjaG1lbnRzPy5sZW5ndGgpXG4gICAgbWVzc2FnZS5hdHRhY2htZW50cyA9IHBheWxvYWQuYXR0YWNobWVudHMubWFwKChhdHRhY2htZW50KSA9PiBib3QudHJhbnNmb3JtZXJzLmF0dGFjaG1lbnQoYm90LCBhdHRhY2htZW50KSlcbiAgaWYgKHByb3BzLmNoYW5uZWxJZCAmJiBwYXlsb2FkLmNoYW5uZWxfaWQpIG1lc3NhZ2UuY2hhbm5lbElkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5jaGFubmVsX2lkKVxuICBpZiAocHJvcHMuY29tcG9uZW50cyAmJiBwYXlsb2FkLmNvbXBvbmVudHM/Lmxlbmd0aCkgbWVzc2FnZS5jb21wb25lbnRzID0gcGF5bG9hZC5jb21wb25lbnRzLm1hcCgoY29tcCkgPT4gYm90LnRyYW5zZm9ybWVycy5jb21wb25lbnQoYm90LCBjb21wKSlcbiAgaWYgKHByb3BzLmNvbnRlbnQgJiYgcGF5bG9hZC5jb250ZW50KSBtZXNzYWdlLmNvbnRlbnQgPSBwYXlsb2FkLmNvbnRlbnQgPz8gRU1QVFlfU1RSSU5HXG4gIGlmIChwcm9wcy5lZGl0ZWRUaW1lc3RhbXAgJiYgcGF5bG9hZC5lZGl0ZWRfdGltZXN0YW1wKSBtZXNzYWdlLmVkaXRlZFRpbWVzdGFtcCA9IERhdGUucGFyc2UocGF5bG9hZC5lZGl0ZWRfdGltZXN0YW1wKVxuICBpZiAocHJvcHMuZW1iZWRzICYmIHBheWxvYWQuZW1iZWRzPy5sZW5ndGgpIG1lc3NhZ2UuZW1iZWRzID0gcGF5bG9hZC5lbWJlZHMubWFwKChlbWJlZCkgPT4gYm90LnRyYW5zZm9ybWVycy5lbWJlZChib3QsIGVtYmVkKSlcbiAgaWYgKHByb3BzLmd1aWxkSWQgJiYgZ3VpbGRJZCkgbWVzc2FnZS5ndWlsZElkID0gZ3VpbGRJZFxuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgbWVzc2FnZS5pZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaWQpXG4gIGlmIChwYXlsb2FkLmludGVyYWN0aW9uX21ldGFkYXRhKSBtZXNzYWdlLmludGVyYWN0aW9uTWV0YWRhdGEgPSB0cmFuc2Zvcm1NZXNzYWdlSW50ZXJhY3Rpb25NZXRhZGF0YShib3QsIHBheWxvYWQuaW50ZXJhY3Rpb25fbWV0YWRhdGEpXG4gIGlmIChwYXlsb2FkLmludGVyYWN0aW9uKSB7XG4gICAgY29uc3QgaW50ZXJhY3Rpb24gPSB7fSBhcyBOb25OdWxsYWJsZTxNZXNzYWdlWydpbnRlcmFjdGlvbiddPlxuICAgIGxldCBlZGl0ZWQgPSBmYWxzZVxuICAgIGlmIChwcm9wcy5pbnRlcmFjdGlvbi5pZCkge1xuICAgICAgaW50ZXJhY3Rpb24uaWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmludGVyYWN0aW9uLmlkKVxuICAgICAgZWRpdGVkID0gdHJ1ZVxuICAgIH1cbiAgICBpZiAocHJvcHMuaW50ZXJhY3Rpb24ubWVtYmVyICYmIHBheWxvYWQuaW50ZXJhY3Rpb24ubWVtYmVyKSB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE86IHBhcnRpYWwgLSBjaGVjayB3aHkgdGhpcyBpcyBwYXJ0aWFsIGFuZCBoYW5kbGUgYXMgbmVlZGVkXG4gICAgICBpbnRlcmFjdGlvbi5tZW1iZXIgPSBib3QudHJhbnNmb3JtZXJzLm1lbWJlcihib3QsIHBheWxvYWQuaW50ZXJhY3Rpb24ubWVtYmVyLCBndWlsZElkLCBwYXlsb2FkLmludGVyYWN0aW9uLnVzZXIuaWQpXG4gICAgICBlZGl0ZWQgPSB0cnVlXG4gICAgfVxuICAgIGlmIChwcm9wcy5pbnRlcmFjdGlvbi5uYW1lKSB7XG4gICAgICBpbnRlcmFjdGlvbi5uYW1lID0gcGF5bG9hZC5pbnRlcmFjdGlvbi5uYW1lXG4gICAgICBlZGl0ZWQgPSB0cnVlXG4gICAgfVxuICAgIGlmIChwcm9wcy5pbnRlcmFjdGlvbi50eXBlKSB7XG4gICAgICBpbnRlcmFjdGlvbi50eXBlID0gcGF5bG9hZC5pbnRlcmFjdGlvbi50eXBlXG4gICAgICBlZGl0ZWQgPSB0cnVlXG4gICAgfVxuICAgIGlmIChwcm9wcy5pbnRlcmFjdGlvbi51c2VyKSB7XG4gICAgICBpbnRlcmFjdGlvbi51c2VyID0gYm90LnRyYW5zZm9ybWVycy51c2VyKGJvdCwgcGF5bG9hZC5pbnRlcmFjdGlvbi51c2VyKVxuICAgICAgZWRpdGVkID0gdHJ1ZVxuICAgIH1cblxuICAgIGlmIChlZGl0ZWQpIG1lc3NhZ2UuaW50ZXJhY3Rpb24gPSBpbnRlcmFjdGlvblxuICB9XG4gIGlmIChwcm9wcy5tZW1iZXIgJiYgZ3VpbGRJZCAmJiBwYXlsb2FkLm1lbWJlcikgbWVzc2FnZS5tZW1iZXIgPSBib3QudHJhbnNmb3JtZXJzLm1lbWJlcihib3QsIHBheWxvYWQubWVtYmVyLCBndWlsZElkLCB1c2VySWQpXG4gIGlmIChwYXlsb2FkLm1lbnRpb25fZXZlcnlvbmUpIG1lc3NhZ2UubWVudGlvbkV2ZXJ5b25lID0gdHJ1ZVxuICBpZiAocHJvcHMubWVudGlvbmVkQ2hhbm5lbElkcyAmJiBwYXlsb2FkLm1lbnRpb25fY2hhbm5lbHM/Lmxlbmd0aCkge1xuICAgIG1lc3NhZ2UubWVudGlvbmVkQ2hhbm5lbElkcyA9IFtcbiAgICAgIC8vIEtlZXAgYW55IGlkcyB0aHQgZGlzY29yZCBzZW5kc1xuICAgICAgLi4uKHBheWxvYWQubWVudGlvbl9jaGFubmVscyA/PyBbXSkubWFwKChtKSA9PiBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShtLmlkKSksXG4gICAgICAvLyBBZGQgYW55IG90aGVyIGlkcyB0aGF0IGNhbiBiZSB2YWxpZGF0ZWQgaW4gYSBjaGFubmVsIG1lbnRpb24gZm9ybWF0XG4gICAgICAuLi4ocGF5bG9hZC5jb250ZW50Py5tYXRjaChDSEFOTkVMX01FTlRJT05fUkVHRVgpID8/IFtdKS5tYXAoKHRleHQpID0+XG4gICAgICAgIC8vIGNvbnZlcnRzIHRoZSA8IzEyMz4gaW50byAxMjNcbiAgICAgICAgYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UodGV4dC5zdWJzdHJpbmcoMiwgdGV4dC5sZW5ndGggLSAxKSksXG4gICAgICApLFxuICAgIF1cbiAgfVxuICBpZiAocHJvcHMubWVudGlvbmVkUm9sZUlkcyAmJiBwYXlsb2FkLm1lbnRpb25fcm9sZXM/Lmxlbmd0aClcbiAgICBtZXNzYWdlLm1lbnRpb25lZFJvbGVJZHMgPSBwYXlsb2FkLm1lbnRpb25fcm9sZXMubWFwKChpZCkgPT4gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UoaWQpKVxuICBpZiAocHJvcHMubWVudGlvbnMgJiYgcGF5bG9hZC5tZW50aW9ucz8ubGVuZ3RoKSBtZXNzYWdlLm1lbnRpb25zID0gcGF5bG9hZC5tZW50aW9ucy5tYXAoKHVzZXIpID0+IGJvdC50cmFuc2Zvcm1lcnMudXNlcihib3QsIHVzZXIpKVxuICBpZiAocGF5bG9hZC5tZXNzYWdlX3JlZmVyZW5jZSkge1xuICAgIGNvbnN0IHJlZmVyZW5jZSA9IHt9IGFzIE5vbk51bGxhYmxlPE1lc3NhZ2VbJ21lc3NhZ2VSZWZlcmVuY2UnXT5cbiAgICBsZXQgZWRpdGVkID0gZmFsc2VcblxuICAgIGlmIChwcm9wcy5tZXNzYWdlUmVmZXJlbmNlLmNoYW5uZWxJZCAmJiBwYXlsb2FkLm1lc3NhZ2VfcmVmZXJlbmNlLmNoYW5uZWxfaWQpIHtcbiAgICAgIHJlZmVyZW5jZS5jaGFubmVsSWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLm1lc3NhZ2VfcmVmZXJlbmNlLmNoYW5uZWxfaWQpXG4gICAgICBlZGl0ZWQgPSB0cnVlXG4gICAgfVxuICAgIGlmIChwcm9wcy5tZXNzYWdlUmVmZXJlbmNlLmd1aWxkSWQgJiYgcGF5bG9hZC5tZXNzYWdlX3JlZmVyZW5jZS5ndWlsZF9pZCkge1xuICAgICAgcmVmZXJlbmNlLmd1aWxkSWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLm1lc3NhZ2VfcmVmZXJlbmNlLmd1aWxkX2lkKVxuICAgICAgZWRpdGVkID0gdHJ1ZVxuICAgIH1cbiAgICBpZiAocHJvcHMubWVzc2FnZVJlZmVyZW5jZS5tZXNzYWdlSWQgJiYgcGF5bG9hZC5tZXNzYWdlX3JlZmVyZW5jZS5tZXNzYWdlX2lkKSB7XG4gICAgICByZWZlcmVuY2UubWVzc2FnZUlkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5tZXNzYWdlX3JlZmVyZW5jZS5tZXNzYWdlX2lkKVxuICAgICAgZWRpdGVkID0gdHJ1ZVxuICAgIH1cblxuICAgIGlmIChlZGl0ZWQpIG1lc3NhZ2UubWVzc2FnZVJlZmVyZW5jZSA9IHJlZmVyZW5jZVxuICB9XG4gIGlmIChwcm9wcy5ub25jZSAmJiBwYXlsb2FkLm5vbmNlKSBtZXNzYWdlLm5vbmNlID0gcGF5bG9hZC5ub25jZVxuICBpZiAocGF5bG9hZC5waW5uZWQpIG1lc3NhZ2UucGlubmVkID0gdHJ1ZVxuICBpZiAocHJvcHMucmVhY3Rpb25zICYmIHBheWxvYWQucmVhY3Rpb25zPy5sZW5ndGgpIHtcbiAgICBtZXNzYWdlLnJlYWN0aW9ucyA9IHBheWxvYWQucmVhY3Rpb25zLm1hcCgocmVhY3Rpb24pID0+ICh7XG4gICAgICBtZTogcmVhY3Rpb24ubWUsXG4gICAgICBtZUJ1cnN0OiByZWFjdGlvbi5tZV9idXJzdCxcbiAgICAgIGNvdW50OiByZWFjdGlvbi5jb3VudCxcbiAgICAgIGNvdW50RGV0YWlsczoge1xuICAgICAgICBidXJzdDogcmVhY3Rpb24uY291bnRfZGV0YWlscy5idXJzdCxcbiAgICAgICAgbm9ybWFsOiByZWFjdGlvbi5jb3VudF9kZXRhaWxzLm5vcm1hbCxcbiAgICAgIH0sXG4gICAgICBlbW9qaTogYm90LnRyYW5zZm9ybWVycy5lbW9qaShib3QsIHJlYWN0aW9uLmVtb2ppKSxcbiAgICAgIGJ1cnN0Q29sb3JzOiByZWFjdGlvbi5idXJzdF9jb2xvcnMsXG4gICAgfSkpXG4gIH1cbiAgaWYgKHByb3BzLnN0aWNrZXJJdGVtcyAmJiBwYXlsb2FkLnN0aWNrZXJfaXRlbXM/Lmxlbmd0aClcbiAgICBtZXNzYWdlLnN0aWNrZXJJdGVtcyA9IHBheWxvYWQuc3RpY2tlcl9pdGVtcy5tYXAoKGl0ZW0pID0+ICh7XG4gICAgICBpZDogYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UoaXRlbS5pZCksXG4gICAgICBuYW1lOiBpdGVtLm5hbWUsXG4gICAgICBmb3JtYXRUeXBlOiBpdGVtLmZvcm1hdF90eXBlLFxuICAgIH0pKVxuICBpZiAocGF5bG9hZC50dHMpIG1lc3NhZ2UudHRzID0gdHJ1ZVxuICBpZiAocHJvcHMudGhyZWFkICYmIHBheWxvYWQudGhyZWFkKSBtZXNzYWdlLnRocmVhZCA9IGJvdC50cmFuc2Zvcm1lcnMuY2hhbm5lbChib3QsIHsgY2hhbm5lbDogcGF5bG9hZC50aHJlYWQsIGd1aWxkSWQgfSlcbiAgaWYgKHByb3BzLnR5cGUpIG1lc3NhZ2UudHlwZSA9IHBheWxvYWQudHlwZVxuICBpZiAocHJvcHMud2ViaG9va0lkICYmIHBheWxvYWQud2ViaG9va19pZCkgbWVzc2FnZS53ZWJob29rSWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLndlYmhvb2tfaWQpXG4gIGlmIChwcm9wcy5wb2xsICYmIHBheWxvYWQucG9sbCkgbWVzc2FnZS5wb2xsID0gYm90LnRyYW5zZm9ybWVycy5wb2xsKGJvdCwgcGF5bG9hZC5wb2xsKVxuICBpZiAocHJvcHMuY2FsbCAmJiBwYXlsb2FkLmNhbGwpIG1lc3NhZ2UuY2FsbCA9IGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZUNhbGwoYm90LCBwYXlsb2FkLmNhbGwpXG5cbiAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY3VzdG9taXplcnMubWVzc2FnZShib3QsIHBheWxvYWQsIG1lc3NhZ2UpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1NZXNzYWdlSW50ZXJhY3Rpb25NZXRhZGF0YShib3Q6IEJvdCwgcGF5bG9hZDogRGlzY29yZE1lc3NhZ2VJbnRlcmFjdGlvbk1ldGFkYXRhKTogTWVzc2FnZUludGVyYWN0aW9uTWV0YWRhdGEge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMubWVzc2FnZS5pbnRlcmFjdGlvbk1ldGFkYXRhXG4gIGNvbnN0IG1ldGFkYXRhID0ge30gYXMgTWVzc2FnZUludGVyYWN0aW9uTWV0YWRhdGFcblxuICBpZiAocHJvcHMuaWQpIG1ldGFkYXRhLmlkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5pZClcbiAgaWYgKHByb3BzLmF1dGhvcml6aW5nSW50ZWdyYXRpb25Pd25lcnMpIHtcbiAgICBtZXRhZGF0YS5hdXRob3JpemluZ0ludGVncmF0aW9uT3duZXJzID0ge31cbiAgICBpZiAocGF5bG9hZC5hdXRob3JpemluZ19pbnRlZ3JhdGlvbl9vd25lcnNbJzAnXSlcbiAgICAgIG1ldGFkYXRhLmF1dGhvcml6aW5nSW50ZWdyYXRpb25Pd25lcnNbRGlzY29yZEFwcGxpY2F0aW9uSW50ZWdyYXRpb25UeXBlLkd1aWxkSW5zdGFsbF0gPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShcbiAgICAgICAgcGF5bG9hZC5hdXRob3JpemluZ19pbnRlZ3JhdGlvbl9vd25lcnNbJzAnXSxcbiAgICAgIClcbiAgICBpZiAocGF5bG9hZC5hdXRob3JpemluZ19pbnRlZ3JhdGlvbl9vd25lcnNbJzEnXSlcbiAgICAgIG1ldGFkYXRhLmF1dGhvcml6aW5nSW50ZWdyYXRpb25Pd25lcnNbRGlzY29yZEFwcGxpY2F0aW9uSW50ZWdyYXRpb25UeXBlLlVzZXJJbnN0YWxsXSA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKFxuICAgICAgICBwYXlsb2FkLmF1dGhvcml6aW5nX2ludGVncmF0aW9uX293bmVyc1snMSddLFxuICAgICAgKVxuICB9XG4gIGlmIChwcm9wcy5pbnRlcmFjdGVkTWVzc2FnZUlkICYmIHBheWxvYWQuaW50ZXJhY3RlZF9tZXNzYWdlX2lkKVxuICAgIG1ldGFkYXRhLmludGVyYWN0ZWRNZXNzYWdlSWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmludGVyYWN0ZWRfbWVzc2FnZV9pZClcbiAgaWYgKHByb3BzLm9yaWdpbmFsUmVzcG9uc2VNZXNzYWdlSWQgJiYgcGF5bG9hZC5vcmlnaW5hbF9yZXNwb25zZV9tZXNzYWdlX2lkKVxuICAgIG1ldGFkYXRhLm9yaWdpbmFsUmVzcG9uc2VNZXNzYWdlSWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLm9yaWdpbmFsX3Jlc3BvbnNlX21lc3NhZ2VfaWQpXG4gIGlmIChwcm9wcy50cmlnZ2VyaW5nSW50ZXJhY3Rpb25NZXRhZGF0YSAmJiBwYXlsb2FkLnRyaWdnZXJpbmdfaW50ZXJhY3Rpb25fbWV0YWRhdGEpXG4gICAgbWV0YWRhdGEudHJpZ2dlcmluZ0ludGVyYWN0aW9uTWV0YWRhdGEgPSB0cmFuc2Zvcm1NZXNzYWdlSW50ZXJhY3Rpb25NZXRhZGF0YShib3QsIHBheWxvYWQudHJpZ2dlcmluZ19pbnRlcmFjdGlvbl9tZXRhZGF0YSlcbiAgaWYgKHByb3BzLnR5cGUpIG1ldGFkYXRhLnR5cGUgPSBwYXlsb2FkLnR5cGVcbiAgaWYgKHByb3BzLnVzZXJJZCkgbWV0YWRhdGEudXNlcklkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC51c2VyX2lkKVxuXG4gIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmN1c3RvbWl6ZXJzLm1lc3NhZ2VJbnRlcmFjdGlvbk1ldGFkYXRhKGJvdCwgcGF5bG9hZCwgbWV0YWRhdGEpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1NZXNzYWdlQ2FsbChib3Q6IEJvdCwgcGF5bG9hZDogRGlzY29yZE1lc3NhZ2VDYWxsKTogTWVzc2FnZUNhbGwge1xuICBjb25zdCBjYWxsID0ge30gYXMgTWVzc2FnZUNhbGxcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLm1lc3NhZ2UuY2FsbFxuXG4gIGlmIChwcm9wcy5wYXJ0aWNpcGFudHMgJiYgcGF5bG9hZC5wYXJ0aWNpcGFudHMpIGNhbGwucGFydGljaXBhbnRzID0gcGF5bG9hZC5wYXJ0aWNpcGFudHMubWFwKCh4KSA9PiBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZSh4KSlcbiAgaWYgKHByb3BzLmVuZGVkVGltZXN0YW1wICYmIHBheWxvYWQuZW5kZWRfdGltZXN0YW1wKSBjYWxsLmVuZGVkVGltZXN0YW1wID0gRGF0ZS5wYXJzZShwYXlsb2FkLmVuZGVkX3RpbWVzdGFtcClcblxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy5tZXNzYWdlQ2FsbChib3QsIHBheWxvYWQsIGNhbGwpXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZUludGVyYWN0aW9uTWV0YWRhdGEge1xuICAvKiogSWQgb2YgdGhlIGludGVyYWN0aW9uICovXG4gIGlkOiBiaWdpbnRcbiAgLyoqIFRoZSB0eXBlIG9mIGludGVyYWN0aW9uICovXG4gIHR5cGU6IEludGVyYWN0aW9uVHlwZXNcbiAgLyoqIElEIG9mIHRoZSB1c2VyIHdobyB0cmlnZ2VyZWQgdGhlIGludGVyYWN0aW9uICovXG4gIHVzZXJJZDogYmlnaW50XG4gIC8qKiBJRHMgZm9yIGluc3RhbGxhdGlvbiBjb250ZXh0KHMpIHJlbGF0ZWQgdG8gYW4gaW50ZXJhY3Rpb24gKi9cbiAgYXV0aG9yaXppbmdJbnRlZ3JhdGlvbk93bmVyczogUGFydGlhbDxSZWNvcmQ8RGlzY29yZEFwcGxpY2F0aW9uSW50ZWdyYXRpb25UeXBlLCBiaWdpbnQ+PlxuICAvKiogSUQgb2YgdGhlIG9yaWdpbmFsIHJlc3BvbnNlIG1lc3NhZ2UsIHByZXNlbnQgb25seSBvbiBmb2xsb3ctdXAgbWVzc2FnZXMgKi9cbiAgb3JpZ2luYWxSZXNwb25zZU1lc3NhZ2VJZD86IGJpZ2ludFxuICAvKiogSUQgb2YgdGhlIG1lc3NhZ2UgdGhhdCBjb250YWluZWQgaW50ZXJhY3RpdmUgY29tcG9uZW50LCBwcmVzZW50IG9ubHkgb24gbWVzc2FnZXMgY3JlYXRlZCBmcm9tIGNvbXBvbmVudCBpbnRlcmFjdGlvbnMgKi9cbiAgaW50ZXJhY3RlZE1lc3NhZ2VJZD86IGJpZ2ludFxuICAvKiogTWV0YWRhdGEgZm9yIHRoZSBpbnRlcmFjdGlvbiB0aGF0IHdhcyB1c2VkIHRvIG9wZW4gdGhlIG1vZGFsLCBwcmVzZW50IG9ubHkgb24gbW9kYWwgc3VibWl0IGludGVyYWN0aW9ucyAqL1xuICB0cmlnZ2VyaW5nSW50ZXJhY3Rpb25NZXRhZGF0YT86IE1lc3NhZ2VJbnRlcmFjdGlvbk1ldGFkYXRhXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZUNhbGwge1xuICAvKiogQXJyYXkgb2YgdXNlciBvYmplY3QgaWRzIHRoYXQgcGFydGljaXBhdGVkIGluIHRoZSBjYWxsICovXG4gIHBhcnRpY2lwYW50czogYmlnaW50W11cbiAgLyoqIFRpbWUgd2hlbiBjYWxsIGVuZGVkICovXG4gIGVuZGVkVGltZXN0YW1wOiBudW1iZXJcbn1cbiJdLCJuYW1lcyI6WyJ0cmFuc2Zvcm1NZXNzYWdlIiwidHJhbnNmb3JtTWVzc2FnZUNhbGwiLCJ0cmFuc2Zvcm1NZXNzYWdlSW50ZXJhY3Rpb25NZXRhZGF0YSIsImJhc2VNZXNzYWdlIiwiY3Jvc3Nwb3N0ZWQiLCJmbGFncyIsImNvbnRhaW5zIiwiTWVzc2FnZUZsYWdzIiwiQ3Jvc3Nwb3N0ZWQiLCJ2YWx1ZSIsImFkZCIsInJlbW92ZSIsImVwaGVtZXJhbCIsIkVwaGVtZXJhbCIsImZhaWxlZFRvTWVudGlvblNvbWVSb2xlc0luVGhyZWFkIiwiRmFpbGVkVG9NZW50aW9uU29tZVJvbGVzSW5UaHJlYWQiLCJoYXNUaHJlYWQiLCJIYXNUaHJlYWQiLCJpc0Nyb3NzcG9zdCIsIklzQ3Jvc3Nwb3N0IiwibG9hZGluZyIsIkxvYWRpbmciLCJtZW50aW9uZWRVc2VySWRzIiwibWVudGlvbnMiLCJtYXAiLCJ1c2VyIiwiaWQiLCJtZW50aW9uRXZlcnlvbmUiLCJiaXRmaWVsZCIsInBpbm5lZCIsInNvdXJjZU1lc3NhZ2VEZWxldGVkIiwiU291cmNlTWVzc2FnZURlbGV0ZWQiLCJzdXBwcmVzc0VtYmVkcyIsIlN1cHByZXNzRW1iZWRzIiwic3VwcHJlc3NOb3RpZmljYXRpb25zIiwiU3VwcHJlc3NOb3RpZmljYXRpb25zIiwidGltZXN0YW1wIiwic25vd2ZsYWtlVG9UaW1lc3RhbXAiLCJ0dHMiLCJ1cmdlbnQiLCJVcmdlbnQiLCJFTVBUWV9TVFJJTkciLCJib3QiLCJwYXlsb2FkIiwiZ3VpbGRJZCIsImd1aWxkX2lkIiwidHJhbnNmb3JtZXJzIiwic25vd2ZsYWtlIiwidW5kZWZpbmVkIiwidXNlcklkIiwiYXV0aG9yIiwibWVzc2FnZSIsIk9iamVjdCIsImNyZWF0ZSIsIlRvZ2dsZUJpdGZpZWxkIiwicHJvcHMiLCJkZXNpcmVkUHJvcGVydGllcyIsImFwcGxpY2F0aW9uSWQiLCJhcHBsaWNhdGlvbl9pZCIsImF0dGFjaG1lbnRzIiwibGVuZ3RoIiwiYXR0YWNobWVudCIsImNoYW5uZWxJZCIsImNoYW5uZWxfaWQiLCJjb21wb25lbnRzIiwiY29tcCIsImNvbXBvbmVudCIsImNvbnRlbnQiLCJlZGl0ZWRUaW1lc3RhbXAiLCJlZGl0ZWRfdGltZXN0YW1wIiwiRGF0ZSIsInBhcnNlIiwiZW1iZWRzIiwiZW1iZWQiLCJpbnRlcmFjdGlvbl9tZXRhZGF0YSIsImludGVyYWN0aW9uTWV0YWRhdGEiLCJpbnRlcmFjdGlvbiIsImVkaXRlZCIsIm1lbWJlciIsIm5hbWUiLCJ0eXBlIiwibWVudGlvbl9ldmVyeW9uZSIsIm1lbnRpb25lZENoYW5uZWxJZHMiLCJtZW50aW9uX2NoYW5uZWxzIiwibSIsIm1hdGNoIiwiQ0hBTk5FTF9NRU5USU9OX1JFR0VYIiwidGV4dCIsInN1YnN0cmluZyIsIm1lbnRpb25lZFJvbGVJZHMiLCJtZW50aW9uX3JvbGVzIiwibWVzc2FnZV9yZWZlcmVuY2UiLCJyZWZlcmVuY2UiLCJtZXNzYWdlUmVmZXJlbmNlIiwibWVzc2FnZUlkIiwibWVzc2FnZV9pZCIsIm5vbmNlIiwicmVhY3Rpb25zIiwicmVhY3Rpb24iLCJtZSIsIm1lQnVyc3QiLCJtZV9idXJzdCIsImNvdW50IiwiY291bnREZXRhaWxzIiwiYnVyc3QiLCJjb3VudF9kZXRhaWxzIiwibm9ybWFsIiwiZW1vamkiLCJidXJzdENvbG9ycyIsImJ1cnN0X2NvbG9ycyIsInN0aWNrZXJJdGVtcyIsInN0aWNrZXJfaXRlbXMiLCJpdGVtIiwiZm9ybWF0VHlwZSIsImZvcm1hdF90eXBlIiwidGhyZWFkIiwiY2hhbm5lbCIsIndlYmhvb2tJZCIsIndlYmhvb2tfaWQiLCJwb2xsIiwiY2FsbCIsIm1lc3NhZ2VDYWxsIiwiY3VzdG9taXplcnMiLCJtZXRhZGF0YSIsImF1dGhvcml6aW5nSW50ZWdyYXRpb25Pd25lcnMiLCJhdXRob3JpemluZ19pbnRlZ3JhdGlvbl9vd25lcnMiLCJEaXNjb3JkQXBwbGljYXRpb25JbnRlZ3JhdGlvblR5cGUiLCJHdWlsZEluc3RhbGwiLCJVc2VySW5zdGFsbCIsImludGVyYWN0ZWRNZXNzYWdlSWQiLCJpbnRlcmFjdGVkX21lc3NhZ2VfaWQiLCJvcmlnaW5hbFJlc3BvbnNlTWVzc2FnZUlkIiwib3JpZ2luYWxfcmVzcG9uc2VfbWVzc2FnZV9pZCIsInRyaWdnZXJpbmdJbnRlcmFjdGlvbk1ldGFkYXRhIiwidHJpZ2dlcmluZ19pbnRlcmFjdGlvbl9tZXRhZGF0YSIsInVzZXJfaWQiLCJtZXNzYWdlSW50ZXJhY3Rpb25NZXRhZGF0YSIsInBhcnRpY2lwYW50cyIsIngiLCJlbmRlZFRpbWVzdGFtcCIsImVuZGVkX3RpbWVzdGFtcCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUF5UmdCQSxnQkFBZ0I7ZUFBaEJBOztJQStJQUMsb0JBQW9CO2VBQXBCQTs7SUE1QkFDLG1DQUFtQztlQUFuQ0E7Ozt1QkFuWVQ7MkJBQytCO3VCQUNvQjt5QkFDN0I7Z0NBT0U7QUFHL0IsTUFBTUMsY0FBOEM7SUFDbEQsSUFBSUMsZUFBYztRQUNoQixPQUFPLElBQUksQ0FBQ0MsS0FBSyxFQUFFQyxTQUFTQyxxQkFBWSxDQUFDQyxXQUFXLEtBQUs7SUFDM0Q7SUFDQSxJQUFJSixhQUFZSyxNQUFnQjtRQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDSixLQUFLLEVBQUU7UUFDakIsSUFBSUksT0FBTyxJQUFJLENBQUNKLEtBQUssQ0FBQ0ssR0FBRyxDQUFDSCxxQkFBWSxDQUFDQyxXQUFXO2FBQzdDLElBQUksQ0FBQ0gsS0FBSyxDQUFDTSxNQUFNLENBQUNKLHFCQUFZLENBQUNDLFdBQVc7SUFDakQ7SUFDQSxJQUFJSSxhQUFZO1FB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
|
|
268
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvbWVzc2FnZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXNjb3JkQXBwbGljYXRpb25JbnRlZ3JhdGlvblR5cGUsXG4gIE1lc3NhZ2VGbGFncyxcbiAgdHlwZSBEaXNjb3JkTWVzc2FnZSxcbiAgdHlwZSBEaXNjb3JkTWVzc2FnZUNhbGwsXG4gIHR5cGUgRGlzY29yZE1lc3NhZ2VJbnRlcmFjdGlvbk1ldGFkYXRhLFxuICB0eXBlIEludGVyYWN0aW9uVHlwZXMsXG4gIHR5cGUgTWVzc2FnZUFjdGl2aXR5VHlwZXMsXG4gIHR5cGUgTWVzc2FnZVR5cGVzLFxuICB0eXBlIFN0aWNrZXJGb3JtYXRUeXBlcyxcbn0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgeyBDSEFOTkVMX01FTlRJT05fUkVHRVggfSBmcm9tICcuLi9jb25zdGFudHMuanMnXG5pbXBvcnQgeyBzbm93Zmxha2VUb1RpbWVzdGFtcCwgdHlwZSBCb3QsIHR5cGUgUG9sbCB9IGZyb20gJy4uL2luZGV4LmpzJ1xuaW1wb3J0IHR5cGUgeyBBdHRhY2htZW50IH0gZnJvbSAnLi9hdHRhY2htZW50LmpzJ1xuaW1wb3J0IHR5cGUgeyBDaGFubmVsIH0gZnJvbSAnLi9jaGFubmVsLmpzJ1xuaW1wb3J0IHR5cGUgeyBDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudC5qcydcbmltcG9ydCB0eXBlIHsgRW1iZWQgfSBmcm9tICcuL2VtYmVkLmpzJ1xuaW1wb3J0IHR5cGUgeyBFbW9qaSB9IGZyb20gJy4vZW1vamkuanMnXG5pbXBvcnQgdHlwZSB7IE1lbWJlciB9IGZyb20gJy4vbWVtYmVyLmpzJ1xuaW1wb3J0IHsgVG9nZ2xlQml0ZmllbGQgfSBmcm9tICcuL3RvZ2dsZXMvVG9nZ2xlQml0ZmllbGQuanMnXG5pbXBvcnQgdHlwZSB7IFVzZXIgfSBmcm9tICcuL3VzZXIuanMnXG5cbmNvbnN0IGJhc2VNZXNzYWdlOiBQYXJ0aWFsPE1lc3NhZ2U+ICYgTWVzc2FnZUJhc2UgPSB7XG4gIGdldCBjcm9zc3Bvc3RlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5mbGFncz8uY29udGFpbnMoTWVzc2FnZUZsYWdzLkNyb3NzcG9zdGVkKSA/PyBmYWxzZVxuICB9LFxuICBzZXQgY3Jvc3Nwb3N0ZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAoIXRoaXMuZmxhZ3MpIHJldHVyblxuICAgIGlmICh2YWx1ZSkgdGhpcy5mbGFncy5hZGQoTWVzc2FnZUZsYWdzLkNyb3NzcG9zdGVkKVxuICAgIGVsc2UgdGhpcy5mbGFncy5yZW1vdmUoTWVzc2FnZUZsYWdzLkNyb3NzcG9zdGVkKVxuICB9LFxuICBnZXQgZXBoZW1lcmFsKCkge1xuICAgIHJldHVybiB0aGlzLmZsYWdzPy5jb250YWlucyhNZXNzYWdlRmxhZ3MuRXBoZW1lcmFsKSA/PyBmYWxzZVxuICB9LFxuICBzZXQgZXBoZW1lcmFsKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKCF0aGlzLmZsYWdzKSByZXR1cm5cbiAgICBpZiAodmFsdWUpIHRoaXMuZmxhZ3MuYWRkKE1lc3NhZ2VGbGFncy5FcGhlbWVyYWwpXG4gICAgZWxzZSB0aGlzLmZsYWdzLnJlbW92ZShNZXNzYWdlRmxhZ3MuRXBoZW1lcmFsKVxuICB9LFxuICBnZXQgZmFpbGVkVG9NZW50aW9uU29tZVJvbGVzSW5UaHJlYWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmxhZ3M/LmNvbnRhaW5zKE1lc3NhZ2VGbGFncy5GYWlsZWRUb01lbnRpb25Tb21lUm9sZXNJblRocmVhZCkgPz8gZmFsc2VcbiAgfSxcbiAgc2V0IGZhaWxlZFRvTWVudGlvblNvbWVSb2xlc0luVGhyZWFkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKCF0aGlzLmZsYWdzKSByZXR1cm5cbiAgICBpZiAodmFsdWUpIHRoaXMuZmxhZ3MuYWRkKE1lc3NhZ2VGbGFncy5GYWlsZWRUb01lbnRpb25Tb21lUm9sZXNJblRocmVhZClcbiAgICBlbHNlIHRoaXMuZmxhZ3MucmVtb3ZlKE1lc3NhZ2VGbGFncy5GYWlsZWRUb01lbnRpb25Tb21lUm9sZXNJblRocmVhZClcbiAgfSxcbiAgZ2V0IGhhc1RocmVhZCgpIHtcbiAgICByZXR1cm4gdGhpcy5mbGFncz8uY29udGFpbnMoTWVzc2FnZUZsYWdzLkhhc1RocmVhZCkgPz8gZmFsc2VcbiAgfSxcbiAgc2V0IGhhc1RocmVhZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICghdGhpcy5mbGFncykgcmV0dXJuXG4gICAgaWYgKHZhbHVlKSB0aGlzLmZsYWdzLmFkZChNZXNzYWdlRmxhZ3MuSGFzVGhyZWFkKVxuICAgIGVsc2UgdGhpcy5mbGFncy5yZW1vdmUoTWVzc2FnZUZsYWdzLkhhc1RocmVhZClcbiAgfSxcbiAgZ2V0IGlzQ3Jvc3Nwb3N0KCkge1xuICAgIHJldHVybiB0aGlzLmZsYWdzPy5jb250YWlucyhNZXNzYWdlRmxhZ3MuSXNDcm9zc3Bvc3QpID8/IGZhbHNlXG4gIH0sXG4gIHNldCBpc0Nyb3NzcG9zdCh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICghdGhpcy5mbGFncykgcmV0dXJuXG4gICAgaWYgKHZhbHVlKSB0aGlzLmZsYWdzLmFkZChNZXNzYWdlRmxhZ3MuSXNDcm9zc3Bvc3QpXG4gICAgZWxzZSB0aGlzLmZsYWdzLnJlbW92ZShNZXNzYWdlRmxhZ3MuSXNDcm9zc3Bvc3QpXG4gIH0sXG4gIGdldCBsb2FkaW5nKCkge1xuICAgIHJldHVybiB0aGlzLmZsYWdzPy5jb250YWlucyhNZXNzYWdlRmxhZ3MuTG9hZGluZykgPz8gZmFsc2VcbiAgfSxcbiAgc2V0IGxvYWRpbmcodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAoIXRoaXMuZmxhZ3MpIHJldHVyblxuICAgIGlmICh2YWx1ZSkgdGhpcy5mbGFncy5hZGQoTWVzc2FnZUZsYWdzLkxvYWRpbmcpXG4gICAgZWxzZSB0aGlzLmZsYWdzLnJlbW92ZShNZXNzYWdlRmxhZ3MuTG9hZGluZylcbiAgfSxcbiAgZ2V0IG1lbnRpb25lZFVzZXJJZHMoKSB7XG4gICAgcmV0dXJuIHRoaXMubWVudGlvbnM/Lm1hcCgodXNlcikgPT4gdXNlci5pZCkgPz8gW11cbiAgfSxcbiAgZ2V0IG1lbnRpb25FdmVyeW9uZSgpIHtcbiAgICByZXR1cm4gdGhpcy5iaXRmaWVsZD8uY29udGFpbnMoMikgPz8gZmFsc2VcbiAgfSxcbiAgc2V0IG1lbnRpb25FdmVyeW9uZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICghdGhpcy5iaXRmaWVsZCkgcmV0dXJuXG4gICAgaWYgKHZhbHVlKSB0aGlzLmJpdGZpZWxkLmFkZCgyKVxuICAgIGVsc2UgdGhpcy5iaXRmaWVsZC5yZW1vdmUoMilcbiAgfSxcbiAgZ2V0IHBpbm5lZCgpIHtcbiAgICByZXR1cm4gdGhpcy5iaXRmaWVsZD8uY29udGFpbnMoMykgPz8gZmFsc2VcbiAgfSxcbiAgc2V0IHBpbm5lZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICghdGhpcy5iaXRmaWVsZCkgcmV0dXJuXG4gICAgaWYgKHZhbHVlKSB0aGlzLmJpdGZpZWxkLmFkZCgzKVxuICAgIGVsc2UgdGhpcy5iaXRmaWVsZC5yZW1vdmUoMylcbiAgfSxcbiAgZ2V0IHNvdXJjZU1lc3NhZ2VEZWxldGVkKCkge1xuICAgIHJldHVybiB0aGlzLmZsYWdzPy5jb250YWlucyhNZXNzYWdlRmxhZ3MuU291cmNlTWVzc2FnZURlbGV0ZWQpID8/IGZhbHNlXG4gIH0sXG4gIHNldCBzb3VyY2VNZXNzYWdlRGVsZXRlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICghdGhpcy5mbGFncykgcmV0dXJuXG4gICAgaWYgKHZhbHVlKSB0aGlzLmZsYWdzLmFkZChNZXNzYWdlRmxhZ3MuU291cmNlTWVzc2FnZURlbGV0ZWQpXG4gICAgZWxzZSB0aGlzLmZsYWdzLnJlbW92ZShNZXNzYWdlRmxhZ3MuU291cmNlTWVzc2FnZURlbGV0ZWQpXG4gIH0sXG4gIGdldCBzdXBwcmVzc0VtYmVkcygpIHtcbiAgICByZXR1cm4gdGhpcy5mbGFncz8uY29udGFpbnMoTWVzc2FnZUZsYWdzLlN1cHByZXNzRW1iZWRzKSA/PyBmYWxzZVxuICB9LFxuICBzZXQgc3VwcHJlc3NFbWJlZHModmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAoIXRoaXMuZmxhZ3MpIHJldHVyblxuICAgIGlmICh2YWx1ZSkgdGhpcy5mbGFncy5hZGQoTWVzc2FnZUZsYWdzLlN1cHByZXNzRW1iZWRzKVxuICAgIGVsc2UgdGhpcy5mbGFncy5yZW1vdmUoTWVzc2FnZUZsYWdzLlN1cHByZXNzRW1iZWRzKVxuICB9LFxuICBnZXQgc3VwcHJlc3NOb3RpZmljYXRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLmZsYWdzPy5jb250YWlucyhNZXNzYWdlRmxhZ3MuU3VwcHJlc3NOb3RpZmljYXRpb25zKSA/PyBmYWxzZVxuICB9LFxuICBzZXQgc3VwcHJlc3NOb3RpZmljYXRpb25zKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKCF0aGlzLmZsYWdzKSByZXR1cm5cbiAgICBpZiAodmFsdWUpIHRoaXMuZmxhZ3MuYWRkKE1lc3NhZ2VGbGFncy5TdXBwcmVzc05vdGlmaWNhdGlvbnMpXG4gICAgZWxzZSB0aGlzLmZsYWdzLnJlbW92ZShNZXNzYWdlRmxhZ3MuU3VwcHJlc3NOb3RpZmljYXRpb25zKVxuICB9LFxuICBnZXQgdGltZXN0YW1wKCkge1xuICAgIHJldHVybiB0aGlzLmlkID8gc25vd2ZsYWtlVG9UaW1lc3RhbXAodGhpcy5pZCkgOiAwXG4gIH0sXG4gIGdldCB0dHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuYml0ZmllbGQ/LmNvbnRhaW5zKDEpID8/IGZhbHNlXG4gIH0sXG4gIHNldCB0dHModmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAoIXRoaXMuYml0ZmllbGQpIHJldHVyblxuICAgIGlmICh2YWx1ZSkgdGhpcy5iaXRmaWVsZC5hZGQoMSlcbiAgICBlbHNlIHRoaXMuYml0ZmllbGQucmVtb3ZlKDEpXG4gIH0sXG4gIGdldCB1cmdlbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmxhZ3M/LmNvbnRhaW5zKE1lc3NhZ2VGbGFncy5VcmdlbnQpID8/IGZhbHNlXG4gIH0sXG4gIHNldCB1cmdlbnQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAoIXRoaXMuZmxhZ3MpIHJldHVyblxuICAgIGlmICh2YWx1ZSkgdGhpcy5mbGFncy5hZGQoTWVzc2FnZUZsYWdzLlVyZ2VudClcbiAgICBlbHNlIHRoaXMuZmxhZ3MucmVtb3ZlKE1lc3NhZ2VGbGFncy5VcmdlbnQpXG4gIH0sXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZUJhc2Uge1xuICAvKiogSG9sZHMgYWxsIHRoZSBib29sZWFuIHZhbHVlcyBvbiB0aGlzIG1lc3NhZ2UuICovXG4gIGJpdGZpZWxkPzogVG9nZ2xlQml0ZmllbGRcbiAgLyoqIFdoZXRoZXIgdGhpcyBtZXNzYWdlIGhhcyBiZWVuIHB1Ymxpc2hlZCB0byBzdWJzY3JpYmVkIGNoYW5uZWxzICh2aWEgQ2hhbm5lbCBGb2xsb3dpbmcpICovXG4gIGNyb3NzcG9zdGVkOiBib29sZWFuXG4gIC8qKiBXaGV0aGVyIHRoaXMgbWVzc2FnZSBpcyBvbmx5IHZpc2libGUgdG8gdGhlIHVzZXIgd2hvIGludm9rZWQgdGhlIEludGVyYWN0aW9uICovXG4gIGVwaGVtZXJhbDogYm9vbGVhblxuICAvKiogV2hldGhlciB0aGlzIG1lc3NhZ2UgZmFpbGVkIHRvIG1lbnRpb24gc29tZSByb2xlcyBhbmQgYWRkIHRoZWlyIG1lbWJlcnMgdG8gdGhlIHRocmVhZCAqL1xuICBmYWlsZWRUb01lbnRpb25Tb21lUm9sZXNJblRocmVhZDogYm9vbGVhblxuICAvKiogTWVzc2FnZSBmbGFncyBjb21iaW5lZCBhcyBhIGJpdGZpZWxkICovXG4gIGZsYWdzPzogVG9nZ2xlQml0ZmllbGRcbiAgLyoqIFdoZXRoZXIgdGhpcyBtZXNzYWdlIGhhcyBhbiBhc3NvY2lhdGVkIHRocmVhZCwgd2l0aCB0aGUgc2FtZSBpZCBhcyB0aGUgbWVzc2FnZSAqL1xuICBoYXNUaHJlYWQ6IGJvb2xlYW5cbiAgLyoqIFdoZXRoZXIgdGhpcyBtZXNzYWdlIG9yaWdpbmF0ZWQgZnJvbSBhIG1lc3NhZ2UgaW4gYW5vdGhlciBjaGFubmVsICh2aWEgQ2hhbm5lbCBGb2xsb3dpbmcpICovXG4gIGlzQ3Jvc3Nwb3N0OiBib29sZWFuXG4gIC8qKiBXaGV0aGVyIHRoaXMgbWVzc2FnZSBpcyBhbiBJbnRlcmFjdGlvbiBSZXNwb25zZSBhbmQgdGhlIGJvdCBpcyBcInRoaW5raW5nXCIgKi9cbiAgbG9hZGluZzogYm9vbGVhblxuICAvKiogVGhlIGlkcyBvZiB0aGUgdXNlcnMgd2hvIHdlcmUgbWVudGlvbmVkIGluIHRoaXMgbWVzc2FnZS4gKi9cbiAgbWVudGlvbmVkVXNlcklkczogYmlnaW50W11cbiAgLyoqIFdoZXRoZXIgdGhpcyBtZXNzYWdlIG1lbnRpb25zIGV2ZXJ5b25lICovXG4gIG1lbnRpb25FdmVyeW9uZTogYm9vbGVhblxuICAvKiogV2hldGhlciB0aGlzIG1lc3NhZ2UgaXMgcGlubmVkICovXG4gIHBpbm5lZDogYm9vbGVhblxuICAvKiogV2hldGhlciB0aGUgc291cmNlIG1lc3NhZ2UgZm9yIHRoaXMgY3Jvc3Nwb3N0IGhhcyBiZWVuIGRlbGV0ZWQgKHZpYSBDaGFubmVsIEZvbGxvd2luZykgKi9cbiAgc291cmNlTWVzc2FnZURlbGV0ZWQ6IGJvb2xlYW5cbiAgLyoqIFdoZXRoZXIgZG8gbm90IGluY2x1ZGUgYW55IGVtYmVkcyB3aGVuIHNlcmlhbGl6aW5nIHRoaXMgbWVzc2FnZSAqL1xuICBzdXBwcmVzc0VtYmVkczogYm9vbGVhblxuICAvKiogV2hldGhlciB0aGlzIG1lc3NhZ2Ugd2lsbCBub3QgdHJpZ2dlciBwdXNoIGFuZCBkZXNrdG9wIG5vdGlmaWNhdGlvbnMgKi9cbiAgc3VwcHJlc3NOb3RpZmljYXRpb25zOiBib29sZWFuXG4gIC8qKiBUaGUgdGltZXN0YW1wIGluIG1pbGxpc2Vjb25kcyB3aGVuIHRoaXMgbWVzc2FnZSB3YXMgY3JlYXRlZCAqL1xuICB0aW1lc3RhbXA6IG51bWJlclxuICAvKiogV2hldGhlciB0aGlzIHdhcyBhIFRUUyBtZXNzYWdlLiAqL1xuICB0dHM6IGJvb2xlYW5cbiAgLyoqIFdoZXRoZXIgdGhpcyBtZXNzYWdlIGNhbWUgZnJvbSB0aGUgdXJnZW50IG1lc3NhZ2Ugc3lzdGVtICovXG4gIHVyZ2VudDogYm9vbGVhblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlQmFzZSB7XG4gIC8qKiBTZW50IHdpdGggUmljaCBQcmVzZW5jZS1yZWxhdGVkIGNoYXQgZW1iZWRzICovXG4gIGFjdGl2aXR5Pzoge1xuICAgIC8qKiBUeXBlIG9mIG1lc3NhZ2UgYWN0aXZpdHkgKi9cbiAgICB0eXBlOiBNZXNzYWdlQWN0aXZpdHlUeXBlc1xuICAgIC8qKiBwYXJ0eV9pZCBmcm9tIGEgUmljaCBQcmVzZW5jZSBldmVudCAqL1xuICAgIHBhcnR5SWQ/OiBzdHJpbmdcbiAgfVxuICAvKiogaWYgdGhlIG1lc3NhZ2UgaXMgYW4gSW50ZXJhY3Rpb24gb3IgYXBwbGljYXRpb24tb3duZWQgd2ViaG9vaywgdGhpcyBpcyB0aGUgaWQgb2YgdGhlIGFwcGxpY2F0aW9uICovXG4gIGFwcGxpY2F0aW9uSWQ/OiBiaWdpbnRcbiAgLyoqIEFueSBhdHRhY2hlZCBmaWxlcyBvbiB0aGlzIG1lc3NhZ2UuICovXG4gIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudFtdXG4gIC8qKiBUaGUgYXV0aG9yIG9mIHRoaXMgbWVzc2FnZSAobm90IGd1YXJhbnRlZWQgdG8gYmUgYSB2YWxpZCB1c2VyKSBOb3RlOiBUaGUgYXV0aG9yIG9iamVjdCBmb2xsb3dzIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHVzZXIgb2JqZWN0LCBidXQgaXMgb25seSBhIHZhbGlkIHVzZXIgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlIG1lc3NhZ2UgaXMgZ2VuZXJhdGVkIGJ5IGEgdXNlciBvciBib3QgdXNlci4gSWYgdGhlIG1lc3NhZ2UgaXMgZ2VuZXJhdGVkIGJ5IGEgd2ViaG9vaywgdGhlIGF1dGhvciBvYmplY3QgY29ycmVzcG9uZHMgdG8gdGhlIHdlYmhvb2sncyBpZCwgdXNlcm5hbWUsIGFuZCBhdmF0YXIuIFlvdSBjYW4gdGVsbCBpZiBhIG1lc3NhZ2UgaXMgZ2VuZXJhdGVkIGJ5IGEgd2ViaG9vayBieSBjaGVja2luZyBmb3IgdGhlIHdlYmhvb2tfaWQgb24gdGhlIG1lc3NhZ2Ugb2JqZWN0LiAqL1xuICBhdXRob3I6IFVzZXJcbiAgLyoqIGlkIG9mIHRoZSBjaGFubmVsIHRoZSBtZXNzYWdlIHdhcyBzZW50IGluICovXG4gIGNoYW5uZWxJZDogYmlnaW50XG4gIC8qKiBUaGUgY29tcG9uZW50cyByZWxhdGVkIHRvIHRoaXMgbWVzc2FnZSAqL1xuICBjb21wb25lbnRzOiBDb21wb25lbnRbXVxuICAvKiogQ29udGVudHMgb2YgdGhlIG1lc3NhZ2UgKi9cbiAgY29udGVudDogc3RyaW5nXG4gIC8qKiBUaGUgdGltZXN0YW1wIGluIG1pbGxpc2Vjb25kcyB3aGVuIHRoaXMgbWVzc2FnZSB3YXMgZWRpdGVkIGxhc3QuICovXG4gIGVkaXRlZFRpbWVzdGFtcD86IG51bWJlclxuICAvKiogQW55IGVtYmVkZGVkIGNvbnRlbnQgKi9cbiAgZW1iZWRzPzogRW1iZWRbXVxuICAvKiogaWQgb2YgdGhlIGd1aWxkIHRoZSBtZXNzYWdlIHdhcyBzZW50IGluIE5vdGU6IEZvciBNRVNTQUdFX0NSRUFURSBhbmQgTUVTU0FHRV9VUERBVEUgZXZlbnRzLCB0aGUgbWVzc2FnZSBvYmplY3QgbWF5IG5vdCBjb250YWluIGEgZ3VpbGRfaWQgb3IgbWVtYmVyIGZpZWxkIHNpbmNlIHRoZSBldmVudHMgYXJlIHNlbnQgZGlyZWN0bHkgdG8gdGhlIHJlY2VpdmluZyB1c2VyIGFuZCB0aGUgYm90IHdobyBzZW50IHRoZSBtZXNzYWdlLCByYXRoZXIgdGhhbiBiZWluZyBzZW50IHRocm91Z2ggdGhlIGd1aWxkIGxpa2Ugbm9uLWVwaGVtZXJhbCBtZXNzYWdlcy4gKi9cbiAgZ3VpbGRJZD86IGJpZ2ludFxuICAvKiogaWQgb2YgdGhlIG1lc3NhZ2UgKi9cbiAgaWQ6IGJpZ2ludFxuICAvKiogc2VudCBpZiB0aGUgbWVzc2FnZSBpcyBzZW50IGFzIGEgcmVzdWx0IG9mIGFuIGludGVyYWN0aW9uICovXG4gIGludGVyYWN0aW9uTWV0YWRhdGE/OiBNZXNzYWdlSW50ZXJhY3Rpb25NZXRhZGF0YVxuICAvKipcbiAgICogU2VudCBpZiB0aGUgbWVzc2FnZSBpcyBhIHJlc3BvbnNlIHRvIGFuIEludGVyYWN0aW9uXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIERlcHJlY2F0ZWQgaW4gZmF2b3Igb2Yge0BsaW5rIGludGVyYWN0aW9uTWV0YWRhdGF9XG4gICAqL1xuICBpbnRlcmFjdGlvbj86IHtcbiAgICAvKiogSWQgb2YgdGhlIGludGVyYWN0aW9uICovXG4gICAgaWQ6IGJpZ2ludFxuICAgIC8qKiBUaGUgbWVtYmVyIHdobyBpbnZva2VkIHRoZSBpbnRlcmFjdGlvbiBpbiB0aGUgZ3VpbGQgICovXG4gICAgbWVtYmVyPzogTWVtYmVyXG4gICAgLyoqIFRoZSBuYW1lIG9mIHRoZSBBcHBsaWNhdGlvbkNvbW1hbmQgaW5jbHVkaW5nIHRoZSBuYW1lIG9mIHRoZSBzdWJjb21tYW5kL3N1YmNvbW1hbmQgZ3JvdXAgKi9cbiAgICBuYW1lOiBzdHJpbmdcbiAgICAvKiogVGhlIHR5cGUgb2YgaW50ZXJhY3Rpb24gKi9cbiAgICB0eXBlOiBJbnRlcmFjdGlvblR5cGVzXG4gICAgLyoqIFRoZSB1c2VyIHdobyBpbnZva2VkIHRoZSBpbnRlcmFjdGlvbiAqL1xuICAgIHVzZXI6IFVzZXJcbiAgfVxuICAvKiogTWVtYmVyIHByb3BlcnRpZXMgZm9yIHRoaXMgbWVzc2FnZSdzIGF1dGhvciBOb3RlOiBUaGUgbWVtYmVyIG9iamVjdCBleGlzdHMgaW4gTUVTU0FHRV9DUkVBVEUgYW5kIE1FU1NBR0VfVVBEQVRFIGV2ZW50cyBmcm9tIHRleHQtYmFzZWQgZ3VpbGQgY2hhbm5lbHMuIFRoaXMgYWxsb3dzIGJvdHMgdG8gb2J0YWluIHJlYWwtdGltZSBtZW1iZXIgZGF0YSB3aXRob3V0IHJlcXVpcmluZyBib3RzIHRvIHN0b3JlIG1lbWJlciBzdGF0ZSBpbiBtZW1vcnkuICovXG4gIG1lbWJlcj86IE1lbWJlclxuICAvKiogVXNlcnMgc3BlY2lmaWNhbGx5IG1lbnRpb25lZCBpbiB0aGUgbWVzc2FnZSBOb3RlOiBUaGUgdXNlciBvYmplY3RzIGluIHRoZSBtZW50aW9ucyBhcnJheSB3aWxsIG9ubHkgaGF2ZSB0aGUgcGFydGlhbCBtZW1iZXIgZmllbGQgcHJlc2VudCBpbiBNRVNTQUdFX0NSRUFURSBhbmQgTUVTU0FHRV9VUERBVEUgZXZlbnRzIGZyb20gdGV4dC1iYXNlZCBndWlsZCBjaGFubmVscy4gKi9cbiAgbWVudGlvbnM/OiBVc2VyW11cbiAgLyoqIENoYW5uZWxzIHNwZWNpZmljYWxseSBtZW50aW9uZWQgaW4gdGhpcyBtZXNzYWdlIE5vdGU6IE5vdCBhbGwgY2hhbm5lbCBtZW50aW9ucyBpbiBhIG1lc3NhZ2Ugd2lsbCBhcHBlYXIgaW4gbWVudGlvbl9jaGFubmVscy4gT25seSB0ZXh0dWFsIGNoYW5uZWxzIHRoYXQgYXJlIHZpc2libGUgdG8gZXZlcnlvbmUgaW4gYSBkaXNjb3ZlcmFibGUgZ3VpbGQgd2lsbCBldmVyIGJlIGluY2x1ZGVkLiBPbmx5IGNyb3NzcG9zdGVkIG1lc3NhZ2VzICh2aWEgQ2hhbm5lbCBGb2xsb3dpbmcpIGN1cnJlbnRseSBpbmNsdWRlIG1lbnRpb25fY2hhbm5lbHMgYXQgYWxsLiBJZiBubyBtZW50aW9ucyBpbiB0aGUgbWVzc2FnZSBtZWV0IHRoZXNlIHJlcXVpcmVtZW50cywgdGhpcyBmaWVsZCB3aWxsIG5vdCBiZSBzZW50LiAqL1xuICBtZW50aW9uZWRDaGFubmVsSWRzPzogYmlnaW50W11cbiAgLyoqIFJvbGVzIHNwZWNpZmljYWxseSBtZW50aW9uZWQgaW4gdGhpcyBtZXNzYWdlICovXG4gIG1lbnRpb25lZFJvbGVJZHM/OiBiaWdpbnRbXVxuICAvKiogRGF0YSBzaG93aW5nIHRoZSBzb3VyY2Ugb2YgYSBjcm9zc3Bvc3RlZCBjaGFubmVsIGZvbGxvdyBhZGQsIHBpbiBvciByZXBseSBtZXNzYWdlICovXG4gIG1lc3NhZ2VSZWZlcmVuY2U/OiB7XG4gICAgLyoqIGlkIG9mIHRoZSBvcmlnaW5hdGluZyBtZXNzYWdlJ3MgY2hhbm5lbCBOb3RlOiBjaGFubmVsX2lkIGlzIG9wdGlvbmFsIHdoZW4gY3JlYXRpbmcgYSByZXBseSwgYnV0IHdpbGwgYWx3YXlzIGJlIHByZXNlbnQgd2hlbiByZWNlaXZpbmcgYW4gZXZlbnQvcmVzcG9uc2UgdGhhdCBpbmNsdWRlcyB0aGlzIGRhdGEgbW9kZWwuICovXG4gICAgY2hhbm5lbElkPzogYmlnaW50XG4gICAgLyoqIGlkIG9mIHRoZSBvcmlnaW5hdGluZyBtZXNzYWdlJ3MgZ3VpbGQgKi9cbiAgICBndWlsZElkPzogYmlnaW50XG4gICAgLyoqIGlkIG9mIHRoZSBvcmlnaW5hdGluZyBtZXNzYWdlICovXG4gICAgbWVzc2FnZUlkPzogYmlnaW50XG4gIH1cbiAgLyoqIFVzZWQgZm9yIHZhbGlkYXRpbmcgYSBtZXNzYWdlIHdhcyBzZW50ICovXG4gIG5vbmNlPzogc3RyaW5nIHwgbnVtYmVyXG4gIC8qKiBSZWFjdGlvbnMgb24gdGhpcyBtZXNzYWdlLiAqL1xuICByZWFjdGlvbnM/OiBBcnJheTx7XG4gICAgLyoqIFdoZXRoZXIgdGhlIGN1cnJlbnQgdXNlciByZWFjdGVkIHVzaW5nIHRoaXMgZW1vamkgKi9cbiAgICBtZTogYm9vbGVhblxuICAgIC8qKlx0V2hldGhlciB0aGUgY3VycmVudCB1c2VyIHN1cGVyLXJlYWN0ZWQgdXNpbmcgdGhpcyBlbW9qaSAqL1xuICAgIG1lQnVyc3Q6IGJvb2xlYW5cbiAgICAvKiogVGltZXMgdGhpcyBlbW9qaSBoYXMgYmVlbiB1c2VkIHRvIHJlYWN0ICovXG4gICAgY291bnQ6IG51bWJlclxuICAgIC8qKlx0UmVhY3Rpb24gY291bnQgZGV0YWlscyBvYmplY3QgKi9cbiAgICBjb3VudERldGFpbHM6IHtcbiAgICAgIC8qKiBDb3VudCBvZiBzdXBlciByZWFjdGlvbnMgKi9cbiAgICAgIGJ1cnN0OiBudW1iZXJcbiAgICAgIC8qKlx0Q291bnQgb2Ygbm9ybWFsIHJlYWN0aW9ucyAqL1xuICAgICAgbm9ybWFsOiBudW1iZXJcbiAgICB9XG4gICAgLyoqIEVtb2ppIGluZm9ybWF0aW9uICovXG4gICAgZW1vamk6IEVtb2ppXG4gICAgLyoqIEhFWCBjb2xvcnMgdXNlZCBmb3Igc3VwZXIgcmVhY3Rpb24gKi9cbiAgICBidXJzdENvbG9yczogc3RyaW5nW11cbiAgfT5cbiAgLyoqIFNlbnQgaWYgdGhlIG1lc3NhZ2UgY29udGFpbnMgc3RpY2tlcnMgKi9cbiAgc3RpY2tlckl0ZW1zPzogQXJyYXk8e1xuICAgIC8qKiBUaGUgaWQgb2YgdGhpcyBzdGlja2VyLiAqL1xuICAgIGlkOiBiaWdpbnRcbiAgICAvKiogVGhlIG5hbWUgb2YgdGhpcyBzdGlja2VyLiAqL1xuICAgIG5hbWU6IHN0cmluZ1xuICAgIC8qKiBUaGUgdHlwZSBvZiB0aGlzIHN0aWNrZXJzIGZvcm1hdC4gKi9cbiAgICBmb3JtYXRUeXBlOiBTdGlja2VyRm9ybWF0VHlwZXNcbiAgfT5cbiAgLyoqIFR5cGUgb2YgbWVzc2FnZSAqL1xuICB0eXBlOiBNZXNzYWdlVHlwZXNcbiAgLyoqIFRoZSB0aHJlYWQgdGhhdCB3YXMgc3RhcnRlZCBmcm9tIHRoaXMgbWVzc2FnZSwgaW5jbHVkZXMgdGhyZWFkIG1lbWJlciBvYmplY3QgICovXG4gIHRocmVhZD86IENoYW5uZWxcbiAgLyoqIElmIHRoZSBtZXNzYWdlIGlzIGdlbmVyYXRlZCBieSBhIHdlYmhvb2ssIHRoaXMgaXMgdGhlIHdlYmhvb2sncyBpZCAqL1xuICB3ZWJob29rSWQ/OiBiaWdpbnRcbiAgLyoqIEEgcG9sbCEgKi9cbiAgcG9sbD86IFBvbGxcbiAgLyoqIFRoZSBjYWxsIGFzc29jaWF0ZWQgd2l0aCB0aGUgbWVzc2FnZSAqL1xuICBjYWxsPzogTWVzc2FnZUNhbGxcbn1cblxuY29uc3QgRU1QVFlfU1RSSU5HID0gJydcblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybU1lc3NhZ2UoYm90OiBCb3QsIHBheWxvYWQ6IERpc2NvcmRNZXNzYWdlKTogTWVzc2FnZSB7XG4gIGNvbnN0IGd1aWxkSWQgPSBwYXlsb2FkLmd1aWxkX2lkID8gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5ndWlsZF9pZCkgOiB1bmRlZmluZWRcbiAgY29uc3QgdXNlcklkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5hdXRob3IuaWQpXG5cbiAgY29uc3QgbWVzc2FnZTogTWVzc2FnZSA9IE9iamVjdC5jcmVhdGUoYmFzZU1lc3NhZ2UpXG4gIG1lc3NhZ2UuYml0ZmllbGQgPSBuZXcgVG9nZ2xlQml0ZmllbGQoKVxuICBtZXNzYWdlLmZsYWdzID0gbmV3IFRvZ2dsZUJpdGZpZWxkKHBheWxvYWQuZmxhZ3MpXG5cbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLm1lc3NhZ2VcblxuICBpZiAocHJvcHMuYXV0aG9yICYmIHBheWxvYWQuYXV0aG9yKSBtZXNzYWdlLmF1dGhvciA9IGJvdC50cmFuc2Zvcm1lcnMudXNlcihib3QsIHBheWxvYWQuYXV0aG9yKVxuICBpZiAocHJvcHMuYXBwbGljYXRpb25JZCAmJiBwYXlsb2FkLmFwcGxpY2F0aW9uX2lkKSBtZXNzYWdlLmFwcGxpY2F0aW9uSWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmFwcGxpY2F0aW9uX2lkKVxuICBpZiAocHJvcHMuYXR0YWNobWVudHMgJiYgcGF5bG9hZC5hdHRhY2htZW50cz8ubGVuZ3RoKVxuICAgIG1lc3NhZ2UuYXR0YWNobWVudHMgPSBwYXlsb2FkLmF0dGFjaG1lbnRzLm1hcCgoYXR0YWNobWVudCkgPT4gYm90LnRyYW5zZm9ybWVycy5hdHRhY2htZW50KGJvdCwgYXR0YWNobWVudCkpXG4gIGlmIChwcm9wcy5jaGFubmVsSWQgJiYgcGF5bG9hZC5jaGFubmVsX2lkKSBtZXNzYWdlLmNoYW5uZWxJZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuY2hhbm5lbF9pZClcbiAgaWYgKHByb3BzLmNvbXBvbmVudHMgJiYgcGF5bG9hZC5jb21wb25lbnRzPy5sZW5ndGgpIG1lc3NhZ2UuY29tcG9uZW50cyA9IHBheWxvYWQuY29tcG9uZW50cy5tYXAoKGNvbXApID0+IGJvdC50cmFuc2Zvcm1lcnMuY29tcG9uZW50KGJvdCwgY29tcCkpXG4gIGlmIChwcm9wcy5jb250ZW50ICYmIHBheWxvYWQuY29udGVudCkgbWVzc2FnZS5jb250ZW50ID0gcGF5bG9hZC5jb250ZW50ID8/IEVNUFRZX1NUUklOR1xuICBpZiAocHJvcHMuZWRpdGVkVGltZXN0YW1wICYmIHBheWxvYWQuZWRpdGVkX3RpbWVzdGFtcCkgbWVzc2FnZS5lZGl0ZWRUaW1lc3RhbXAgPSBEYXRlLnBhcnNlKHBheWxvYWQuZWRpdGVkX3RpbWVzdGFtcClcbiAgaWYgKHByb3BzLmVtYmVkcyAmJiBwYXlsb2FkLmVtYmVkcz8ubGVuZ3RoKSBtZXNzYWdlLmVtYmVkcyA9IHBheWxvYWQuZW1iZWRzLm1hcCgoZW1iZWQpID0+IGJvdC50cmFuc2Zvcm1lcnMuZW1iZWQoYm90LCBlbWJlZCkpXG4gIGlmIChwcm9wcy5ndWlsZElkICYmIGd1aWxkSWQpIG1lc3NhZ2UuZ3VpbGRJZCA9IGd1aWxkSWRcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIG1lc3NhZ2UuaWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmlkKVxuICBpZiAocGF5bG9hZC5pbnRlcmFjdGlvbl9tZXRhZGF0YSkgbWVzc2FnZS5pbnRlcmFjdGlvbk1ldGFkYXRhID0gdHJhbnNmb3JtTWVzc2FnZUludGVyYWN0aW9uTWV0YWRhdGEoYm90LCBwYXlsb2FkLmludGVyYWN0aW9uX21ldGFkYXRhKVxuICBpZiAocGF5bG9hZC5pbnRlcmFjdGlvbikge1xuICAgIGNvbnN0IGludGVyYWN0aW9uID0ge30gYXMgTm9uTnVsbGFibGU8TWVzc2FnZVsnaW50ZXJhY3Rpb24nXT5cbiAgICBsZXQgZWRpdGVkID0gZmFsc2VcbiAgICBpZiAocHJvcHMuaW50ZXJhY3Rpb24uaWQpIHtcbiAgICAgIGludGVyYWN0aW9uLmlkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5pbnRlcmFjdGlvbi5pZClcbiAgICAgIGVkaXRlZCA9IHRydWVcbiAgICB9XG4gICAgaWYgKHByb3BzLmludGVyYWN0aW9uLm1lbWJlciAmJiBwYXlsb2FkLmludGVyYWN0aW9uLm1lbWJlcikge1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUT0RPOiBwYXJ0aWFsIC0gY2hlY2sgd2h5IHRoaXMgaXMgcGFydGlhbCBhbmQgaGFuZGxlIGFzIG5lZWRlZFxuICAgICAgaW50ZXJhY3Rpb24ubWVtYmVyID0gYm90LnRyYW5zZm9ybWVycy5tZW1iZXIoYm90LCBwYXlsb2FkLmludGVyYWN0aW9uLm1lbWJlciwgZ3VpbGRJZCwgcGF5bG9hZC5pbnRlcmFjdGlvbi51c2VyLmlkKVxuICAgICAgZWRpdGVkID0gdHJ1ZVxuICAgIH1cbiAgICBpZiAocHJvcHMuaW50ZXJhY3Rpb24ubmFtZSkge1xuICAgICAgaW50ZXJhY3Rpb24ubmFtZSA9IHBheWxvYWQuaW50ZXJhY3Rpb24ubmFtZVxuICAgICAgZWRpdGVkID0gdHJ1ZVxuICAgIH1cbiAgICBpZiAocHJvcHMuaW50ZXJhY3Rpb24udHlwZSkge1xuICAgICAgaW50ZXJhY3Rpb24udHlwZSA9IHBheWxvYWQuaW50ZXJhY3Rpb24udHlwZVxuICAgICAgZWRpdGVkID0gdHJ1ZVxuICAgIH1cbiAgICBpZiAocHJvcHMuaW50ZXJhY3Rpb24udXNlcikge1xuICAgICAgaW50ZXJhY3Rpb24udXNlciA9IGJvdC50cmFuc2Zvcm1lcnMudXNlcihib3QsIHBheWxvYWQuaW50ZXJhY3Rpb24udXNlcilcbiAgICAgIGVkaXRlZCA9IHRydWVcbiAgICB9XG5cbiAgICBpZiAoZWRpdGVkKSBtZXNzYWdlLmludGVyYWN0aW9uID0gaW50ZXJhY3Rpb25cbiAgfVxuICBpZiAocHJvcHMubWVtYmVyICYmIGd1aWxkSWQgJiYgcGF5bG9hZC5tZW1iZXIpIG1lc3NhZ2UubWVtYmVyID0gYm90LnRyYW5zZm9ybWVycy5tZW1iZXIoYm90LCBwYXlsb2FkLm1lbWJlciwgZ3VpbGRJZCwgdXNlcklkKVxuICBpZiAocGF5bG9hZC5tZW50aW9uX2V2ZXJ5b25lKSBtZXNzYWdlLm1lbnRpb25FdmVyeW9uZSA9IHRydWVcbiAgaWYgKHByb3BzLm1lbnRpb25lZENoYW5uZWxJZHMgJiYgcGF5bG9hZC5tZW50aW9uX2NoYW5uZWxzPy5sZW5ndGgpIHtcbiAgICBtZXNzYWdlLm1lbnRpb25lZENoYW5uZWxJZHMgPSBbXG4gICAgICAvLyBLZWVwIGFueSBpZHMgdGh0IGRpc2NvcmQgc2VuZHNcbiAgICAgIC4uLihwYXlsb2FkLm1lbnRpb25fY2hhbm5lbHMgPz8gW10pLm1hcCgobSkgPT4gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UobS5pZCkpLFxuICAgICAgLy8gQWRkIGFueSBvdGhlciBpZHMgdGhhdCBjYW4gYmUgdmFsaWRhdGVkIGluIGEgY2hhbm5lbCBtZW50aW9uIGZvcm1hdFxuICAgICAgLi4uKHBheWxvYWQuY29udGVudD8ubWF0Y2goQ0hBTk5FTF9NRU5USU9OX1JFR0VYKSA/PyBbXSkubWFwKCh0ZXh0KSA9PlxuICAgICAgICAvLyBjb252ZXJ0cyB0aGUgPCMxMjM+IGludG8gMTIzXG4gICAgICAgIGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHRleHQuc3Vic3RyaW5nKDIsIHRleHQubGVuZ3RoIC0gMSkpLFxuICAgICAgKSxcbiAgICBdXG4gIH1cbiAgaWYgKHByb3BzLm1lbnRpb25lZFJvbGVJZHMgJiYgcGF5bG9hZC5tZW50aW9uX3JvbGVzPy5sZW5ndGgpXG4gICAgbWVzc2FnZS5tZW50aW9uZWRSb2xlSWRzID0gcGF5bG9hZC5tZW50aW9uX3JvbGVzLm1hcCgoaWQpID0+IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKGlkKSlcbiAgaWYgKHByb3BzLm1lbnRpb25zICYmIHBheWxvYWQubWVudGlvbnM/Lmxlbmd0aCkgbWVzc2FnZS5tZW50aW9ucyA9IHBheWxvYWQubWVudGlvbnMubWFwKCh1c2VyKSA9PiBib3QudHJhbnNmb3JtZXJzLnVzZXIoYm90LCB1c2VyKSlcbiAgaWYgKHBheWxvYWQubWVzc2FnZV9yZWZlcmVuY2UpIHtcbiAgICBjb25zdCByZWZlcmVuY2UgPSB7fSBhcyBOb25OdWxsYWJsZTxNZXNzYWdlWydtZXNzYWdlUmVmZXJlbmNlJ10+XG4gICAgbGV0IGVkaXRlZCA9IGZhbHNlXG5cbiAgICBpZiAocHJvcHMubWVzc2FnZVJlZmVyZW5jZS5jaGFubmVsSWQgJiYgcGF5bG9hZC5tZXNzYWdlX3JlZmVyZW5jZS5jaGFubmVsX2lkKSB7XG4gICAgICByZWZlcmVuY2UuY2hhbm5lbElkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5tZXNzYWdlX3JlZmVyZW5jZS5jaGFubmVsX2lkKVxuICAgICAgZWRpdGVkID0gdHJ1ZVxuICAgIH1cbiAgICBpZiAocHJvcHMubWVzc2FnZVJlZmVyZW5jZS5ndWlsZElkICYmIHBheWxvYWQubWVzc2FnZV9yZWZlcmVuY2UuZ3VpbGRfaWQpIHtcbiAgICAgIHJlZmVyZW5jZS5ndWlsZElkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5tZXNzYWdlX3JlZmVyZW5jZS5ndWlsZF9pZClcbiAgICAgIGVkaXRlZCA9IHRydWVcbiAgICB9XG4gICAgaWYgKHByb3BzLm1lc3NhZ2VSZWZlcmVuY2UubWVzc2FnZUlkICYmIHBheWxvYWQubWVzc2FnZV9yZWZlcmVuY2UubWVzc2FnZV9pZCkge1xuICAgICAgcmVmZXJlbmNlLm1lc3NhZ2VJZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQubWVzc2FnZV9yZWZlcmVuY2UubWVzc2FnZV9pZClcbiAgICAgIGVkaXRlZCA9IHRydWVcbiAgICB9XG5cbiAgICBpZiAoZWRpdGVkKSBtZXNzYWdlLm1lc3NhZ2VSZWZlcmVuY2UgPSByZWZlcmVuY2VcbiAgfVxuICBpZiAocHJvcHMubm9uY2UgJiYgcGF5bG9hZC5ub25jZSkgbWVzc2FnZS5ub25jZSA9IHBheWxvYWQubm9uY2VcbiAgaWYgKHBheWxvYWQucGlubmVkKSBtZXNzYWdlLnBpbm5lZCA9IHRydWVcbiAgaWYgKHByb3BzLnJlYWN0aW9ucyAmJiBwYXlsb2FkLnJlYWN0aW9ucz8ubGVuZ3RoKSB7XG4gICAgbWVzc2FnZS5yZWFjdGlvbnMgPSBwYXlsb2FkLnJlYWN0aW9ucy5tYXAoKHJlYWN0aW9uKSA9PiAoe1xuICAgICAgbWU6IHJlYWN0aW9uLm1lLFxuICAgICAgbWVCdXJzdDogcmVhY3Rpb24ubWVfYnVyc3QsXG4gICAgICBjb3VudDogcmVhY3Rpb24uY291bnQsXG4gICAgICBjb3VudERldGFpbHM6IHtcbiAgICAgICAgYnVyc3Q6IHJlYWN0aW9uLmNvdW50X2RldGFpbHMuYnVyc3QsXG4gICAgICAgIG5vcm1hbDogcmVhY3Rpb24uY291bnRfZGV0YWlscy5ub3JtYWwsXG4gICAgICB9LFxuICAgICAgZW1vamk6IGJvdC50cmFuc2Zvcm1lcnMuZW1vamkoYm90LCByZWFjdGlvbi5lbW9qaSksXG4gICAgICBidXJzdENvbG9yczogcmVhY3Rpb24uYnVyc3RfY29sb3JzLFxuICAgIH0pKVxuICB9XG4gIGlmIChwcm9wcy5zdGlja2VySXRlbXMgJiYgcGF5bG9hZC5zdGlja2VyX2l0ZW1zPy5sZW5ndGgpXG4gICAgbWVzc2FnZS5zdGlja2VySXRlbXMgPSBwYXlsb2FkLnN0aWNrZXJfaXRlbXMubWFwKChpdGVtKSA9PiAoe1xuICAgICAgaWQ6IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKGl0ZW0uaWQpLFxuICAgICAgbmFtZTogaXRlbS5uYW1lLFxuICAgICAgZm9ybWF0VHlwZTogaXRlbS5mb3JtYXRfdHlwZSxcbiAgICB9KSlcbiAgaWYgKHBheWxvYWQudHRzKSBtZXNzYWdlLnR0cyA9IHRydWVcbiAgaWYgKHByb3BzLnRocmVhZCAmJiBwYXlsb2FkLnRocmVhZCkgbWVzc2FnZS50aHJlYWQgPSBib3QudHJhbnNmb3JtZXJzLmNoYW5uZWwoYm90LCB7IGNoYW5uZWw6IHBheWxvYWQudGhyZWFkLCBndWlsZElkIH0pXG4gIGlmIChwcm9wcy50eXBlKSBtZXNzYWdlLnR5cGUgPSBwYXlsb2FkLnR5cGVcbiAgaWYgKHByb3BzLndlYmhvb2tJZCAmJiBwYXlsb2FkLndlYmhvb2tfaWQpIG1lc3NhZ2Uud2ViaG9va0lkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC53ZWJob29rX2lkKVxuICBpZiAocHJvcHMucG9sbCAmJiBwYXlsb2FkLnBvbGwpIG1lc3NhZ2UucG9sbCA9IGJvdC50cmFuc2Zvcm1lcnMucG9sbChib3QsIHBheWxvYWQucG9sbClcbiAgaWYgKHByb3BzLmNhbGwgJiYgcGF5bG9hZC5jYWxsKSBtZXNzYWdlLmNhbGwgPSBib3QudHJhbnNmb3JtZXJzLm1lc3NhZ2VDYWxsKGJvdCwgcGF5bG9hZC5jYWxsKVxuXG4gIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmN1c3RvbWl6ZXJzLm1lc3NhZ2UoYm90LCBwYXlsb2FkLCBtZXNzYWdlKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtTWVzc2FnZUludGVyYWN0aW9uTWV0YWRhdGEoYm90OiBCb3QsIHBheWxvYWQ6IERpc2NvcmRNZXNzYWdlSW50ZXJhY3Rpb25NZXRhZGF0YSk6IE1lc3NhZ2VJbnRlcmFjdGlvbk1ldGFkYXRhIHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLm1lc3NhZ2UuaW50ZXJhY3Rpb25NZXRhZGF0YVxuICBjb25zdCBtZXRhZGF0YSA9IHt9IGFzIE1lc3NhZ2VJbnRlcmFjdGlvbk1ldGFkYXRhXG5cbiAgaWYgKHByb3BzLmlkKSBtZXRhZGF0YS5pZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaWQpXG4gIGlmIChwcm9wcy5hdXRob3JpemluZ0ludGVncmF0aW9uT3duZXJzKSB7XG4gICAgbWV0YWRhdGEuYXV0aG9yaXppbmdJbnRlZ3JhdGlvbk93bmVycyA9IHt9XG4gICAgaWYgKHBheWxvYWQuYXV0aG9yaXppbmdfaW50ZWdyYXRpb25fb3duZXJzWycwJ10pXG4gICAgICBtZXRhZGF0YS5hdXRob3JpemluZ0ludGVncmF0aW9uT3duZXJzW0Rpc2NvcmRBcHBsaWNhdGlvbkludGVncmF0aW9uVHlwZS5HdWlsZEluc3RhbGxdID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UoXG4gICAgICAgIHBheWxvYWQuYXV0aG9yaXppbmdfaW50ZWdyYXRpb25fb3duZXJzWycwJ10sXG4gICAgICApXG4gICAgaWYgKHBheWxvYWQuYXV0aG9yaXppbmdfaW50ZWdyYXRpb25fb3duZXJzWycxJ10pXG4gICAgICBtZXRhZGF0YS5hdXRob3JpemluZ0ludGVncmF0aW9uT3duZXJzW0Rpc2NvcmRBcHBsaWNhdGlvbkludGVncmF0aW9uVHlwZS5Vc2VySW5zdGFsbF0gPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShcbiAgICAgICAgcGF5bG9hZC5hdXRob3JpemluZ19pbnRlZ3JhdGlvbl9vd25lcnNbJzEnXSxcbiAgICAgIClcbiAgfVxuICBpZiAocHJvcHMuaW50ZXJhY3RlZE1lc3NhZ2VJZCAmJiBwYXlsb2FkLmludGVyYWN0ZWRfbWVzc2FnZV9pZClcbiAgICBtZXRhZGF0YS5pbnRlcmFjdGVkTWVzc2FnZUlkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5pbnRlcmFjdGVkX21lc3NhZ2VfaWQpXG4gIGlmIChwcm9wcy5vcmlnaW5hbFJlc3BvbnNlTWVzc2FnZUlkICYmIHBheWxvYWQub3JpZ2luYWxfcmVzcG9uc2VfbWVzc2FnZV9pZClcbiAgICBtZXRhZGF0YS5vcmlnaW5hbFJlc3BvbnNlTWVzc2FnZUlkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5vcmlnaW5hbF9yZXNwb25zZV9tZXNzYWdlX2lkKVxuICBpZiAocHJvcHMudHJpZ2dlcmluZ0ludGVyYWN0aW9uTWV0YWRhdGEgJiYgcGF5bG9hZC50cmlnZ2VyaW5nX2ludGVyYWN0aW9uX21ldGFkYXRhKVxuICAgIG1ldGFkYXRhLnRyaWdnZXJpbmdJbnRlcmFjdGlvbk1ldGFkYXRhID0gdHJhbnNmb3JtTWVzc2FnZUludGVyYWN0aW9uTWV0YWRhdGEoYm90LCBwYXlsb2FkLnRyaWdnZXJpbmdfaW50ZXJhY3Rpb25fbWV0YWRhdGEpXG4gIGlmIChwcm9wcy50eXBlKSBtZXRhZGF0YS50eXBlID0gcGF5bG9hZC50eXBlXG4gIGlmIChwcm9wcy51c2VyICYmIHBheWxvYWQudXNlcikgbWV0YWRhdGEudXNlciA9IGJvdC50cmFuc2Zvcm1lcnMudXNlcihib3QsIHBheWxvYWQudXNlcilcblxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy5tZXNzYWdlSW50ZXJhY3Rpb25NZXRhZGF0YShib3QsIHBheWxvYWQsIG1ldGFkYXRhKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtTWVzc2FnZUNhbGwoYm90OiBCb3QsIHBheWxvYWQ6IERpc2NvcmRNZXNzYWdlQ2FsbCk6IE1lc3NhZ2VDYWxsIHtcbiAgY29uc3QgY2FsbCA9IHt9IGFzIE1lc3NhZ2VDYWxsXG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5tZXNzYWdlLmNhbGxcblxuICBpZiAocHJvcHMucGFydGljaXBhbnRzICYmIHBheWxvYWQucGFydGljaXBhbnRzKSBjYWxsLnBhcnRpY2lwYW50cyA9IHBheWxvYWQucGFydGljaXBhbnRzLm1hcCgoeCkgPT4gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UoeCkpXG4gIGlmIChwcm9wcy5lbmRlZFRpbWVzdGFtcCAmJiBwYXlsb2FkLmVuZGVkX3RpbWVzdGFtcCkgY2FsbC5lbmRlZFRpbWVzdGFtcCA9IERhdGUucGFyc2UocGF5bG9hZC5lbmRlZF90aW1lc3RhbXApXG5cbiAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY3VzdG9taXplcnMubWVzc2FnZUNhbGwoYm90LCBwYXlsb2FkLCBjYWxsKVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1lc3NhZ2VJbnRlcmFjdGlvbk1ldGFkYXRhIHtcbiAgLyoqIElkIG9mIHRoZSBpbnRlcmFjdGlvbiAqL1xuICBpZDogYmlnaW50XG4gIC8qKiBUaGUgdHlwZSBvZiBpbnRlcmFjdGlvbiAqL1xuICB0eXBlOiBJbnRlcmFjdGlvblR5cGVzXG4gIC8qKiBVc2VyIHdobyB0cmlnZ2VyZWQgdGhlIGludGVyYWN0aW9uICovXG4gIHVzZXI6IFVzZXJcbiAgLyoqIElEcyBmb3IgaW5zdGFsbGF0aW9uIGNvbnRleHQocykgcmVsYXRlZCB0byBhbiBpbnRlcmFjdGlvbiAqL1xuICBhdXRob3JpemluZ0ludGVncmF0aW9uT3duZXJzOiBQYXJ0aWFsPFJlY29yZDxEaXNjb3JkQXBwbGljYXRpb25JbnRlZ3JhdGlvblR5cGUsIGJpZ2ludD4+XG4gIC8qKiBJRCBvZiB0aGUgb3JpZ2luYWwgcmVzcG9uc2UgbWVzc2FnZSwgcHJlc2VudCBvbmx5IG9uIGZvbGxvdy11cCBtZXNzYWdlcyAqL1xuICBvcmlnaW5hbFJlc3BvbnNlTWVzc2FnZUlkPzogYmlnaW50XG4gIC8qKiBJRCBvZiB0aGUgbWVzc2FnZSB0aGF0IGNvbnRhaW5lZCBpbnRlcmFjdGl2ZSBjb21wb25lbnQsIHByZXNlbnQgb25seSBvbiBtZXNzYWdlcyBjcmVhdGVkIGZyb20gY29tcG9uZW50IGludGVyYWN0aW9ucyAqL1xuICBpbnRlcmFjdGVkTWVzc2FnZUlkPzogYmlnaW50XG4gIC8qKiBNZXRhZGF0YSBmb3IgdGhlIGludGVyYWN0aW9uIHRoYXQgd2FzIHVzZWQgdG8gb3BlbiB0aGUgbW9kYWwsIHByZXNlbnQgb25seSBvbiBtb2RhbCBzdWJtaXQgaW50ZXJhY3Rpb25zICovXG4gIHRyaWdnZXJpbmdJbnRlcmFjdGlvbk1ldGFkYXRhPzogTWVzc2FnZUludGVyYWN0aW9uTWV0YWRhdGFcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlQ2FsbCB7XG4gIC8qKiBBcnJheSBvZiB1c2VyIG9iamVjdCBpZHMgdGhhdCBwYXJ0aWNpcGF0ZWQgaW4gdGhlIGNhbGwgKi9cbiAgcGFydGljaXBhbnRzOiBiaWdpbnRbXVxuICAvKiogVGltZSB3aGVuIGNhbGwgZW5kZWQgKi9cbiAgZW5kZWRUaW1lc3RhbXA6IG51bWJlclxufVxuIl0sIm5hbWVzIjpbInRyYW5zZm9ybU1lc3NhZ2UiLCJ0cmFuc2Zvcm1NZXNzYWdlQ2FsbCIsInRyYW5zZm9ybU1lc3NhZ2VJbnRlcmFjdGlvbk1ldGFkYXRhIiwiYmFzZU1lc3NhZ2UiLCJjcm9zc3Bvc3RlZCIsImZsYWdzIiwiY29udGFpbnMiLCJNZXNzYWdlRmxhZ3MiLCJDcm9zc3Bvc3RlZCIsInZhbHVlIiwiYWRkIiwicmVtb3ZlIiwiZXBoZW1lcmFsIiwiRXBoZW1lcmFsIiwiZmFpbGVkVG9NZW50aW9uU29tZVJvbGVzSW5UaHJlYWQiLCJGYWlsZWRUb01lbnRpb25Tb21lUm9sZXNJblRocmVhZCIsImhhc1RocmVhZCIsIkhhc1RocmVhZCIsImlzQ3Jvc3Nwb3N0IiwiSXNDcm9zc3Bvc3QiLCJsb2FkaW5nIiwiTG9hZGluZyIsIm1lbnRpb25lZFVzZXJJZHMiLCJtZW50aW9ucyIsIm1hcCIsInVzZXIiLCJpZCIsIm1lbnRpb25FdmVyeW9uZSIsImJpdGZpZWxkIiwicGlubmVkIiwic291cmNlTWVzc2FnZURlbGV0ZWQiLCJTb3VyY2VNZXNzYWdlRGVsZXRlZCIsInN1cHByZXNzRW1iZWRzIiwiU3VwcHJlc3NFbWJlZHMiLCJzdXBwcmVzc05vdGlmaWNhdGlvbnMiLCJTdXBwcmVzc05vdGlmaWNhdGlvbnMiLCJ0aW1lc3RhbXAiLCJzbm93Zmxha2VUb1RpbWVzdGFtcCIsInR0cyIsInVyZ2VudCIsIlVyZ2VudCIsIkVNUFRZX1NUUklORyIsImJvdCIsInBheWxvYWQiLCJndWlsZElkIiwiZ3VpbGRfaWQiLCJ0cmFuc2Zvcm1lcnMiLCJzbm93Zmxha2UiLCJ1bmRlZmluZWQiLCJ1c2VySWQiLCJhdXRob3IiLCJtZXNzYWdlIiwiT2JqZWN0IiwiY3JlYXRlIiwiVG9nZ2xlQml0ZmllbGQiLCJwcm9wcyIsImRlc2lyZWRQcm9wZXJ0aWVzIiwiYXBwbGljYXRpb25JZCIsImFwcGxpY2F0aW9uX2lkIiwiYXR0YWNobWVudHMiLCJsZW5ndGgiLCJhdHRhY2htZW50IiwiY2hhbm5lbElkIiwiY2hhbm5lbF9pZCIsImNvbXBvbmVudHMiLCJjb21wIiwiY29tcG9uZW50IiwiY29udGVudCIsImVkaXRlZFRpbWVzdGFtcCIsImVkaXRlZF90aW1lc3RhbXAiLCJEYXRlIiwicGFyc2UiLCJlbWJlZHMiLCJlbWJlZCIsImludGVyYWN0aW9uX21ldGFkYXRhIiwiaW50ZXJhY3Rpb25NZXRhZGF0YSIsImludGVyYWN0aW9uIiwiZWRpdGVkIiwibWVtYmVyIiwibmFtZSIsInR5cGUiLCJtZW50aW9uX2V2ZXJ5b25lIiwibWVudGlvbmVkQ2hhbm5lbElkcyIsIm1lbnRpb25fY2hhbm5lbHMiLCJtIiwibWF0Y2giLCJDSEFOTkVMX01FTlRJT05fUkVHRVgiLCJ0ZXh0Iiwic3Vic3RyaW5nIiwibWVudGlvbmVkUm9sZUlkcyIsIm1lbnRpb25fcm9sZXMiLCJtZXNzYWdlX3JlZmVyZW5jZSIsInJlZmVyZW5jZSIsIm1lc3NhZ2VSZWZlcmVuY2UiLCJtZXNzYWdlSWQiLCJtZXNzYWdlX2lkIiwibm9uY2UiLCJyZWFjdGlvbnMiLCJyZWFjdGlvbiIsIm1lIiwibWVCdXJzdCIsIm1lX2J1cnN0IiwiY291bnQiLCJjb3VudERldGFpbHMiLCJidXJzdCIsImNvdW50X2RldGFpbHMiLCJub3JtYWwiLCJlbW9qaSIsImJ1cnN0Q29sb3JzIiwiYnVyc3RfY29sb3JzIiwic3RpY2tlckl0ZW1zIiwic3RpY2tlcl9pdGVtcyIsIml0ZW0iLCJmb3JtYXRUeXBlIiwiZm9ybWF0X3R5cGUiLCJ0aHJlYWQiLCJjaGFubmVsIiwid2ViaG9va0lkIiwid2ViaG9va19pZCIsInBvbGwiLCJjYWxsIiwibWVzc2FnZUNhbGwiLCJjdXN0b21pemVycyIsIm1ldGFkYXRhIiwiYXV0aG9yaXppbmdJbnRlZ3JhdGlvbk93bmVycyIsImF1dGhvcml6aW5nX2ludGVncmF0aW9uX293bmVycyIsIkRpc2NvcmRBcHBsaWNhdGlvbkludGVncmF0aW9uVHlwZSIsIkd1aWxkSW5zdGFsbCIsIlVzZXJJbnN0YWxsIiwiaW50ZXJhY3RlZE1lc3NhZ2VJZCIsImludGVyYWN0ZWRfbWVzc2FnZV9pZCIsIm9yaWdpbmFsUmVzcG9uc2VNZXNzYWdlSWQiLCJvcmlnaW5hbF9yZXNwb25zZV9tZXNzYWdlX2lkIiwidHJpZ2dlcmluZ0ludGVyYWN0aW9uTWV0YWRhdGEiLCJ0cmlnZ2VyaW5nX2ludGVyYWN0aW9uX21ldGFkYXRhIiwibWVzc2FnZUludGVyYWN0aW9uTWV0YWRhdGEiLCJwYXJ0aWNpcGFudHMiLCJ4IiwiZW5kZWRUaW1lc3RhbXAiLCJlbmRlZF90aW1lc3RhbXAiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBeVJnQkEsZ0JBQWdCO2VBQWhCQTs7SUErSUFDLG9CQUFvQjtlQUFwQkE7O0lBNUJBQyxtQ0FBbUM7ZUFBbkNBOzs7dUJBbFlUOzJCQUMrQjt1QkFDb0I7Z0NBTzNCO0FBRy9CLE1BQU1DLGNBQThDO0lBQ2xELElBQUlDLGVBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUNDLEtBQUssRUFBRUMsU0FBU0MsbUJBQVksQ0FBQ0MsV0FBVyxLQUFLO0lBQzNEO0lBQ0EsSUFBSUosYUFBWUssTUFBZ0I7UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQ0osS0FBSyxFQUFFO1FBQ2pCLElBQUlJLE9BQU8sSUFBSSxDQUFDSixLQUFLLENBQUNLLEdBQUcsQ0FBQ0gsbUJBQVksQ0FBQ0MsV0FBVzthQUM3QyxJQUFJLENBQUNILEtBQUssQ0FBQ00sTUFBTSxDQUFDSixtQkFBWSxDQUFDQyxXQUFXO0lBQ2pEO0lBQ0EsSUFBSUksYUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDUCxLQUFLLEVBQUVDLFNBQVNDLG1CQUFZLENBQUNNLFNBQVMsS0FBSztJQUN6RDtJQUNBLElBQUlELFdBQVVILE1BQWdCO1FBQzVCLElBQUksQ0FBQyxJQUFJLENBQUNKLEtBQUssRUFBRTtRQUNqQixJQUFJSSxPQUFPLElBQUksQ0FBQ0osS0FBSyxDQUFDSyxHQUFHLENBQUNILG1CQUFZLENBQUNNLFNBQVM7YUFDM0MsSUFBSSxDQUFDUixLQUFLLENBQUNNLE1BQU0sQ0FBQ0osbUJBQVksQ0FBQ00sU0FBUztJQUMvQztJQUNBLElBQUlDLG9DQUFtQztRQUNyQyxPQUFPLElBQUksQ0FBQ1QsS0FBSyxFQUFFQyxTQUFTQyxtQkFBWSxDQUFDUSxnQ0FBZ0MsS0FBSztJQUNoRjtJQUNBLElBQUlELGtDQUFpQ0wsTUFBZ0I7UUFDbkQsSUFBSSxDQUFDLElBQUksQ0FBQ0osS0FBSyxFQUFFO1FBQ2pCLElBQUlJLE9BQU8sSUFBSSxDQUFDSixLQUFLLENBQUNLLEdBQUcsQ0FBQ0gsbUJBQVksQ0FBQ1EsZ0NBQWdDO2FBQ2xFLElBQUksQ0FBQ1YsS0FBSyxDQUFDTSxNQUFNLENBQUNKLG1CQUFZLENBQUNRLGdDQUFnQztJQUN0RTtJQUNBLElBQUlDLGFBQVk7UUFDZCxPQUFPLElBQUksQ0FBQ1gsS0FBSyxFQUFFQyxTQUFTQyxtQkFBWSxDQUFDVSxTQUFTLEtBQUs7SUFDekQ7SUFDQSxJQUFJRCxXQUFVUCxNQUFnQjtRQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDSixLQUFLLEVBQUU7UUFDakIsSUFBSUksT0FBTyxJQUFJLENBQUNKLEtBQUssQ0FBQ0ssR0FBRyxDQUFDSCxtQkFBWSxDQUFDVSxTQUFTO2FBQzNDLElBQUksQ0FBQ1osS0FBSyxDQUFDTSxNQUFNLENBQUNKLG1CQUFZLENBQUNVLFNBQVM7SUFDL0M7SUFDQSxJQUFJQyxlQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDYixLQUFLLEVBQUVDLFNBQVNDLG1CQUFZLENBQUNZLFdBQVcsS0FBSztJQUMzRDtJQUNBLElBQUlELGFBQVlULE1BQWdCO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUNKLEtBQUssRUFBRTtRQUNqQixJQUFJSSxPQUFPLElBQUksQ0FBQ0osS0FBSyxDQUFDSyxHQUFHLENBQUNILG1CQUFZLENBQUNZLFdBQVc7YUFDN0MsSUFBSSxDQUFDZCxLQUFLLENBQUNNLE1BQU0sQ0FBQ0osbUJBQVksQ0FBQ1ksV0FBVztJQUNqRDtJQUNBLElBQUlDLFdBQVU7UUFDWixPQUFPLElBQUksQ0FBQ2YsS0FBSyxFQUFFQyxTQUFTQyxtQkFBWSxDQUFDYyxPQUFPLEtBQUs7SUFDdkQ7SUFDQSxJQUFJRCxTQUFRWCxNQUFnQjtRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDSixLQUFLLEVBQUU7UUFDakIsSUFBSUksT0FBTyxJQUFJLENBQUNKLEtBQUssQ0FBQ0ssR0FBRyxDQUFDSCxtQkFBWSxDQUFDYyxPQUFPO2FBQ3pDLElBQUksQ0FBQ2hCLEtBQUssQ0FBQ00sTUFBTSxDQUFDSixtQkFBWSxDQUFDYyxPQUFPO0lBQzdDO0lBQ0EsSUFBSUMsb0JBQW1CO1FBQ3JCLE9BQU8sSUFBSSxDQUFDQyxRQUFRLEVBQUVDLElBQUksQ0FBQ0MsT0FBU0EsS0FBS0MsRUFBRSxLQUFLLEVBQUU7SUFDcEQ7SUFDQSxJQUFJQyxtQkFBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUNDLFFBQVEsRUFBRXRCLFNBQVMsTUFBTTtJQUN2QztJQUNBLElBQUlxQixpQkFBZ0JsQixNQUFnQjtRQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDbUIsUUFBUSxFQUFFO1FBQ3BCLElBQUluQixPQUFPLElBQUksQ0FBQ21CLFFBQVEsQ0FBQ2xCLEdBQUcsQ0FBQzthQUN4QixJQUFJLENBQUNrQixRQUFRLENBQUNqQixNQUFNLENBQUM7SUFDNUI7SUFDQSxJQUFJa0IsVUFBUztRQUNYLE9BQU8sSUFBSSxDQUFDRCxRQUFRLEVBQUV0QixTQUFTLE1BQU07SUFDdkM7SUFDQSxJQUFJdUIsUUFBT3BCLE1BQWdCO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUNtQixRQUFRLEVBQUU7UUFDcEIsSUFBSW5CLE9BQU8sSUFBSSxDQUFDbUIsUUFBUSxDQUFDbEIsR0FBRyxDQUFDO2FBQ3hCLElBQUksQ0FBQ2tCLFFBQVEsQ0FBQ2pCLE1BQU0sQ0FBQztJQUM1QjtJQUNBLElBQUltQix3QkFBdUI7UUFDekIsT0FBTyxJQUFJLENBQUN6QixLQUFLLEVBQUVDLFNBQVNDLG1CQUFZLENBQUN3QixvQkFBb0IsS0FBSztJQUNwRTtJQUNBLElBQUlELHNCQUFxQnJCLE1BQWdCO1FBQ3ZDLElBQUksQ0FBQyxJQUFJLENBQUNKLEtBQUssRUFBRTtRQUNqQixJQUFJSSxPQUFPLElBQUksQ0FBQ0osS0FBSyxDQUFDSyxHQUFHLENBQUNILG1CQUFZLENBQUN3QixvQkFBb0I7YUFDdEQsSUFBSSxDQUFDMUIsS0FBSyxDQUFDTSxNQUFNLENBQUNKLG1CQUFZLENBQUN3QixvQkFBb0I7SUFDMUQ7SUFDQSxJQUFJQyxrQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMzQixLQUFLLEVBQUVDLFNBQVNDLG1CQUFZLENBQUMwQixjQUFjLEtBQUs7SUFDOUQ7SUFDQSxJQUFJRCxnQkFBZXZCLE1BQWdCO1FBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUNKLEtBQUssRUFBRTtRQUNqQixJQUFJSSxPQUFPLElBQUksQ0FBQ0osS0FBSyxDQUFDSyxHQUFHLENBQUNILG1CQUFZLENBQUMwQixjQUFjO2FBQ2hELElBQUksQ0FBQzVCLEtBQUssQ0FBQ00sTUFBTSxDQUFDSixtQkFBWSxDQUFDMEIsY0FBYztJQUNwRDtJQUNBLElBQUlDLHlCQUF3QjtRQUMxQixPQUFPLElBQUksQ0FBQzdCLEtBQUssRUFBRUMsU0FBU0MsbUJBQVksQ0FBQzRCLHFCQUFxQixLQUFLO0lBQ3JFO0lBQ0EsSUFBSUQsdUJBQXNCekIsTUFBZ0I7UUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQ0osS0FBSyxFQUFFO1FBQ2pCLElBQUlJLE9BQU8sSUFBSSxDQUFDSixLQUFLLENBQUNLLEdBQUcsQ0FBQ0gsbUJBQVksQ0FBQzRCLHFCQUFxQjthQUN2RCxJQUFJLENBQUM5QixLQUFLLENBQUNNLE1BQU0sQ0FBQ0osbUJBQVksQ0FBQzRCLHFCQUFxQjtJQUMzRDtJQUNBLElBQUlDLGFBQVk7UUFDZCxPQUFPLElBQUksQ0FBQ1YsRUFBRSxHQUFHVyxJQUFBQSwyQkFBb0IsRUFBQyxJQUFJLENBQUNYLEVBQUUsSUFBSTtJQUNuRDtJQUNBLElBQUlZLE9BQU07UUFDUixPQUFPLElBQUksQ0FBQ1YsUUFBUSxFQUFFdEIsU0FBUyxNQUFNO0lBQ3ZDO0lBQ0EsSUFBSWdDLEtBQUk3QixNQUFnQjtRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDbUIsUUFBUSxFQUFFO1FBQ3BCLElBQUluQixPQUFPLElBQUksQ0FBQ21CLFFBQVEsQ0FBQ2xCLEdBQUcsQ0FBQzthQUN4QixJQUFJLENBQUNrQixRQUFRLENBQUNqQixNQUFNLENBQUM7SUFDNUI7SUFDQSxJQUFJNEIsVUFBUztRQUNYLE9BQU8sSUFBSSxDQUFDbEMsS0FBSyxFQUFFQyxTQUFTQyxtQkFBWSxDQUFDaUMsTUFBTSxLQUFLO0lBQ3REO0lBQ0EsSUFBSUQsUUFBTzlCLE1BQWdCO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUNKLEtBQUssRUFBRTtRQUNqQixJQUFJSSxPQUFPLElBQUksQ0FBQ0osS0FBSyxDQUFDSyxHQUFHLENBQUNILG1CQUFZLENBQUNpQyxNQUFNO2FBQ3hDLElBQUksQ0FBQ25DLEtBQUssQ0FBQ00sTUFBTSxDQUFDSixtQkFBWSxDQUFDaUMsTUFBTTtJQUM1QztBQUNGO0FBa0pBLE1BQU1DLGVBQWU7QUFFZCxTQUFTekMsaUJBQWlCMEMsR0FBUSxFQUFFQyxPQUF1QjtJQUNoRSxNQUFNQyxVQUFVRCxRQUFRRSxRQUFRLEdBQUdILElBQUlJLFlBQVksQ0FBQ0MsU0FBUyxDQUFDSixRQUFRRSxRQUFRLElBQUlHO0lBQ2xGLE1BQU1DLFNBQVNQLElBQUlJLFlBQVksQ0FBQ0MsU0FBUyxDQUFDSixRQUFRTyxNQUFNLENBQUN4QixFQUFFO0lBRTNELE1BQU15QixVQUFtQkMsT0FBT0MsTUFBTSxDQUFDbEQ7SUFDdkNnRCxRQUFRdkIsUUFBUSxHQUFHLElBQUkwQiw4QkFBYztJQUNyQ0gsUUFBUTlDLEtBQUssR0FBRyxJQUFJaUQsOEJBQWMsQ0FBQ1gsUUFBUXRDLEtBQUs7SUFFaEQsTUFBTWtELFFBQVFiLElBQUlJLFlBQVksQ0FBQ1UsaUJBQWlCLENBQUNMLE9BQU87SUFFeEQsSUFBSUksTUFBTUwsTUFBTSxJQUFJUCxRQUFRTyxNQUFNLEVBQUVDLFFBQVFELE1BQU0sR0FBR1IsSUFBSUksWUFBWSxDQUFDckIsSUFBSSxDQUFDaUIsS0FBS0MsUUFBUU8sTUFBTTtJQUM5RixJQUFJSyxNQUFNRSxhQUFhLElBQUlkLFFBQVFlLGNBQWMsRUFBRVAsUUFBUU0sYUFBYSxHQUFHZixJQUFJSSxZQUFZLENBQUNDLFNBQVMsQ0FBQ0osUUFBUWUsY0FBYztJQUM1SCxJQUFJSCxNQUFNSSxXQUFXLElBQUloQixRQUFRZ0IsV0FBVyxFQUFFQyxRQUM1Q1QsUUFBUVEsV0FBVyxHQUFHaEIsUUFBUWdCLFdBQVcsQ0FBQ25DLEdBQUcsQ0FBQyxDQUFDcUMsYUFBZW5CLElBQUlJLFlBQVksQ0FBQ2UsVUFBVSxDQUFDbkIsS0FBS21CO0lBQ2pHLElBQUlOLE1BQU1PLFNBQVMsSUFBSW5CLFFBQVFvQixVQUFVLEVBQUVaLFFBQVFXLFNBQVMsR0FBR3BCLElBQUlJLFlBQVksQ0FBQ0MsU0FBUyxDQUFDSixRQUFRb0IsVUFBVTtJQUM1RyxJQUFJUixNQUFNUyxVQUFVLElBQUlyQixRQUFRcUIsVUFBVSxFQUFFSixRQUFRVCxRQUFRYSxVQUFVLEdBQUdyQixRQUFRcUIsVUFBVSxDQUFDeEMsR0FBRyxDQUFDLENBQUN5QyxPQUFTdkIsSUFBSUksWUFBWSxDQUFDb0IsU0FBUyxDQUFDeEIsS0FBS3VCO0lBQzFJLElBQUlWLE1BQU1ZLE9BQU8sSUFBSXhCLFFBQVF3QixPQUFPLEVBQUVoQixRQUFRZ0IsT0FBTyxHQUFHeEIsUUFBUXdCLE9BQU8sSUFBSTFCO0lBQzNFLElBQUljLE1BQU1hLGVBQWUsSUFBSXpCLFFBQVEwQixnQkFBZ0IsRUFBRWxCLFFBQVFpQixlQUFlLEdBQUdFLEtBQUtDLEtBQUssQ0FBQzVCLFFBQVEwQixnQkFBZ0I7SUFDcEgsSUFBSWQsTUFBTWlCLE1BQU0sSUFBSTdCLFFBQVE2QixNQUFNLEVBQUVaLFFBQVFULFFBQVFxQixNQUFNLEdBQUc3QixRQUFRNkIsTUFBTSxDQUFDaEQsR0FBRyxDQUFDLENBQUNpRCxRQUFVL0IsSUFBSUksWUFBWSxDQUFDMkIsS0FBSyxDQUFDL0IsS0FBSytCO0lBQ3ZILElBQUlsQixNQUFNWCxPQUFPLElBQUlBLFNBQVNPLFFBQVFQLE9BQU8sR0FBR0E7SUFDaEQsSUFBSVcsTUFBTTdCLEVBQUUsSUFBSWlCLFFBQVFqQixFQUFFLEVBQUV5QixRQUFRekIsRUFBRSxHQUFHZ0IsSUFBSUksWUFBWSxDQUFDQyxTQUFTLENBQUNKLFFBQVFqQixFQUFFO0lBQzlFLElBQUlpQixRQUFRK0Isb0JBQW9CLEVBQUV2QixRQUFRd0IsbUJBQW1CLEdBQUd6RSxvQ0FBb0N3QyxLQUFLQyxRQUFRK0Isb0JBQW9CO0lBQ3JJLElBQUkvQixRQUFRaUMsV0FBVyxFQUFFO1FBQ3ZCLE1BQU1BLGNBQWMsQ0FBQztRQUNyQixJQUFJQyxTQUFTO1FBQ2IsSUFBSXRCLE1BQU1xQixXQUFXLENBQUNsRCxFQUFFLEVBQUU7WUFDeEJrRCxZQUFZbEQsRUFBRSxHQUFHZ0IsSUFBSUksWUFBWSxDQUFDQyxTQUFTLENBQUNKLFFBQVFpQyxXQUFXLENBQUNsRCxFQUFFO1lBQ2xFbUQsU0FBUztRQUNYO1FBQ0EsSUFBSXRCLE1BQU1xQixXQUFXLENBQUNFLE1BQU0sSUFBSW5DLFFBQVFpQyxXQUFXLENBQUNFLE1BQU0sRUFBRTtZQUMxRCxrRkFBa0Y7WUFDbEZGLFlBQVlFLE1BQU0sR0FBR3BDLElBQUlJLFlBQVksQ0FBQ2dDLE1BQU0sQ0FBQ3BDLEtBQUtDLFFBQVFpQyxXQUFXLENBQUNFLE1BQU0sRUFBRWxDLFNBQVNELFFBQVFpQyxXQUFXLENBQUNuRCxJQUFJLENBQUNDLEVBQUU7WUFDbEhtRCxTQUFTO1FBQ1g7UUFDQSxJQUFJdEIsTUFBTXFCLFdBQVcsQ0FBQ0csSUFBSSxFQUFFO1lBQzFCSCxZQUFZRyxJQUFJLEdBQUdwQyxRQUFRaUMsV0FBVyxDQUFDRyxJQUFJO1lBQzNDRixTQUFTO1FBQ1g7UUFDQSxJQUFJdEIsTUFBTXFCLFdBQVcsQ0FBQ0ksSUFBSSxFQUFFO1lBQzFCSixZQUFZSSxJQUFJLEdBQUdyQyxRQUFRaUMsV0FBVyxDQUFDSSxJQUFJO1lBQzNDSCxTQUFTO1FBQ1g7UUFDQSxJQUFJdEIsTUFBTXFCLFdBQVcsQ0FBQ25ELElBQUksRUFBRTtZQUMxQm1ELFlBQVluRCxJQUFJLEdBQUdpQixJQUFJSSxZQUFZLENBQUNyQixJQUFJLENBQUNpQixLQUFLQyxRQUFRaUMsV0FBVyxDQUFDbkQsSUFBSTtZQUN0RW9ELFNBQVM7UUFDWDtRQUVBLElBQUlBLFFBQVExQixRQUFReUIsV0FBVyxHQUFHQTtJQUNwQztJQUNBLElBQUlyQixNQUFNdUIsTUFBTSxJQUFJbEMsV0FBV0QsUUFBUW1DLE1BQU0sRUFBRTNCLFFBQVEyQixNQUFNLEdBQUdwQyxJQUFJSSxZQUFZLENBQUNnQyxNQUFNLENBQUNwQyxLQUFLQyxRQUFRbUMsTUFBTSxFQUFFbEMsU0FBU0s7SUFDdEgsSUFBSU4sUUFBUXNDLGdCQUFnQixFQUFFOUIsUUFBUXhCLGVBQWUsR0FBRztJQUN4RCxJQUFJNEIsTUFBTTJCLG1CQUFtQixJQUFJdkMsUUFBUXdDLGdCQUFnQixFQUFFdkIsUUFBUTtRQUNqRVQsUUFBUStCLG1CQUFtQixHQUFHO1lBQzVCLGlDQUFpQztlQUM5QixBQUFDdkMsQ0FBQUEsUUFBUXdDLGdCQUFnQixJQUFJLEVBQUUsQUFBRCxFQUFHM0QsR0FBRyxDQUFDLENBQUM0RCxJQUFNMUMsSUFBSUksWUFBWSxDQUFDQyxTQUFTLENBQUNxQyxFQUFFMUQsRUFBRTtZQUM5RSxzRUFBc0U7ZUFDbkUsQUFBQ2lCLENBQUFBLFFBQVF3QixPQUFPLEVBQUVrQixNQUFNQyxnQ0FBcUIsS0FBSyxFQUFFLEFBQUQsRUFBRzlELEdBQUcsQ0FBQyxDQUFDK0QsT0FDNUQsK0JBQStCO2dCQUMvQjdDLElBQUlJLFlBQVksQ0FBQ0MsU0FBUyxDQUFDd0MsS0FBS0MsU0FBUyxDQUFDLEdBQUdELEtBQUszQixNQUFNLEdBQUc7U0FFOUQ7SUFDSDtJQUNBLElBQUlMLE1BQU1rQyxnQkFBZ0IsSUFBSTlDLFFBQVErQyxhQUFhLEVBQUU5QixRQUNuRFQsUUFBUXNDLGdCQUFnQixHQUFHOUMsUUFBUStDLGFBQWEsQ0FBQ2xFLEdBQUcsQ0FBQyxDQUFDRSxLQUFPZ0IsSUFBSUksWUFBWSxDQUFDQyxTQUFTLENBQUNyQjtJQUMxRixJQUFJNkIsTUFBTWhDLFFBQVEsSUFBSW9CLFFBQVFwQixRQUFRLEVBQUVxQyxRQUFRVCxRQUFRNUIsUUFBUSxHQUFHb0IsUUFBUXBCLFFBQVEsQ0FBQ0MsR0FBRyxDQUFDLENBQUNDLE9BQVNpQixJQUFJSSxZQUFZLENBQUNyQixJQUFJLENBQUNpQixLQUFLakI7SUFDN0gsSUFBSWtCLFFBQVFnRCxpQkFBaUIsRUFBRTtRQUM3QixNQUFNQyxZQUFZLENBQUM7UUFDbkIsSUFBSWYsU0FBUztRQUViLElBQUl0QixNQUFNc0MsZ0JBQWdCLENBQUMvQixTQUFTLElBQUluQixRQUFRZ0QsaUJBQWlCLENBQUM1QixVQUFVLEVBQUU7WUFDNUU2QixVQUFVOUIsU0FBUyxHQUFHcEIsSUFBSUksWUFBWSxDQUFDQyxTQUFTLENBQUNKLFFBQVFnRCxpQkFBaUIsQ0FBQzVCLFVBQVU7WUFDckZjLFNBQVM7UUFDWDtRQUNBLElBQUl0QixNQUFNc0MsZ0JBQWdCLENBQUNqRCxPQUFPLElBQUlELFFBQVFnRCxpQkFBaUIsQ0FBQzlDLFFBQVEsRUFBRTtZQUN4RStDLFVBQVVoRCxPQUFPLEdBQUdGLElBQUlJLFlBQVksQ0FBQ0MsU0FBUyxDQUFDSixRQUFRZ0QsaUJBQWlCLENBQUM5QyxRQUFRO1lBQ2pGZ0MsU0FBUztRQUNYO1FBQ0EsSUFBSXRCLE1BQU1zQyxnQkFBZ0IsQ0FBQ0MsU0FBUyxJQUFJbkQsUUFBUWdELGlCQUFpQixDQUFDSSxVQUFVLEVBQUU7WUFDNUVILFVBQVVFLFNBQVMsR0FBR3BELElBQUlJLFlBQVksQ0FBQ0MsU0FBUyxDQUFDSixRQUFRZ0QsaUJBQWlCLENBQUNJLFVBQVU7WUFDckZsQixTQUFTO1FBQ1g7UUFFQSxJQUFJQSxRQUFRMUIsUUFBUTBDLGdCQUFnQixHQUFHRDtJQUN6QztJQUNBLElBQUlyQyxNQUFNeUMsS0FBSyxJQUFJckQsUUFBUXFELEtBQUssRUFBRTdDLFFBQVE2QyxLQUFLLEdBQUdyRCxRQUFRcUQsS0FBSztJQUMvRCxJQUFJckQsUUFBUWQsTUFBTSxFQUFFc0IsUUFBUXRCLE1BQU0sR0FBRztJQUNyQyxJQUFJMEIsTUFBTTBDLFNBQVMsSUFBSXRELFFBQVFzRCxTQUFTLEVBQUVyQyxRQUFRO1FBQ2hEVCxRQUFROEMsU0FBUyxHQUFHdEQsUUFBUXNELFNBQVMsQ0FBQ3pFLEdBQUcsQ0FBQyxDQUFDMEUsV0FBYyxDQUFBO2dCQUN2REMsSUFBSUQsU0FBU0MsRUFBRTtnQkFDZkMsU0FBU0YsU0FBU0csUUFBUTtnQkFDMUJDLE9BQU9KLFNBQVNJLEtBQUs7Z0JBQ3JCQyxjQUFjO29CQUNaQyxPQUFPTixTQUFTTyxhQUFhLENBQUNELEtBQUs7b0JBQ25DRSxRQUFRUixTQUFTTyxhQUFhLENBQUNDLE1BQU07Z0JBQ3ZDO2dCQUNBQyxPQUFPakUsSUFBSUksWUFBWSxDQUFDNkQsS0FBSyxDQUFDakUsS0FBS3dELFNBQVNTLEtBQUs7Z0JBQ2pEQyxhQUFhVixTQUFTVyxZQUFZO1lBQ3BDLENBQUE7SUFDRjtJQUNBLElBQUl0RCxNQUFNdUQsWUFBWSxJQUFJbkUsUUFBUW9FLGFBQWEsRUFBRW5ELFFBQy9DVCxRQUFRMkQsWUFBWSxHQUFHbkUsUUFBUW9FLGFBQWEsQ0FBQ3ZGLEdBQUcsQ0FBQyxDQUFDd0YsT0FBVSxDQUFBO1lBQzFEdEYsSUFBSWdCLElBQUlJLFlBQVksQ0FBQ0MsU0FBUyxDQUFDaUUsS0FBS3RGLEVBQUU7WUFDdENxRCxNQUFNaUMsS0FBS2pDLElBQUk7WUFDZmtDLFlBQVlELEtBQUtFLFdBQVc7UUFDOUIsQ0FBQTtJQUNGLElBQUl2RSxRQUFRTCxHQUFHLEVBQUVhLFFBQVFiLEdBQUcsR0FBRztJQUMvQixJQUFJaUIsTUFBTTRELE1BQU0sSUFBSXhFLFFBQVF3RSxNQUFNLEVBQUVoRSxRQUFRZ0UsTUFBTSxHQUFHekUsSUFBSUksWUFBWSxDQUFDc0UsT0FBTyxDQUFDMUUsS0FBSztRQUFFMEUsU0FBU3pFLFFBQVF3RSxNQUFNO1FBQUV2RTtJQUFRO0lBQ3RILElBQUlXLE1BQU15QixJQUFJLEVBQUU3QixRQUFRNkIsSUFBSSxHQUFHckMsUUFBUXFDLElBQUk7SUFDM0MsSUFBSXpCLE1BQU04RCxTQUFTLElBQUkxRSxRQUFRMkUsVUFBVSxFQUFFbkUsUUFBUWtFLFNBQVMsR0FBRzNFLElBQUlJLFlBQVksQ0FBQ0MsU0FBUyxDQUFDSixRQUFRMkUsVUFBVTtJQUM1RyxJQUFJL0QsTUFBTWdFLElBQUksSUFBSTVFLFFBQVE0RSxJQUFJLEVBQUVwRSxRQUFRb0UsSUFBSSxHQUFHN0UsSUFBSUksWUFBWSxDQUFDeUUsSUFBSSxDQUFDN0UsS0FBS0MsUUFBUTRFLElBQUk7SUFDdEYsSUFBSWhFLE1BQU1pRSxJQUFJLElBQUk3RSxRQUFRNkUsSUFBSSxFQUFFckUsUUFBUXFFLElBQUksR0FBRzlFLElBQUlJLFlBQVksQ0FBQzJFLFdBQVcsQ0FBQy9FLEtBQUtDLFFBQVE2RSxJQUFJO0lBRTdGLE9BQU85RSxJQUFJSSxZQUFZLENBQUM0RSxXQUFXLENBQUN2RSxPQUFPLENBQUNULEtBQUtDLFNBQVNRO0FBQzVEO0FBRU8sU0FBU2pELG9DQUFvQ3dDLEdBQVEsRUFBRUMsT0FBMEM7SUFDdEcsTUFBTVksUUFBUWIsSUFBSUksWUFBWSxDQUFDVSxpQkFBaUIsQ0FBQ0wsT0FBTyxDQUFDd0IsbUJBQW1CO0lBQzVFLE1BQU1nRCxXQUFXLENBQUM7SUFFbEIsSUFBSXBFLE1BQU03QixFQUFFLEVBQUVpRyxTQUFTakcsRUFBRSxHQUFHZ0IsSUFBSUksWUFBWSxDQUFDQyxTQUFTLENBQUNKLFFBQVFqQixFQUFFO0lBQ2pFLElBQUk2QixNQUFNcUUsNEJBQTRCLEVBQUU7UUFDdENELFNBQVNDLDRCQUE0QixHQUFHLENBQUM7UUFDekMsSUFBSWpGLFFBQVFrRiw4QkFBOEIsQ0FBQyxJQUFJLEVBQzdDRixTQUFTQyw0QkFBNEIsQ0FBQ0Usd0NBQWlDLENBQUNDLFlBQVksQ0FBQyxHQUFHckYsSUFBSUksWUFBWSxDQUFDQyxTQUFTLENBQ2hISixRQUFRa0YsOEJBQThCLENBQUMsSUFBSTtRQUUvQyxJQUFJbEYsUUFBUWtGLDhCQUE4QixDQUFDLElBQUksRUFDN0NGLFNBQVNDLDRCQUE0QixDQUFDRSx3Q0FBaUMsQ0FBQ0UsV0FBVyxDQUFDLEdBQUd0RixJQUFJSSxZQUFZLENBQUNDLFNBQVMsQ0FDL0dKLFFBQVFrRiw4QkFBOEIsQ0FBQyxJQUFJO0lBRWpEO0lBQ0EsSUFBSXRFLE1BQU0wRSxtQkFBbUIsSUFBSXRGLFFBQVF1RixxQkFBcUIsRUFDNURQLFNBQVNNLG1CQUFtQixHQUFHdkYsSUFBSUksWUFBWSxDQUFDQyxTQUFTLENBQUNKLFFBQVF1RixxQkFBcUI7SUFDekYsSUFBSTNFLE1BQU00RSx5QkFBeUIsSUFBSXhGLFFBQVF5Riw0QkFBNEIsRUFDekVULFNBQVNRLHlCQUF5QixHQUFHekYsSUFBSUksWUFBWSxDQUFDQyxTQUFTLENBQUNKLFFBQVF5Riw0QkFBNEI7SUFDdEcsSUFBSTdFLE1BQU04RSw2QkFBNkIsSUFBSTFGLFFBQVEyRiwrQkFBK0IsRUFDaEZYLFNBQVNVLDZCQUE2QixHQUFHbkksb0NBQW9Dd0MsS0FBS0MsUUFBUTJGLCtCQUErQjtJQUMzSCxJQUFJL0UsTUFBTXlCLElBQUksRUFBRTJDLFNBQVMzQyxJQUFJLEdBQUdyQyxRQUFRcUMsSUFBSTtJQUM1QyxJQUFJekIsTUFBTTlCLElBQUksSUFBSWtCLFFBQVFsQixJQUFJLEVBQUVrRyxTQUFTbEcsSUFBSSxHQUFHaUIsSUFBSUksWUFBWSxDQUFDckIsSUFBSSxDQUFDaUIsS0FBS0MsUUFBUWxCLElBQUk7SUFFdkYsT0FBT2lCLElBQUlJLFlBQVksQ0FBQzRFLFdBQVcsQ0FBQ2EsMEJBQTBCLENBQUM3RixLQUFLQyxTQUFTZ0Y7QUFDL0U7QUFFTyxTQUFTMUgscUJBQXFCeUMsR0FBUSxFQUFFQyxPQUEyQjtJQUN4RSxNQUFNNkUsT0FBTyxDQUFDO0lBQ2QsTUFBTWpFLFFBQVFiLElBQUlJLFlBQVksQ0FBQ1UsaUJBQWlCLENBQUNMLE9BQU8sQ0FBQ3FFLElBQUk7SUFFN0QsSUFBSWpFLE1BQU1pRixZQUFZLElBQUk3RixRQUFRNkYsWUFBWSxFQUFFaEIsS0FBS2dCLFlBQVksR0FBRzdGLFFBQVE2RixZQUFZLENBQUNoSCxHQUFHLENBQUMsQ0FBQ2lILElBQU0vRixJQUFJSSxZQUFZLENBQUNDLFNBQVMsQ0FBQzBGO0lBQy9ILElBQUlsRixNQUFNbUYsY0FBYyxJQUFJL0YsUUFBUWdHLGVBQWUsRUFBRW5CLEtBQUtrQixjQUFjLEdBQUdwRSxLQUFLQyxLQUFLLENBQUM1QixRQUFRZ0csZUFBZTtJQUU3RyxPQUFPakcsSUFBSUksWUFBWSxDQUFDNEUsV0FBVyxDQUFDRCxXQUFXLENBQUMvRSxLQUFLQyxTQUFTNkU7QUFDaEUifQ==
|
|
@@ -46,8 +46,13 @@ function transformMemberToDiscordMember(bot, payload) {
|
|
|
46
46
|
communication_disabled_until: payload.communicationDisabledUntil ? new Date(payload.communicationDisabledUntil).toISOString() : undefined,
|
|
47
47
|
deaf: payload.toggles?.deaf,
|
|
48
48
|
mute: payload.toggles?.mute,
|
|
49
|
-
pending: payload.toggles?.pending
|
|
49
|
+
pending: payload.toggles?.pending,
|
|
50
|
+
avatar_decoration_data: {
|
|
51
|
+
asset: (0, _utils.iconBigintToHash)(payload.avatarDecorationData.asset),
|
|
52
|
+
sku_id: bot.transformers.reverse.snowflake(payload.avatarDecorationData.skuId)
|
|
53
|
+
},
|
|
54
|
+
user: payload.user ? bot.transformers.reverse.user(bot, payload.user) : undefined
|
|
50
55
|
};
|
|
51
56
|
}
|
|
52
57
|
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvcmV2ZXJzZS9tZW1iZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBEaXNjb3JkTWVtYmVyLCBEaXNjb3JkVXNlciB9IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHsgaWNvbkJpZ2ludFRvSGFzaCB9IGZyb20gJ0BkaXNjb3JkZW5vL3V0aWxzJ1xuaW1wb3J0IHR5cGUgeyBCb3QgfSBmcm9tICcuLi8uLi9ib3QuanMnXG5pbXBvcnQgdHlwZSB7IE1lbWJlciB9IGZyb20gJy4uL21lbWJlci5qcydcbmltcG9ydCB0eXBlIHsgVXNlciB9IGZyb20gJy4uL3VzZXIuanMnXG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1Vc2VyVG9EaXNjb3JkVXNlcihib3Q6IEJvdCwgcGF5bG9hZDogVXNlcik6IERpc2NvcmRVc2VyIHtcbiAgcmV0dXJuIHtcbiAgICBpZDogcGF5bG9hZC5pZC50b1N0cmluZygpLFxuICAgIHVzZXJuYW1lOiBwYXlsb2FkLnVzZXJuYW1lLFxuICAgIGdsb2JhbF9uYW1lOiBwYXlsb2FkLmdsb2JhbE5hbWUgPz8gbnVsbCxcbiAgICBkaXNjcmltaW5hdG9yOiBwYXlsb2FkLmRpc2NyaW1pbmF0b3IsXG4gICAgYXZhdGFyOiBwYXlsb2FkLmF2YXRhciA/IGljb25CaWdpbnRUb0hhc2gocGF5bG9hZC5hdmF0YXIpIDogbnVsbCxcbiAgICBsb2NhbGU6IHBheWxvYWQubG9jYWxlLFxuICAgIGVtYWlsOiBwYXlsb2FkLmVtYWlsID8/IHVuZGVmaW5lZCxcbiAgICBmbGFnczogcGF5bG9hZC5mbGFncz8udG9KU09OKCksXG4gICAgcHJlbWl1bV90eXBlOiBwYXlsb2FkLnByZW1pdW1UeXBlLFxuICAgIHB1YmxpY19mbGFnczogcGF5bG9hZC5wdWJsaWNGbGFncz8udG9KU09OKCksXG4gICAgYm90OiBwYXlsb2FkLnRvZ2dsZXM/LmJvdCxcbiAgICBzeXN0ZW06IHBheWxvYWQudG9nZ2xlcz8uc3lzdGVtLFxuICAgIG1mYV9lbmFibGVkOiBwYXlsb2FkLnRvZ2dsZXM/Lm1mYUVuYWJsZWQsXG4gICAgdmVyaWZpZWQ6IHBheWxvYWQudG9nZ2xlcz8udmVyaWZpZWQsXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybU1lbWJlclRvRGlzY29yZE1lbWJlcihib3Q6IEJvdCwgcGF5bG9hZDogTWVtYmVyKTogRGlzY29yZE1lbWJlciB7XG4gIHJldHVybiB7XG4gICAgbmljazogcGF5bG9hZC5uaWNrID8/IHVuZGVmaW5lZCxcbiAgICByb2xlczogcGF5bG9hZC5yb2xlcy5tYXAoKGlkKSA9PiBpZC50b1N0cmluZygpKSxcbiAgICBqb2luZWRfYXQ6IG5ldyBEYXRlKHBheWxvYWQuam9pbmVkQXQpLnRvSVNPU3RyaW5nKCksXG4gICAgcHJlbWl1bV9zaW5jZTogcGF5bG9hZC5wcmVtaXVtU2luY2UgPyBuZXcgRGF0ZShwYXlsb2FkLnByZW1pdW1TaW5jZSkudG9JU09TdHJpbmcoKSA6IHVuZGVmaW5lZCxcbiAgICBhdmF0YXI6IHBheWxvYWQuYXZhdGFyID8gaWNvbkJpZ2ludFRvSGFzaChwYXlsb2FkLmF2YXRhcikgOiB1bmRlZmluZWQsXG4gICAgcGVybWlzc2lvbnM6IHBheWxvYWQucGVybWlzc2lvbnM/LnRvU3RyaW5nKCksXG4gICAgY29tbXVuaWNhdGlvbl9kaXNhYmxlZF91bnRpbDogcGF5bG9hZC5jb21tdW5pY2F0aW9uRGlzYWJsZWRVbnRpbCA/IG5ldyBEYXRlKHBheWxvYWQuY29tbXVuaWNhdGlvbkRpc2FibGVkVW50aWwpLnRvSVNPU3RyaW5nKCkgOiB1bmRlZmluZWQsXG4gICAgZGVhZjogcGF5bG9hZC50b2dnbGVzPy5kZWFmLFxuICAgIG11dGU6IHBheWxvYWQudG9nZ2xlcz8ubXV0ZSxcbiAgICBwZW5kaW5nOiBwYXlsb2FkLnRvZ2dsZXM/
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvcmV2ZXJzZS9tZW1iZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBEaXNjb3JkTWVtYmVyLCBEaXNjb3JkVXNlciB9IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHsgaWNvbkJpZ2ludFRvSGFzaCB9IGZyb20gJ0BkaXNjb3JkZW5vL3V0aWxzJ1xuaW1wb3J0IHR5cGUgeyBCb3QgfSBmcm9tICcuLi8uLi9ib3QuanMnXG5pbXBvcnQgdHlwZSB7IE1lbWJlciB9IGZyb20gJy4uL21lbWJlci5qcydcbmltcG9ydCB0eXBlIHsgVXNlciB9IGZyb20gJy4uL3VzZXIuanMnXG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1Vc2VyVG9EaXNjb3JkVXNlcihib3Q6IEJvdCwgcGF5bG9hZDogVXNlcik6IERpc2NvcmRVc2VyIHtcbiAgcmV0dXJuIHtcbiAgICBpZDogcGF5bG9hZC5pZC50b1N0cmluZygpLFxuICAgIHVzZXJuYW1lOiBwYXlsb2FkLnVzZXJuYW1lLFxuICAgIGdsb2JhbF9uYW1lOiBwYXlsb2FkLmdsb2JhbE5hbWUgPz8gbnVsbCxcbiAgICBkaXNjcmltaW5hdG9yOiBwYXlsb2FkLmRpc2NyaW1pbmF0b3IsXG4gICAgYXZhdGFyOiBwYXlsb2FkLmF2YXRhciA/IGljb25CaWdpbnRUb0hhc2gocGF5bG9hZC5hdmF0YXIpIDogbnVsbCxcbiAgICBsb2NhbGU6IHBheWxvYWQubG9jYWxlLFxuICAgIGVtYWlsOiBwYXlsb2FkLmVtYWlsID8/IHVuZGVmaW5lZCxcbiAgICBmbGFnczogcGF5bG9hZC5mbGFncz8udG9KU09OKCksXG4gICAgcHJlbWl1bV90eXBlOiBwYXlsb2FkLnByZW1pdW1UeXBlLFxuICAgIHB1YmxpY19mbGFnczogcGF5bG9hZC5wdWJsaWNGbGFncz8udG9KU09OKCksXG4gICAgYm90OiBwYXlsb2FkLnRvZ2dsZXM/LmJvdCxcbiAgICBzeXN0ZW06IHBheWxvYWQudG9nZ2xlcz8uc3lzdGVtLFxuICAgIG1mYV9lbmFibGVkOiBwYXlsb2FkLnRvZ2dsZXM/Lm1mYUVuYWJsZWQsXG4gICAgdmVyaWZpZWQ6IHBheWxvYWQudG9nZ2xlcz8udmVyaWZpZWQsXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybU1lbWJlclRvRGlzY29yZE1lbWJlcihib3Q6IEJvdCwgcGF5bG9hZDogTWVtYmVyKTogRGlzY29yZE1lbWJlciB7XG4gIHJldHVybiB7XG4gICAgbmljazogcGF5bG9hZC5uaWNrID8/IHVuZGVmaW5lZCxcbiAgICByb2xlczogcGF5bG9hZC5yb2xlcy5tYXAoKGlkKSA9PiBpZC50b1N0cmluZygpKSxcbiAgICBqb2luZWRfYXQ6IG5ldyBEYXRlKHBheWxvYWQuam9pbmVkQXQpLnRvSVNPU3RyaW5nKCksXG4gICAgcHJlbWl1bV9zaW5jZTogcGF5bG9hZC5wcmVtaXVtU2luY2UgPyBuZXcgRGF0ZShwYXlsb2FkLnByZW1pdW1TaW5jZSkudG9JU09TdHJpbmcoKSA6IHVuZGVmaW5lZCxcbiAgICBhdmF0YXI6IHBheWxvYWQuYXZhdGFyID8gaWNvbkJpZ2ludFRvSGFzaChwYXlsb2FkLmF2YXRhcikgOiB1bmRlZmluZWQsXG4gICAgcGVybWlzc2lvbnM6IHBheWxvYWQucGVybWlzc2lvbnM/LnRvU3RyaW5nKCksXG4gICAgY29tbXVuaWNhdGlvbl9kaXNhYmxlZF91bnRpbDogcGF5bG9hZC5jb21tdW5pY2F0aW9uRGlzYWJsZWRVbnRpbCA/IG5ldyBEYXRlKHBheWxvYWQuY29tbXVuaWNhdGlvbkRpc2FibGVkVW50aWwpLnRvSVNPU3RyaW5nKCkgOiB1bmRlZmluZWQsXG4gICAgZGVhZjogcGF5bG9hZC50b2dnbGVzPy5kZWFmLFxuICAgIG11dGU6IHBheWxvYWQudG9nZ2xlcz8ubXV0ZSxcbiAgICBwZW5kaW5nOiBwYXlsb2FkLnRvZ2dsZXM/LnBlbmRpbmcsXG4gICAgYXZhdGFyX2RlY29yYXRpb25fZGF0YToge1xuICAgICAgYXNzZXQ6IGljb25CaWdpbnRUb0hhc2gocGF5bG9hZC5hdmF0YXJEZWNvcmF0aW9uRGF0YS5hc3NldCksXG4gICAgICBza3VfaWQ6IGJvdC50cmFuc2Zvcm1lcnMucmV2ZXJzZS5zbm93Zmxha2UocGF5bG9hZC5hdmF0YXJEZWNvcmF0aW9uRGF0YS5za3VJZCksXG4gICAgfSxcbiAgICB1c2VyOiBwYXlsb2FkLnVzZXIgPyBib3QudHJhbnNmb3JtZXJzLnJldmVyc2UudXNlcihib3QsIHBheWxvYWQudXNlcikgOiB1bmRlZmluZWQsXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJ0cmFuc2Zvcm1NZW1iZXJUb0Rpc2NvcmRNZW1iZXIiLCJ0cmFuc2Zvcm1Vc2VyVG9EaXNjb3JkVXNlciIsImJvdCIsInBheWxvYWQiLCJpZCIsInRvU3RyaW5nIiwidXNlcm5hbWUiLCJnbG9iYWxfbmFtZSIsImdsb2JhbE5hbWUiLCJkaXNjcmltaW5hdG9yIiwiYXZhdGFyIiwiaWNvbkJpZ2ludFRvSGFzaCIsImxvY2FsZSIsImVtYWlsIiwidW5kZWZpbmVkIiwiZmxhZ3MiLCJ0b0pTT04iLCJwcmVtaXVtX3R5cGUiLCJwcmVtaXVtVHlwZSIsInB1YmxpY19mbGFncyIsInB1YmxpY0ZsYWdzIiwidG9nZ2xlcyIsInN5c3RlbSIsIm1mYV9lbmFibGVkIiwibWZhRW5hYmxlZCIsInZlcmlmaWVkIiwibmljayIsInJvbGVzIiwibWFwIiwiam9pbmVkX2F0IiwiRGF0ZSIsImpvaW5lZEF0IiwidG9JU09TdHJpbmciLCJwcmVtaXVtX3NpbmNlIiwicHJlbWl1bVNpbmNlIiwicGVybWlzc2lvbnMiLCJjb21tdW5pY2F0aW9uX2Rpc2FibGVkX3VudGlsIiwiY29tbXVuaWNhdGlvbkRpc2FibGVkVW50aWwiLCJkZWFmIiwibXV0ZSIsInBlbmRpbmciLCJhdmF0YXJfZGVjb3JhdGlvbl9kYXRhIiwiYXNzZXQiLCJhdmF0YXJEZWNvcmF0aW9uRGF0YSIsInNrdV9pZCIsInRyYW5zZm9ybWVycyIsInJldmVyc2UiLCJzbm93Zmxha2UiLCJza3VJZCIsInVzZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBeUJnQkEsOEJBQThCO2VBQTlCQTs7SUFuQkFDLDBCQUEwQjtlQUExQkE7Ozt1QkFMaUI7QUFLMUIsU0FBU0EsMkJBQTJCQyxHQUFRLEVBQUVDLE9BQWE7SUFDaEUsT0FBTztRQUNMQyxJQUFJRCxRQUFRQyxFQUFFLENBQUNDLFFBQVE7UUFDdkJDLFVBQVVILFFBQVFHLFFBQVE7UUFDMUJDLGFBQWFKLFFBQVFLLFVBQVUsSUFBSTtRQUNuQ0MsZUFBZU4sUUFBUU0sYUFBYTtRQUNwQ0MsUUFBUVAsUUFBUU8sTUFBTSxHQUFHQyxJQUFBQSx1QkFBZ0IsRUFBQ1IsUUFBUU8sTUFBTSxJQUFJO1FBQzVERSxRQUFRVCxRQUFRUyxNQUFNO1FBQ3RCQyxPQUFPVixRQUFRVSxLQUFLLElBQUlDO1FBQ3hCQyxPQUFPWixRQUFRWSxLQUFLLEVBQUVDO1FBQ3RCQyxjQUFjZCxRQUFRZSxXQUFXO1FBQ2pDQyxjQUFjaEIsUUFBUWlCLFdBQVcsRUFBRUo7UUFDbkNkLEtBQUtDLFFBQVFrQixPQUFPLEVBQUVuQjtRQUN0Qm9CLFFBQVFuQixRQUFRa0IsT0FBTyxFQUFFQztRQUN6QkMsYUFBYXBCLFFBQVFrQixPQUFPLEVBQUVHO1FBQzlCQyxVQUFVdEIsUUFBUWtCLE9BQU8sRUFBRUk7SUFDN0I7QUFDRjtBQUVPLFNBQVN6QiwrQkFBK0JFLEdBQVEsRUFBRUMsT0FBZTtJQUN0RSxPQUFPO1FBQ0x1QixNQUFNdkIsUUFBUXVCLElBQUksSUFBSVo7UUFDdEJhLE9BQU94QixRQUFRd0IsS0FBSyxDQUFDQyxHQUFHLENBQUMsQ0FBQ3hCLEtBQU9BLEdBQUdDLFFBQVE7UUFDNUN3QixXQUFXLElBQUlDLEtBQUszQixRQUFRNEIsUUFBUSxFQUFFQyxXQUFXO1FBQ2pEQyxlQUFlOUIsUUFBUStCLFlBQVksR0FBRyxJQUFJSixLQUFLM0IsUUFBUStCLFlBQVksRUFBRUYsV0FBVyxLQUFLbEI7UUFDckZKLFFBQVFQLFFBQVFPLE1BQU0sR0FBR0MsSUFBQUEsdUJBQWdCLEVBQUNSLFFBQVFPLE1BQU0sSUFBSUk7UUFDNURxQixhQUFhaEMsUUFBUWdDLFdBQVcsRUFBRTlCO1FBQ2xDK0IsOEJBQThCakMsUUFBUWtDLDBCQUEwQixHQUFHLElBQUlQLEtBQUszQixRQUFRa0MsMEJBQTBCLEVBQUVMLFdBQVcsS0FBS2xCO1FBQ2hJd0IsTUFBTW5DLFFBQVFrQixPQUFPLEVBQUVpQjtRQUN2QkMsTUFBTXBDLFFBQVFrQixPQUFPLEVBQUVrQjtRQUN2QkMsU0FBU3JDLFFBQVFrQixPQUFPLEVBQUVtQjtRQUMxQkMsd0JBQXdCO1lBQ3RCQyxPQUFPL0IsSUFBQUEsdUJBQWdCLEVBQUNSLFFBQVF3QyxvQkFBb0IsQ0FBQ0QsS0FBSztZQUMxREUsUUFBUTFDLElBQUkyQyxZQUFZLENBQUNDLE9BQU8sQ0FBQ0MsU0FBUyxDQUFDNUMsUUFBUXdDLG9CQUFvQixDQUFDSyxLQUFLO1FBQy9FO1FBQ0FDLE1BQU05QyxRQUFROEMsSUFBSSxHQUFHL0MsSUFBSTJDLFlBQVksQ0FBQ0MsT0FBTyxDQUFDRyxJQUFJLENBQUMvQyxLQUFLQyxRQUFROEMsSUFBSSxJQUFJbkM7SUFDMUU7QUFDRiJ9
|
|
@@ -20,4 +20,4 @@ function transformSku(bot, payload) {
|
|
|
20
20
|
return bot.transformers.customizers.sku(bot, payload, sku);
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvc2t1LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzY29yZFNrdSwgRGlzY29yZFNrdVR5cGUsIFNrdUZsYWdzIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEJvdCB9IGZyb20gJy4uL2luZGV4LmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtU2t1KGJvdDogQm90LCBwYXlsb2FkOiBEaXNjb3JkU2t1KTogU2t1IHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLnNrdVxuICBjb25zdCBza3UgPSB7fSBhcyBTa3VcblxuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgc2t1LmlkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5pZClcbiAgaWYgKHByb3BzLnR5cGUgJiYgcGF5bG9hZC50eXBlKSBza3UudHlwZSA9IHBheWxvYWQudHlwZVxuICBpZiAocHJvcHMuYXBwbGljYXRpb25JZCAmJiBwYXlsb2FkLmFwcGxpY2F0aW9uX2lkKSBza3UuYXBwbGljYXRpb25JZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuYXBwbGljYXRpb25faWQpXG4gIGlmIChwcm9wcy5uYW1lICYmIHBheWxvYWQubmFtZSkgc2t1Lm5hbWUgPSBwYXlsb2FkLm5hbWVcbiAgaWYgKHByb3BzLnNsdWcgJiYgcGF5bG9hZC5zbHVnKSBza3Uuc2x1ZyA9IHBheWxvYWQuc2x1Z1xuICBpZiAocHJvcHMuZmxhZ3MgJiYgcGF5bG9hZC5mbGFncykgc2t1LmZsYWdzID0gcGF5bG9hZC5mbGFnc1xuXG4gIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmN1c3RvbWl6ZXJzLnNrdShib3QsIHBheWxvYWQsIHNrdSlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTa3Uge1xuICAvKiogSUQgb2YgU0tVICovXG4gIGlkOiBiaWdpbnRcbiAgLyoqIFR5cGUgb2YgU0tVICovXG4gIHR5cGU6IERpc2NvcmRTa3VUeXBlXG4gIC8qKiBJRCBvZiB0aGUgcGFyZW50IGFwcGxpY2F0aW9uICovXG4gIGFwcGxpY2F0aW9uSWQ6IGJpZ2ludFxuICAvKiogQ3VzdG9tZXItZmFjaW5nIG5hbWUgb2YgeW91ciBwcmVtaXVtIG9mZmVyaW5nICovXG4gIG5hbWU6IHN0cmluZ1xuICAvKiogU3lzdGVtLWdlbmVyYXRlZCBVUkwgc2x1ZyBiYXNlZCBvbiB0aGUgU0tVJ3MgbmFtZSAqL1xuICBzbHVnOiBzdHJpbmdcbiAgLyoqIFNLVSBmbGFncyBjb21iaW5lZCBhcyBhIGJpdGZpZWxkICovXG4gIGZsYWdzOiBTa3VGbGFnc1xufVxuIl0sIm5hbWVzIjpbInRyYW5zZm9ybVNrdSIsImJvdCIsInBheWxvYWQiLCJwcm9wcyIsInRyYW5zZm9ybWVycyIsImRlc2lyZWRQcm9wZXJ0aWVzIiwic2t1IiwiaWQiLCJzbm93Zmxha2UiLCJ0eXBlIiwiYXBwbGljYXRpb25JZCIsImFwcGxpY2F0aW9uX2lkIiwibmFtZSIsInNsdWciLCJmbGFncyIsImN1c3RvbWl6ZXJzIl0sIm1hcHBpbmdzIjoiOzs7OytCQUdnQkE7OztlQUFBQTs7O0FBQVQsU0FBU0EsYUFBYUMsR0FBUSxFQUFFQyxPQUFtQjtJQUN4RCxNQUFNQyxRQUFRRixJQUFJRyxZQUFZLENBQUNDLGlCQUFpQixDQUFDQyxHQUFHO0lBQ3BELE1BQU1BLE1BQU0sQ0FBQztJQUViLElBQUlILE1BQU1JLEVBQUUsSUFBSUwsUUFBUUssRUFBRSxFQUFFRCxJQUFJQyxFQUFFLEdBQUdOLElBQUlHLFlBQVksQ0FBQ0ksU0FBUyxDQUFDTixRQUFRSyxFQUFFO0lBQzFFLElBQUlKLE1BQU1NLElBQUksSUFBSVAsUUFBUU8sSUFBSSxFQUFFSCxJQUFJRyxJQUFJLEdBQUdQLFFBQVFPLElBQUk7SUFDdkQsSUFBSU4sTUFBTU8sYUFBYSxJQUFJUixRQUFRUyxjQUFjLEVBQUVMLElBQUlJLGFBQWEsR0FBR1QsSUFBSUcsWUFBWSxDQUFDSSxTQUFTLENBQUNOLFFBQVFTLGNBQWM7SUFDeEgsSUFBSVIsTUFBTVMsSUFBSSxJQUFJVixRQUFRVSxJQUFJLEVBQUVOLElBQUlNLElBQUksR0FBR1YsUUFBUVUsSUFBSTtJQUN2RCxJQUFJVCxNQUFNVSxJQUFJLElBQUlYLFFBQVFXLElBQUksRUFBRVAsSUFBSU8sSUFBSSxHQUFHWCxRQUFRVyxJQUFJO0lBQ3ZELElBQUlWLE1BQU1XLEtBQUssSUFBSVosUUFBUVksS0FBSyxFQUFFUixJQUFJUSxLQUFLLEdBQUdaLFFBQVFZLEtBQUs7SUFFM0QsT0FBT2IsSUFBSUcsWUFBWSxDQUFDVyxXQUFXLENBQUNULEdBQUcsQ0FBQ0wsS0FBS0MsU0FBU0k7QUFDeEQifQ==
|
|
@@ -15,7 +15,7 @@ let Permissions = class Permissions extends _ToggleBitfield.ToggleBitfieldBigint
|
|
|
15
15
|
super(BigInt(bits));
|
|
16
16
|
}
|
|
17
17
|
has(permission) {
|
|
18
|
-
return this.contains(
|
|
18
|
+
return this.contains(_types.BitwisePermissionFlags[permission]);
|
|
19
19
|
}
|
|
20
20
|
hasAll(permissions) {
|
|
21
21
|
return permissions.every((key)=>this.has(key));
|
|
@@ -25,4 +25,4 @@ let Permissions = class Permissions extends _ToggleBitfield.ToggleBitfieldBigint
|
|
|
25
25
|
}
|
|
26
26
|
};
|
|
27
27
|
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvdG9nZ2xlcy9QZXJtaXNzaW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIFBlcm1pc3Npb25TdHJpbmdzLCBCaXR3aXNlUGVybWlzc2lvbkZsYWdzIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgeyBUb2dnbGVCaXRmaWVsZEJpZ2ludCB9IGZyb20gJy4vVG9nZ2xlQml0ZmllbGQuanMnXG5cbmV4cG9ydCBjbGFzcyBQZXJtaXNzaW9ucyBleHRlbmRzIFRvZ2dsZUJpdGZpZWxkQmlnaW50IHtcbiAgY29uc3RydWN0b3IoYml0czogc3RyaW5nIHwgYmlnaW50KSB7XG4gICAgc3VwZXIoQmlnSW50KGJpdHMpKVxuICB9XG5cbiAgaGFzKHBlcm1pc3Npb246IFBlcm1pc3Npb25TdHJpbmdzKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29udGFpbnMoQml0d2lzZVBlcm1pc3Npb25GbGFnc1twZXJtaXNzaW9uXSlcbiAgfVxuXG4gIGhhc0FsbChwZXJtaXNzaW9uczogUGVybWlzc2lvblN0cmluZ3NbXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBwZXJtaXNzaW9ucy5ldmVyeSgoa2V5KSA9PiB0aGlzLmhhcyhrZXkpKVxuICB9XG5cbiAgbWlzc2luZyhwZXJtaXNzaW9uczogUGVybWlzc2lvblN0cmluZ3NbXSk6IFBlcm1pc3Npb25TdHJpbmdzW10ge1xuICAgIHJldHVybiBwZXJtaXNzaW9ucy5maWx0ZXIoKGtleSkgPT4gIXRoaXMuaGFzKGtleSkpXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJQZXJtaXNzaW9ucyIsIlRvZ2dsZUJpdGZpZWxkQmlnaW50IiwiY29uc3RydWN0b3IiLCJiaXRzIiwiQmlnSW50IiwiaGFzIiwicGVybWlzc2lvbiIsImNvbnRhaW5zIiwiQml0d2lzZVBlcm1pc3Npb25GbGFncyIsImhhc0FsbCIsInBlcm1pc3Npb25zIiwiZXZlcnkiLCJrZXkiLCJtaXNzaW5nIiwiZmlsdGVyIl0sIm1hcHBpbmdzIjoiOzs7OytCQUdhQTs7O2VBQUFBOzs7dUJBSGtEO2dDQUMxQjtBQUU5QixJQUFBLEFBQU1BLGNBQU4sTUFBTUEsb0JBQW9CQyxvQ0FBb0I7SUFDbkRDLFlBQVlDLElBQXFCLENBQUU7UUFDakMsS0FBSyxDQUFDQyxPQUFPRDtJQUNmO0lBRUFFLElBQUlDLFVBQTZCLEVBQVc7UUFDMUMsT0FBTyxJQUFJLENBQUNDLFFBQVEsQ0FBQ0MsNkJBQXNCLENBQUNGLFdBQVc7SUFDekQ7SUFFQUcsT0FBT0MsV0FBZ0MsRUFBVztRQUNoRCxPQUFPQSxZQUFZQyxLQUFLLENBQUMsQ0FBQ0MsTUFBUSxJQUFJLENBQUNQLEdBQUcsQ0FBQ087SUFDN0M7SUFFQUMsUUFBUUgsV0FBZ0MsRUFBdUI7UUFDN0QsT0FBT0EsWUFBWUksTUFBTSxDQUFDLENBQUNGLE1BQVEsQ0FBQyxJQUFJLENBQUNQLEdBQUcsQ0FBQ087SUFDL0M7QUFDRiJ9
|
|
@@ -22,7 +22,8 @@ const ChannelToggle = {
|
|
|
22
22
|
/** When a thread is locked, only users with `MANAGE_THREADS` can unarchive it */ locked: 1 << 1,
|
|
23
23
|
/** whether non-moderators can add other non-moderators to a thread; only available on private threads */ invitable: 1 << 2,
|
|
24
24
|
/** Whether the thread is archived */ archived: 1 << 3,
|
|
25
|
-
/** When a thread is created this will be true on that channel payload for the thread. */ newlyCreated: 1 << 4
|
|
25
|
+
/** When a thread is created this will be true on that channel payload for the thread. */ newlyCreated: 1 << 4,
|
|
26
|
+
/** for group DM channels: whether the channel is managed by an application via the `gdm.join` OAuth2 scope */ managed: 1 << 5
|
|
26
27
|
};
|
|
27
28
|
let ChannelToggles = class ChannelToggles extends _ToggleBitfield.ToggleBitfield {
|
|
28
29
|
constructor(channelOrBitfield){
|
|
@@ -35,6 +36,7 @@ let ChannelToggles = class ChannelToggles extends _ToggleBitfield.ToggleBitfield
|
|
|
35
36
|
if (channel.thread_metadata?.invitable) this.add(ChannelToggle.invitable);
|
|
36
37
|
if (channel.thread_metadata?.archived) this.add(ChannelToggle.archived);
|
|
37
38
|
if (channel.newly_created) this.add(ChannelToggle.newlyCreated);
|
|
39
|
+
if (channel.managed) this.add(ChannelToggle.managed);
|
|
38
40
|
}
|
|
39
41
|
}
|
|
40
42
|
/** Whether or not this channel is an nsfw channel. */ get nsfw() {
|
|
@@ -52,6 +54,9 @@ let ChannelToggles = class ChannelToggles extends _ToggleBitfield.ToggleBitfield
|
|
|
52
54
|
/** Whether or not this thread channel is newly created. */ get newlyCreated() {
|
|
53
55
|
return this.has('newlyCreated');
|
|
54
56
|
}
|
|
57
|
+
get managed() {
|
|
58
|
+
return this.has('managed');
|
|
59
|
+
}
|
|
55
60
|
/** Checks whether or not the permissions exist in this */ has(permissions) {
|
|
56
61
|
if (!Array.isArray(permissions)) return super.contains(ChannelToggle[permissions]);
|
|
57
62
|
return super.contains(permissions.reduce((a, b)=>a |= ChannelToggle[b], 0));
|
|
@@ -65,4 +70,4 @@ let ChannelToggles = class ChannelToggles extends _ToggleBitfield.ToggleBitfield
|
|
|
65
70
|
}
|
|
66
71
|
};
|
|
67
72
|
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvdG9nZ2xlcy9jaGFubmVsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzY29yZENoYW5uZWwgfSBmcm9tICdAZGlzY29yZGVuby90eXBlcydcbmltcG9ydCB7IFRvZ2dsZUJpdGZpZWxkIH0gZnJvbSAnLi9Ub2dnbGVCaXRmaWVsZC5qcydcblxuZXhwb3J0IGNvbnN0IENoYW5uZWxUb2dnbGUgPSB7XG4gIC8qKiBXaGV0aGVyIHRoZSBjaGFubmVsIGlzIG5zZncgKi9cbiAgbnNmdzogMSA8PCAwLFxuICAvKiogV2hlbiBhIHRocmVhZCBpcyBsb2NrZWQsIG9ubHkgdXNlcnMgd2l0aCBgTUFOQUdFX1RIUkVBRFNgIGNhbiB1bmFyY2hpdmUgaXQgKi9cbiAgbG9ja2VkOiAxIDw8IDEsXG4gIC8qKiB3aGV0aGVyIG5vbi1tb2RlcmF0b3JzIGNhbiBhZGQgb3RoZXIgbm9uLW1vZGVyYXRvcnMgdG8gYSB0aHJlYWQ7IG9ubHkgYXZhaWxhYmxlIG9uIHByaXZhdGUgdGhyZWFkcyAqL1xuICBpbnZpdGFibGU6IDEgPDwgMixcbiAgLyoqIFdoZXRoZXIgdGhlIHRocmVhZCBpcyBhcmNoaXZlZCAqL1xuICBhcmNoaXZlZDogMSA8PCAzLFxuICAvKiogV2hlbiBhIHRocmVhZCBpcyBjcmVhdGVkIHRoaXMgd2lsbCBiZSB0cnVlIG9uIHRoYXQgY2hhbm5lbCBwYXlsb2FkIGZvciB0aGUgdGhyZWFkLiAqL1xuICBuZXdseUNyZWF0ZWQ6IDEgPDwgNCxcbiAgLyoqIGZvciBncm91cCBETSBjaGFubmVsczogd2hldGhlciB0aGUgY2hhbm5lbCBpcyBtYW5hZ2VkIGJ5IGFuIGFwcGxpY2F0aW9uIHZpYSB0aGUgYGdkbS5qb2luYCBPQXV0aDIgc2NvcGUgKi9cbiAgbWFuYWdlZDogMSA8PCA1LFxufVxuXG5leHBvcnQgY2xhc3MgQ2hhbm5lbFRvZ2dsZXMgZXh0ZW5kcyBUb2dnbGVCaXRmaWVsZCB7XG4gIGNvbnN0cnVjdG9yKGNoYW5uZWxPckJpdGZpZWxkOiBEaXNjb3JkQ2hhbm5lbCB8IG51bWJlcikge1xuICAgIHN1cGVyKClcblxuICAgIGlmICh0eXBlb2YgY2hhbm5lbE9yQml0ZmllbGQgPT09ICdudW1iZXInKSB0aGlzLmJpdGZpZWxkID0gY2hhbm5lbE9yQml0ZmllbGRcbiAgICBlbHNlIHtcbiAgICAgIGNvbnN0IGNoYW5uZWwgPSBjaGFubmVsT3JCaXRmaWVsZFxuICAgICAgaWYgKGNoYW5uZWwubnNmdykgdGhpcy5hZGQoQ2hhbm5lbFRvZ2dsZS5uc2Z3KVxuICAgICAgaWYgKGNoYW5uZWwudGhyZWFkX21ldGFkYXRhPy5sb2NrZWQpIHRoaXMuYWRkKENoYW5uZWxUb2dnbGUubG9ja2VkKVxuICAgICAgaWYgKGNoYW5uZWwudGhyZWFkX21ldGFkYXRhPy5pbnZpdGFibGUpIHRoaXMuYWRkKENoYW5uZWxUb2dnbGUuaW52aXRhYmxlKVxuICAgICAgaWYgKGNoYW5uZWwudGhyZWFkX21ldGFkYXRhPy5hcmNoaXZlZCkgdGhpcy5hZGQoQ2hhbm5lbFRvZ2dsZS5hcmNoaXZlZClcbiAgICAgIGlmIChjaGFubmVsLm5ld2x5X2NyZWF0ZWQpIHRoaXMuYWRkKENoYW5uZWxUb2dnbGUubmV3bHlDcmVhdGVkKVxuICAgICAgaWYgKGNoYW5uZWwubWFuYWdlZCkgdGhpcy5hZGQoQ2hhbm5lbFRvZ2dsZS5tYW5hZ2VkKVxuICAgIH1cbiAgfVxuXG4gIC8qKiBXaGV0aGVyIG9yIG5vdCB0aGlzIGNoYW5uZWwgaXMgYW4gbnNmdyBjaGFubmVsLiAqL1xuICBnZXQgbnNmdygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ25zZncnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgb3Igbm90IHRoaXMgdGhyZWFkIGNoYW5uZWwgaXMgbG9ja2VkLiAqL1xuICBnZXQgbG9ja2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnbG9ja2VkJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIG9yIG5vdCB0aGlzIHRocmVhZCBjaGFubmVsIGlzIGludml0YWJsZS4gKi9cbiAgZ2V0IGludml0YWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ2ludml0YWJsZScpXG4gIH1cblxuICAvKiogV2hldGhlciBvciBub3QgdGhpcyB0aHJlYWQgY2hhbm5lbCBpcyBhcmNoaXZlZC4gKi9cbiAgZ2V0IGFyY2hpdmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnYXJjaGl2ZWQnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgb3Igbm90IHRoaXMgdGhyZWFkIGNoYW5uZWwgaXMgbmV3bHkgY3JlYXRlZC4gKi9cbiAgZ2V0IG5ld2x5Q3JlYXRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ25ld2x5Q3JlYXRlZCcpXG4gIH1cblxuICBnZXQgbWFuYWdlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ21hbmFnZWQnKVxuICB9XG5cbiAgLyoqIENoZWNrcyB3aGV0aGVyIG9yIG5vdCB0aGUgcGVybWlzc2lvbnMgZXhpc3QgaW4gdGhpcyAqL1xuICBoYXMocGVybWlzc2lvbnM6IENoYW5uZWxUb2dnbGVLZXlzIHwgQ2hhbm5lbFRvZ2dsZUtleXNbXSk6IGJvb2xlYW4ge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShwZXJtaXNzaW9ucykpIHJldHVybiBzdXBlci5jb250YWlucyhDaGFubmVsVG9nZ2xlW3Blcm1pc3Npb25zXSlcblxuICAgIHJldHVybiBzdXBlci5jb250YWlucyhwZXJtaXNzaW9ucy5yZWR1Y2UoKGEsIGIpID0+IChhIHw9IENoYW5uZWxUb2dnbGVbYl0pLCAwKSlcbiAgfVxuXG4gIC8qKiBMaXN0cyBhbGwgdGhlIHRvZ2dsZXMgZm9yIHRoZSByb2xlIGFuZCB3aGV0aGVyIG9yIG5vdCBlYWNoIGlzIHRydWUgb3IgZmFsc2UuICovXG4gIGxpc3QoKTogUmVjb3JkPENoYW5uZWxUb2dnbGVLZXlzLCBib29sZWFuPiB7XG4gICAgY29uc3QganNvbjogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fVxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKENoYW5uZWxUb2dnbGUpKSB7XG4gICAgICBqc29uW2tleV0gPSBzdXBlci5jb250YWlucyh2YWx1ZSlcbiAgICB9XG5cbiAgICByZXR1cm4ganNvbiBhcyBSZWNvcmQ8Q2hhbm5lbFRvZ2dsZUtleXMsIGJvb2xlYW4+XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgQ2hhbm5lbFRvZ2dsZUtleXMgPSBrZXlvZiB0eXBlb2YgQ2hhbm5lbFRvZ2dsZVxuIl0sIm5hbWVzIjpbIkNoYW5uZWxUb2dnbGUiLCJDaGFubmVsVG9nZ2xlcyIsIm5zZnciLCJsb2NrZWQiLCJpbnZpdGFibGUiLCJhcmNoaXZlZCIsIm5ld2x5Q3JlYXRlZCIsIm1hbmFnZWQiLCJUb2dnbGVCaXRmaWVsZCIsImNvbnN0cnVjdG9yIiwiY2hhbm5lbE9yQml0ZmllbGQiLCJiaXRmaWVsZCIsImNoYW5uZWwiLCJhZGQiLCJ0aHJlYWRfbWV0YWRhdGEiLCJuZXdseV9jcmVhdGVkIiwiaGFzIiwicGVybWlzc2lvbnMiLCJBcnJheSIsImlzQXJyYXkiLCJjb250YWlucyIsInJlZHVjZSIsImEiLCJiIiwibGlzdCIsImpzb24iLCJrZXkiLCJ2YWx1ZSIsIk9iamVjdCIsImVudHJpZXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBR2FBLGFBQWE7ZUFBYkE7O0lBZUFDLGNBQWM7ZUFBZEE7OztnQ0FqQmtCO0FBRXhCLE1BQU1ELGdCQUFnQjtJQUMzQixnQ0FBZ0MsR0FDaENFLE1BQU0sS0FBSztJQUNYLCtFQUErRSxHQUMvRUMsUUFBUSxLQUFLO0lBQ2IsdUdBQXVHLEdBQ3ZHQyxXQUFXLEtBQUs7SUFDaEIsbUNBQW1DLEdBQ25DQyxVQUFVLEtBQUs7SUFDZix1RkFBdUYsR0FDdkZDLGNBQWMsS0FBSztJQUNuQiw0R0FBNEcsR0FDNUdDLFNBQVMsS0FBSztBQUNoQjtBQUVPLElBQUEsQUFBTU4saUJBQU4sTUFBTUEsdUJBQXVCTyw4QkFBYztJQUNoREMsWUFBWUMsaUJBQTBDLENBQUU7UUFDdEQsS0FBSztRQUVMLElBQUksT0FBT0Esc0JBQXNCLFVBQVUsSUFBSSxDQUFDQyxRQUFRLEdBQUdEO2FBQ3REO1lBQ0gsTUFBTUUsVUFBVUY7WUFDaEIsSUFBSUUsUUFBUVYsSUFBSSxFQUFFLElBQUksQ0FBQ1csR0FBRyxDQUFDYixjQUFjRSxJQUFJO1lBQzdDLElBQUlVLFFBQVFFLGVBQWUsRUFBRVgsUUFBUSxJQUFJLENBQUNVLEdBQUcsQ0FBQ2IsY0FBY0csTUFBTTtZQUNsRSxJQUFJUyxRQUFRRSxlQUFlLEVBQUVWLFdBQVcsSUFBSSxDQUFDUyxHQUFHLENBQUNiLGNBQWNJLFNBQVM7WUFDeEUsSUFBSVEsUUFBUUUsZUFBZSxFQUFFVCxVQUFVLElBQUksQ0FBQ1EsR0FBRyxDQUFDYixjQUFjSyxRQUFRO1lBQ3RFLElBQUlPLFFBQVFHLGFBQWEsRUFBRSxJQUFJLENBQUNGLEdBQUcsQ0FBQ2IsY0FBY00sWUFBWTtZQUM5RCxJQUFJTSxRQUFRTCxPQUFPLEVBQUUsSUFBSSxDQUFDTSxHQUFHLENBQUNiLGNBQWNPLE9BQU87UUFDckQ7SUFDRjtJQUVBLG9EQUFvRCxHQUNwRCxJQUFJTCxPQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQ2MsR0FBRyxDQUFDO0lBQ2xCO0lBRUEsa0RBQWtELEdBQ2xELElBQUliLFNBQWtCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDYSxHQUFHLENBQUM7SUFDbEI7SUFFQSxxREFBcUQsR0FDckQsSUFBSVosWUFBcUI7UUFDdkIsT0FBTyxJQUFJLENBQUNZLEdBQUcsQ0FBQztJQUNsQjtJQUVBLG9EQUFvRCxHQUNwRCxJQUFJWCxXQUFvQjtRQUN0QixPQUFPLElBQUksQ0FBQ1csR0FBRyxDQUFDO0lBQ2xCO0lBRUEseURBQXlELEdBQ3pELElBQUlWLGVBQXdCO1FBQzFCLE9BQU8sSUFBSSxDQUFDVSxHQUFHLENBQUM7SUFDbEI7SUFFQSxJQUFJVCxVQUFtQjtRQUNyQixPQUFPLElBQUksQ0FBQ1MsR0FBRyxDQUFDO0lBQ2xCO0lBRUEsd0RBQXdELEdBQ3hEQSxJQUFJQyxXQUFvRCxFQUFXO1FBQ2pFLElBQUksQ0FBQ0MsTUFBTUMsT0FBTyxDQUFDRixjQUFjLE9BQU8sS0FBSyxDQUFDRyxTQUFTcEIsYUFBYSxDQUFDaUIsWUFBWTtRQUVqRixPQUFPLEtBQUssQ0FBQ0csU0FBU0gsWUFBWUksTUFBTSxDQUFDLENBQUNDLEdBQUdDLElBQU9ELEtBQUt0QixhQUFhLENBQUN1QixFQUFFLEVBQUc7SUFDOUU7SUFFQSxpRkFBaUYsR0FDakZDLE9BQTJDO1FBQ3pDLE1BQU1DLE9BQWdDLENBQUM7UUFDdkMsS0FBSyxNQUFNLENBQUNDLEtBQUtDLE1BQU0sSUFBSUMsT0FBT0MsT0FBTyxDQUFDN0IsZUFBZ0I7WUFDeER5QixJQUFJLENBQUNDLElBQUksR0FBRyxLQUFLLENBQUNOLFNBQVNPO1FBQzdCO1FBRUEsT0FBT0Y7SUFDVDtBQUNGIn0=
|