@discordeno/bot 22.0.1-next.f07125d → 22.0.1-next.f14bdff

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.
Files changed (85) hide show
  1. package/dist/constants.d.ts.map +1 -1
  2. package/dist/constants.js +2 -2
  3. package/dist/handlers/guilds/automod/AUTO_MODERATION_ACTION_EXECUTION.js +2 -2
  4. package/dist/handlers/guilds/automod/AUTO_MODERATION_RULE_CREATE.js +2 -2
  5. package/dist/handlers/guilds/automod/AUTO_MODERATION_RULE_DELETE.js +2 -2
  6. package/dist/handlers/guilds/automod/AUTO_MODERATION_RULE_UPDATE.js +2 -2
  7. package/dist/handlers/interactions/APPLICATION_COMMAND_PERMISSIONS_UPDATE.js +2 -2
  8. package/dist/helpers.d.ts +8 -2
  9. package/dist/helpers.d.ts.map +1 -1
  10. package/dist/helpers.js +241 -224
  11. package/dist/transformers/activity.d.ts +11 -4
  12. package/dist/transformers/activity.d.ts.map +1 -1
  13. package/dist/transformers/activity.js +45 -42
  14. package/dist/transformers/application.d.ts.map +1 -1
  15. package/dist/transformers/application.js +49 -46
  16. package/dist/transformers/applicationCommand.d.ts +3 -1
  17. package/dist/transformers/applicationCommand.d.ts.map +1 -1
  18. package/dist/transformers/applicationCommand.js +19 -17
  19. package/dist/transformers/applicationCommandOption.d.ts +3 -1
  20. package/dist/transformers/applicationCommandOption.d.ts.map +1 -1
  21. package/dist/transformers/applicationCommandOption.js +22 -20
  22. package/dist/transformers/applicationCommandOptionChoice.d.ts +3 -1
  23. package/dist/transformers/applicationCommandOptionChoice.d.ts.map +1 -1
  24. package/dist/transformers/applicationCommandOptionChoice.js +10 -8
  25. package/dist/transformers/applicationCommandPermission.d.ts +7 -2
  26. package/dist/transformers/applicationCommandPermission.d.ts.map +1 -1
  27. package/dist/transformers/applicationCommandPermission.js +20 -13
  28. package/dist/transformers/auditLogEntry.d.ts +7 -2
  29. package/dist/transformers/auditLogEntry.d.ts.map +1 -1
  30. package/dist/transformers/auditLogEntry.js +32 -25
  31. package/dist/transformers/automodActionExecution.d.ts +10 -2
  32. package/dist/transformers/automodActionExecution.d.ts.map +1 -1
  33. package/dist/transformers/automodActionExecution.js +35 -23
  34. package/dist/transformers/automodRule.d.ts +7 -2
  35. package/dist/transformers/automodRule.d.ts.map +1 -1
  36. package/dist/transformers/automodRule.js +30 -30
  37. package/dist/transformers/component.js +4 -6
  38. package/dist/transformers/embed.d.ts +16 -2
  39. package/dist/transformers/embed.d.ts.map +1 -1
  40. package/dist/transformers/embed.js +70 -58
  41. package/dist/transformers/gatewayBot.d.ts +7 -2
  42. package/dist/transformers/gatewayBot.d.ts.map +1 -1
  43. package/dist/transformers/gatewayBot.js +20 -13
  44. package/dist/transformers/guild.d.ts.map +1 -1
  45. package/dist/transformers/guild.js +2 -10
  46. package/dist/transformers/integration.d.ts +10 -2
  47. package/dist/transformers/integration.d.ts.map +1 -1
  48. package/dist/transformers/integration.js +43 -31
  49. package/dist/transformers/interaction.d.ts +3 -1
  50. package/dist/transformers/interaction.d.ts.map +1 -1
  51. package/dist/transformers/interaction.js +12 -11
  52. package/dist/transformers/sticker.d.ts +3 -1
  53. package/dist/transformers/sticker.d.ts.map +1 -1
  54. package/dist/transformers/sticker.js +13 -12
  55. package/dist/transformers/team.d.ts +7 -2
  56. package/dist/transformers/team.d.ts.map +1 -1
  57. package/dist/transformers/team.js +22 -16
  58. package/dist/transformers/template.d.ts +3 -1
  59. package/dist/transformers/template.d.ts.map +1 -1
  60. package/dist/transformers/template.js +18 -16
  61. package/dist/transformers/threadMember.d.ts +6 -2
  62. package/dist/transformers/threadMember.d.ts.map +1 -1
  63. package/dist/transformers/threadMember.js +20 -16
  64. package/dist/transformers/toggles/guild.d.ts +16 -13
  65. package/dist/transformers/toggles/guild.d.ts.map +1 -1
  66. package/dist/transformers/toggles/guild.js +27 -21
  67. package/dist/transformers/types.d.ts +1 -1
  68. package/dist/transformers/types.d.ts.map +1 -1
  69. package/dist/transformers/types.js +1 -1
  70. package/dist/transformers/voiceRegion.d.ts +3 -1
  71. package/dist/transformers/voiceRegion.d.ts.map +1 -1
  72. package/dist/transformers/voiceRegion.js +12 -10
  73. package/dist/transformers/welcomeScreen.d.ts +7 -2
  74. package/dist/transformers/welcomeScreen.d.ts.map +1 -1
  75. package/dist/transformers/welcomeScreen.js +19 -12
  76. package/dist/transformers/widget.d.ts +3 -1
  77. package/dist/transformers/widget.d.ts.map +1 -1
  78. package/dist/transformers/widget.js +17 -15
  79. package/dist/transformers/widgetSettings.d.ts +3 -1
  80. package/dist/transformers/widgetSettings.d.ts.map +1 -1
  81. package/dist/transformers/widgetSettings.js +9 -7
  82. package/dist/transformers.d.ts +98 -91
  83. package/dist/transformers.d.ts.map +1 -1
  84. package/dist/transformers.js +55 -25
  85. package/package.json +5 -5
package/dist/helpers.js CHANGED
@@ -1,152 +1,152 @@
1
- import { snakelize } from '@discordeno/utils';
1
+ import { camelize } from '@discordeno/utils';
2
2
  export function createBotHelpers(bot) {
3
3
  return {
4
4
  createAutomodRule: async (guildId, options, reason)=>{
5
- return bot.transformers.automodRule(bot, snakelize(await bot.rest.createAutomodRule(guildId, options, reason)));
5
+ return bot.transformers.autoModerationRule(bot, await bot.rest.snake.createAutomodRule(guildId, options, reason));
6
6
  },
7
7
  createChannel: async (guildId, options, reason)=>{
8
- return bot.transformers.channel(bot, snakelize(await bot.rest.createChannel(guildId, options, reason)), {
8
+ return bot.transformers.channel(bot, await bot.rest.snake.createChannel(guildId, options, reason), {
9
9
  guildId
10
10
  });
11
11
  },
12
12
  createEmoji: async (guildId, options, reason)=>{
13
- return bot.transformers.emoji(bot, snakelize(await bot.rest.createEmoji(guildId, options, reason)));
13
+ return bot.transformers.emoji(bot, await bot.rest.snake.createEmoji(guildId, options, reason));
14
14
  },
15
15
  createApplicationEmoji: async (options)=>{
16
- return bot.transformers.emoji(bot, snakelize(await bot.rest.createApplicationEmoji(options)));
16
+ return bot.transformers.emoji(bot, await bot.rest.snake.createApplicationEmoji(options));
17
17
  },
18
18
  createForumThread: async (channelId, options, reason)=>{
19
- return bot.transformers.channel(bot, snakelize(await bot.rest.createForumThread(channelId, options, reason)));
19
+ return bot.transformers.channel(bot, await bot.rest.snake.createForumThread(channelId, options, reason));
20
20
  },
21
21
  createGlobalApplicationCommand: async (command, options)=>{
22
- return bot.transformers.applicationCommand(bot, snakelize(await bot.rest.createGlobalApplicationCommand(command, options)));
22
+ return bot.transformers.applicationCommand(bot, await bot.rest.snake.createGlobalApplicationCommand(command, options));
23
23
  },
24
24
  createGuildApplicationCommand: async (command, guildId, options)=>{
25
- return bot.transformers.applicationCommand(bot, snakelize(await bot.rest.createGuildApplicationCommand(command, guildId, options)));
25
+ return bot.transformers.applicationCommand(bot, await bot.rest.snake.createGuildApplicationCommand(command, guildId, options));
26
26
  },
27
27
  createGuildSticker: async (guildId, options, reason)=>{
28
- return bot.transformers.sticker(bot, snakelize(await bot.rest.createGuildSticker(guildId, options, reason)));
28
+ return bot.transformers.sticker(bot, await bot.rest.snake.createGuildSticker(guildId, options, reason));
29
29
  },
30
30
  createGuildTemplate: async (guildId, options)=>{
31
- return bot.transformers.template(bot, snakelize(await bot.rest.createGuildTemplate(guildId, options)));
31
+ return bot.transformers.template(bot, await bot.rest.snake.createGuildTemplate(guildId, options));
32
32
  },
33
33
  createInvite: async (channelId, options, reason)=>{
34
34
  return await bot.rest.createInvite(channelId, options, reason);
35
35
  },
36
36
  getGuildRoleMemberCounts: async (guildId)=>{
37
- return await bot.rest.getGuildRoleMemberCounts(guildId);
37
+ return await bot.rest.snake.getGuildRoleMemberCounts(guildId);
38
38
  },
39
39
  createRole: async (guildId, options, reason)=>{
40
- return bot.transformers.role(bot, snakelize(await bot.rest.createRole(guildId, options, reason)), {
40
+ return bot.transformers.role(bot, await bot.rest.snake.createRole(guildId, options, reason), {
41
41
  guildId
42
42
  });
43
43
  },
44
44
  createScheduledEvent: async (guildId, options, reason)=>{
45
- return bot.transformers.scheduledEvent(bot, snakelize(await bot.rest.createScheduledEvent(guildId, options, reason)));
45
+ return bot.transformers.scheduledEvent(bot, await bot.rest.snake.createScheduledEvent(guildId, options, reason));
46
46
  },
47
47
  createStageInstance: async (options, reason)=>{
48
- return bot.transformers.stageInstance(bot, snakelize(await bot.rest.createStageInstance(options, reason)));
48
+ return bot.transformers.stageInstance(bot, await bot.rest.snake.createStageInstance(options, reason));
49
49
  },
50
50
  createWebhook: async (channelId, options, reason)=>{
51
- return bot.transformers.webhook(bot, snakelize(await bot.rest.createWebhook(channelId, options, reason)));
51
+ return bot.transformers.webhook(bot, await bot.rest.snake.createWebhook(channelId, options, reason));
52
52
  },
53
53
  editApplicationCommandPermissions: async (guildId, commandId, bearerToken, options)=>{
54
- return bot.transformers.applicationCommandPermission(bot, snakelize(await bot.rest.editApplicationCommandPermissions(guildId, commandId, bearerToken, options)));
54
+ return bot.transformers.guildApplicationCommandPermissions(bot, await bot.rest.snake.editApplicationCommandPermissions(guildId, commandId, bearerToken, options));
55
55
  },
56
56
  editAutomodRule: async (guildId, ruleId, options, reason)=>{
57
- return bot.transformers.automodRule(bot, snakelize(await bot.rest.editAutomodRule(guildId, ruleId, options, reason)));
57
+ return bot.transformers.autoModerationRule(bot, await bot.rest.snake.editAutomodRule(guildId, ruleId, options, reason));
58
58
  },
59
59
  editBotProfile: async (options)=>{
60
- return bot.transformers.user(bot, snakelize(await bot.rest.editBotProfile(options)));
60
+ return bot.transformers.user(bot, await bot.rest.snake.editBotProfile(options));
61
61
  },
62
62
  editChannel: async (channelId, options, reason)=>{
63
- return bot.transformers.channel(bot, snakelize(await bot.rest.editChannel(channelId, options, reason)));
63
+ return bot.transformers.channel(bot, await bot.rest.snake.editChannel(channelId, options, reason));
64
64
  },
65
65
  editEmoji: async (guildId, id, options, reason)=>{
66
- return bot.transformers.emoji(bot, snakelize(await bot.rest.editEmoji(guildId, id, options, reason)));
66
+ return bot.transformers.emoji(bot, await bot.rest.snake.editEmoji(guildId, id, options, reason));
67
67
  },
68
68
  editApplicationEmoji: async (id, options)=>{
69
- return bot.transformers.emoji(bot, snakelize(await bot.rest.editApplicationEmoji(id, options)));
69
+ return bot.transformers.emoji(bot, await bot.rest.snake.editApplicationEmoji(id, options));
70
70
  },
71
71
  editFollowupMessage: async (token, messageId, options)=>{
72
- return bot.transformers.message(bot, snakelize(await bot.rest.editFollowupMessage(token, messageId, options)));
72
+ return bot.transformers.message(bot, await bot.rest.snake.editFollowupMessage(token, messageId, options));
73
73
  },
74
74
  editGlobalApplicationCommand: async (commandId, options)=>{
75
- return bot.transformers.applicationCommand(bot, snakelize(await bot.rest.editGlobalApplicationCommand(commandId, options)));
75
+ return bot.transformers.applicationCommand(bot, await bot.rest.snake.editGlobalApplicationCommand(commandId, options));
76
76
  },
77
77
  editGuild: async (guildId, options, reason)=>{
78
- return bot.transformers.guild(bot, snakelize(await bot.rest.editGuild(guildId, options, reason)));
78
+ return bot.transformers.guild(bot, await bot.rest.snake.editGuild(guildId, options, reason));
79
79
  },
80
80
  editGuildApplicationCommand: async (commandId, guildId, options)=>{
81
- return bot.transformers.applicationCommand(bot, snakelize(await bot.rest.editGuildApplicationCommand(commandId, guildId, options)));
81
+ return bot.transformers.applicationCommand(bot, await bot.rest.snake.editGuildApplicationCommand(commandId, guildId, options));
82
82
  },
83
83
  editGuildSticker: async (guildId, stickerId, options, reason)=>{
84
- return bot.transformers.sticker(bot, snakelize(await bot.rest.editGuildSticker(guildId, stickerId, options, reason)));
84
+ return bot.transformers.sticker(bot, await bot.rest.snake.editGuildSticker(guildId, stickerId, options, reason));
85
85
  },
86
86
  editGuildTemplate: async (guildId, templateCode, options)=>{
87
- return bot.transformers.template(bot, snakelize(await bot.rest.editGuildTemplate(guildId, templateCode, options)));
87
+ return bot.transformers.template(bot, await bot.rest.snake.editGuildTemplate(guildId, templateCode, options));
88
88
  },
89
89
  editMessage: async (channelId, messageId, options)=>{
90
- return bot.transformers.message(bot, snakelize(await bot.rest.editMessage(channelId, messageId, options)));
90
+ return bot.transformers.message(bot, await bot.rest.snake.editMessage(channelId, messageId, options));
91
91
  },
92
92
  editOriginalInteractionResponse: async (token, options)=>{
93
- return bot.transformers.message(bot, snakelize(await bot.rest.editOriginalInteractionResponse(token, options)));
93
+ return bot.transformers.message(bot, await bot.rest.snake.editOriginalInteractionResponse(token, options));
94
94
  },
95
95
  editRole: async (guildId, roleId, options, reason)=>{
96
- return bot.transformers.role(bot, snakelize(await bot.rest.editRole(guildId, roleId, options, reason)), {
96
+ return bot.transformers.role(bot, await bot.rest.snake.editRole(guildId, roleId, options, reason), {
97
97
  guildId
98
98
  });
99
99
  },
100
100
  editRolePositions: async (guildId, options, reason)=>{
101
- return snakelize(await bot.rest.editRolePositions(guildId, options, reason)).map((role)=>bot.transformers.role(bot, role, {
101
+ return (await bot.rest.snake.editRolePositions(guildId, options, reason)).map((role)=>bot.transformers.role(bot, role, {
102
102
  guildId
103
103
  }));
104
104
  },
105
105
  editScheduledEvent: async (guildId, eventId, options, reason)=>{
106
- return bot.transformers.scheduledEvent(bot, snakelize(await bot.rest.editScheduledEvent(guildId, eventId, options, reason)));
106
+ return bot.transformers.scheduledEvent(bot, await bot.rest.snake.editScheduledEvent(guildId, eventId, options, reason));
107
107
  },
108
108
  editStageInstance: async (channelId, topic, reason)=>{
109
- return bot.transformers.stageInstance(bot, snakelize(await bot.rest.editStageInstance(channelId, topic, reason)));
109
+ return bot.transformers.stageInstance(bot, await bot.rest.snake.editStageInstance(channelId, topic, reason));
110
110
  },
111
111
  editWebhook: async (webhookId, options, reason)=>{
112
- return bot.transformers.webhook(bot, snakelize(await bot.rest.editWebhook(webhookId, options, reason)));
112
+ return bot.transformers.webhook(bot, await bot.rest.snake.editWebhook(webhookId, options, reason));
113
113
  },
114
114
  editWebhookMessage: async (webhookId, token, messageId, options)=>{
115
- return bot.transformers.message(bot, snakelize(await bot.rest.editWebhookMessage(webhookId, token, messageId, options)));
115
+ return bot.transformers.message(bot, await bot.rest.snake.editWebhookMessage(webhookId, token, messageId, options));
116
116
  },
117
117
  editWebhookWithToken: async (webhookId, token, options)=>{
118
- return bot.transformers.webhook(bot, snakelize(await bot.rest.editWebhookWithToken(webhookId, token, options)));
118
+ return bot.transformers.webhook(bot, await bot.rest.snake.editWebhookWithToken(webhookId, token, options));
119
119
  },
120
120
  editWelcomeScreen: async (guildId, options, reason)=>{
121
- return bot.transformers.welcomeScreen(bot, snakelize(await bot.rest.editWelcomeScreen(guildId, options, reason)));
121
+ return bot.transformers.welcomeScreen(bot, await bot.rest.snake.editWelcomeScreen(guildId, options, reason));
122
122
  },
123
123
  editWidgetSettings: async (guildId, options, reason)=>{
124
- return bot.transformers.widgetSettings(bot, snakelize(await bot.rest.editWidgetSettings(guildId, options, reason)));
124
+ return bot.transformers.guildWidgetSettings(bot, await bot.rest.snake.editWidgetSettings(guildId, options, reason));
125
125
  },
126
126
  executeWebhook: async (webhookId, token, options)=>{
127
- const result = await bot.rest.executeWebhook(webhookId, token, options);
127
+ const result = await bot.rest.snake.executeWebhook(webhookId, token, options);
128
128
  if (!result) return;
129
- return bot.transformers.message(bot, snakelize(result));
129
+ return bot.transformers.message(bot, result);
130
130
  },
131
131
  followAnnouncement: async (sourceChannelId, targetChannelId)=>{
132
132
  return await bot.rest.followAnnouncement(sourceChannelId, targetChannelId);
133
133
  },
134
134
  getActiveThreads: async (guildId)=>{
135
- const result = await bot.rest.getActiveThreads(guildId);
135
+ const result = await bot.rest.snake.getActiveThreads(guildId);
136
136
  return {
137
- threads: result.threads.map((thread)=>bot.transformers.channel(bot, snakelize(thread), {
137
+ threads: result.threads.map((thread)=>bot.transformers.channel(bot, thread, {
138
138
  guildId
139
139
  })),
140
- members: result.members.map((member)=>bot.transformers.threadMember(bot, snakelize(member), {
140
+ members: result.members.map((member)=>bot.transformers.threadMember(bot, member, {
141
141
  guildId
142
142
  }))
143
143
  };
144
144
  },
145
145
  getApplicationInfo: async ()=>{
146
- return bot.transformers.application(bot, snakelize(await bot.rest.getApplicationInfo()));
146
+ return bot.transformers.application(bot, await bot.rest.snake.getApplicationInfo());
147
147
  },
148
148
  editApplicationInfo: async (body)=>{
149
- return bot.transformers.application(bot, snakelize(await bot.rest.editApplicationInfo(body)));
149
+ return bot.transformers.application(bot, await bot.rest.snake.editApplicationInfo(body));
150
150
  },
151
151
  getCurrentAuthenticationInfo: async (bearerToken)=>{
152
152
  return await bot.rest.getCurrentAuthenticationInfo(bearerToken);
@@ -155,27 +155,25 @@ export function createBotHelpers(bot) {
155
155
  return await bot.rest.exchangeToken(clientId, clientSecret, options);
156
156
  },
157
157
  revokeToken: async (clientId, clientSecret, options)=>{
158
- return await bot.rest.revokeToken(clientId, clientSecret, options);
158
+ return await bot.rest.snake.revokeToken(clientId, clientSecret, options);
159
159
  },
160
160
  getApplicationCommandPermission: async (guildId, commandId, options)=>{
161
- const res = await bot.rest.getApplicationCommandPermission(guildId, commandId, options);
162
- const snakedRes = snakelize(res);
163
- return bot.transformers.applicationCommandPermission(bot, snakedRes);
161
+ return bot.transformers.guildApplicationCommandPermissions(bot, await bot.rest.snake.getApplicationCommandPermission(guildId, commandId, options));
164
162
  },
165
163
  getApplicationCommandPermissions: async (guildId, options)=>{
166
- return (await bot.rest.getApplicationCommandPermissions(guildId, options)).map((res)=>bot.transformers.applicationCommandPermission(bot, snakelize(res)));
164
+ return (await bot.rest.snake.getApplicationCommandPermissions(guildId, options)).map((res)=>bot.transformers.guildApplicationCommandPermissions(bot, res));
167
165
  },
168
166
  getAuditLog: async (guildId, options)=>{
169
167
  return await bot.rest.getAuditLog(guildId, options);
170
168
  },
171
169
  getAutomodRule: async (guildId, ruleId)=>{
172
- return bot.transformers.automodRule(bot, snakelize(await bot.rest.getAutomodRule(guildId, ruleId)));
170
+ return bot.transformers.autoModerationRule(bot, await bot.rest.snake.getAutomodRule(guildId, ruleId));
173
171
  },
174
172
  getAutomodRules: async (guildId)=>{
175
- return (await bot.rest.getAutomodRules(guildId)).map((res)=>bot.transformers.automodRule(bot, snakelize(res)));
173
+ return (await bot.rest.snake.getAutomodRules(guildId)).map((res)=>bot.transformers.autoModerationRule(bot, res));
176
174
  },
177
175
  getAvailableVoiceRegions: async ()=>{
178
- return (await bot.rest.getAvailableVoiceRegions()).map((res)=>bot.transformers.voiceRegion(bot, snakelize(res)));
176
+ return (await bot.rest.snake.getAvailableVoiceRegions()).map((res)=>bot.transformers.voiceRegion(bot, res));
179
177
  },
180
178
  getBan: async (guildId, userId)=>{
181
179
  return await bot.rest.getBan(guildId, userId);
@@ -184,121 +182,120 @@ export function createBotHelpers(bot) {
184
182
  return await bot.rest.getBans(guildId, options);
185
183
  },
186
184
  getChannel: async (channelId)=>{
187
- return bot.transformers.channel(bot, snakelize(await bot.rest.getChannel(channelId)));
185
+ return bot.transformers.channel(bot, await bot.rest.snake.getChannel(channelId));
188
186
  },
189
187
  getChannelInvites: async (channelId)=>{
190
- return (await bot.rest.getChannelInvites(channelId)).map((res)=>bot.transformers.invite(bot, snakelize(res)));
188
+ return (await bot.rest.snake.getChannelInvites(channelId)).map((res)=>bot.transformers.invite(bot, res));
191
189
  },
192
190
  getChannels: async (guildId)=>{
193
- return (await bot.rest.getChannels(guildId)).map((res)=>bot.transformers.channel(bot, snakelize(res), {
191
+ return (await bot.rest.snake.getChannels(guildId)).map((res)=>bot.transformers.channel(bot, res, {
194
192
  guildId
195
193
  }));
196
194
  },
197
195
  getChannelWebhooks: async (channelId)=>{
198
- return (await bot.rest.getChannelWebhooks(channelId)).map((res)=>bot.transformers.webhook(bot, snakelize(res)));
196
+ return (await bot.rest.snake.getChannelWebhooks(channelId)).map((res)=>bot.transformers.webhook(bot, res));
199
197
  },
200
198
  getDmChannel: async (userId)=>{
201
- return bot.transformers.channel(bot, snakelize(await bot.rest.getDmChannel(userId)));
199
+ return bot.transformers.channel(bot, await bot.rest.snake.getDmChannel(userId));
202
200
  },
203
201
  getGroupDmChannel: async (options)=>{
204
- return bot.transformers.channel(bot, snakelize(await bot.rest.getGroupDmChannel(options)));
202
+ return bot.transformers.channel(bot, await bot.rest.snake.getGroupDmChannel(options));
205
203
  },
206
204
  getEmoji: async (guildId, emojiId)=>{
207
- return bot.transformers.emoji(bot, snakelize(await bot.rest.getEmoji(guildId, emojiId)));
205
+ return bot.transformers.emoji(bot, await bot.rest.snake.getEmoji(guildId, emojiId));
208
206
  },
209
207
  getApplicationEmoji: async (emojiId)=>{
210
- return bot.transformers.emoji(bot, snakelize(await bot.rest.getApplicationEmoji(emojiId)));
208
+ return bot.transformers.emoji(bot, await bot.rest.snake.getApplicationEmoji(emojiId));
211
209
  },
212
210
  getEmojis: async (guildId)=>{
213
- return (await bot.rest.getEmojis(guildId)).map((res)=>bot.transformers.emoji(bot, snakelize(res)));
211
+ return (await bot.rest.snake.getEmojis(guildId)).map((res)=>bot.transformers.emoji(bot, res));
214
212
  },
215
213
  getApplicationEmojis: async ()=>{
216
- const res = await bot.rest.getApplicationEmojis();
214
+ const res = await bot.rest.snake.getApplicationEmojis();
217
215
  return {
218
- items: res.items.map((item)=>bot.transformers.emoji(bot, snakelize(item)))
216
+ items: res.items.map((item)=>bot.transformers.emoji(bot, item))
219
217
  };
220
218
  },
221
219
  getFollowupMessage: async (token, messageId)=>{
222
- return bot.transformers.message(bot, snakelize(await bot.rest.getFollowupMessage(token, messageId)));
220
+ return bot.transformers.message(bot, await bot.rest.snake.getFollowupMessage(token, messageId));
223
221
  },
224
222
  getGatewayBot: async ()=>{
225
- return bot.transformers.gatewayBot(bot, snakelize(await bot.rest.getGatewayBot()));
223
+ return bot.transformers.gatewayBot(bot, await bot.rest.snake.getGatewayBot());
226
224
  },
227
225
  getGlobalApplicationCommand: async (commandId)=>{
228
- return bot.transformers.applicationCommand(bot, snakelize(await bot.rest.getGlobalApplicationCommand(commandId)));
226
+ return bot.transformers.applicationCommand(bot, await bot.rest.snake.getGlobalApplicationCommand(commandId));
229
227
  },
230
228
  getGlobalApplicationCommands: async (options)=>{
231
- return (await bot.rest.getGlobalApplicationCommands(options)).map((res)=>bot.transformers.applicationCommand(bot, snakelize(res)));
229
+ return (await bot.rest.snake.getGlobalApplicationCommands(options)).map((res)=>bot.transformers.applicationCommand(bot, res));
232
230
  },
233
231
  getGuild: async (guildId, options)=>{
234
- return bot.transformers.guild(bot, snakelize(await bot.rest.getGuild(guildId, options)));
232
+ return bot.transformers.guild(bot, await bot.rest.snake.getGuild(guildId, options));
235
233
  },
236
234
  getGuilds: async (bearerToken, options)=>{
237
- return (await bot.rest.getGuilds(bearerToken, options)).map((res)=>bot.transformers.guild(bot, snakelize(res), {
235
+ return (await bot.rest.snake.getGuilds(bearerToken, options)).map((res)=>bot.transformers.guild(bot, res, {
238
236
  partial: true
239
237
  }));
240
238
  },
241
239
  getGuildApplicationCommand: async (commandId, guildId)=>{
242
- return bot.transformers.applicationCommand(bot, snakelize(await bot.rest.getGuildApplicationCommand(commandId, guildId)));
240
+ return bot.transformers.applicationCommand(bot, await bot.rest.snake.getGuildApplicationCommand(commandId, guildId));
243
241
  },
244
242
  getGuildApplicationCommands: async (guildId, options)=>{
245
- return (await bot.rest.getGuildApplicationCommands(guildId, options)).map((res)=>bot.transformers.applicationCommand(bot, snakelize(res)));
243
+ return (await bot.rest.snake.getGuildApplicationCommands(guildId, options)).map((res)=>bot.transformers.applicationCommand(bot, res));
246
244
  },
247
245
  getGuildPreview: async (guildId)=>{
248
246
  return await bot.rest.getGuildPreview(guildId);
249
- // return bot.transformers.xxx(bot, snakelize(await bot.rest.getGuildPreview(guildId)))
250
247
  },
251
248
  getGuildSticker: async (guildId, stickerId)=>{
252
- return bot.transformers.sticker(bot, snakelize(await bot.rest.getGuildSticker(guildId, stickerId)));
249
+ return bot.transformers.sticker(bot, await bot.rest.snake.getGuildSticker(guildId, stickerId));
253
250
  },
254
251
  getGuildStickers: async (guildId)=>{
255
- return (await bot.rest.getGuildStickers(guildId)).map((res)=>bot.transformers.sticker(bot, snakelize(res)));
252
+ return (await bot.rest.snake.getGuildStickers(guildId)).map((res)=>bot.transformers.sticker(bot, res));
256
253
  },
257
254
  getGuildTemplate: async (templateCode)=>{
258
- return bot.transformers.template(bot, snakelize(await bot.rest.getGuildTemplate(templateCode)));
255
+ return bot.transformers.template(bot, await bot.rest.snake.getGuildTemplate(templateCode));
259
256
  },
260
257
  getGuildTemplates: async (guildId)=>{
261
- return (await bot.rest.getGuildTemplates(guildId)).map((res)=>bot.transformers.template(bot, snakelize(res)));
258
+ return (await bot.rest.snake.getGuildTemplates(guildId)).map((res)=>bot.transformers.template(bot, res));
262
259
  },
263
260
  getGuildWebhooks: async (guildId)=>{
264
- return (await bot.rest.getGuildWebhooks(guildId)).map((res)=>bot.transformers.webhook(bot, snakelize(res)));
261
+ return (await bot.rest.snake.getGuildWebhooks(guildId)).map((res)=>bot.transformers.webhook(bot, res));
265
262
  },
266
263
  getIntegrations: async (guildId)=>{
267
- return (await bot.rest.getIntegrations(guildId)).map((res)=>bot.transformers.integration(bot, snakelize({
264
+ return (await bot.rest.snake.getIntegrations(guildId)).map((res)=>bot.transformers.integration(bot, {
268
265
  ...res,
269
- guildId: guildId.toString()
270
- })));
266
+ guild_id: guildId.toString()
267
+ }));
271
268
  },
272
269
  getInvite: async (inviteCode, options)=>{
273
- return bot.transformers.invite(bot, snakelize(await bot.rest.getInvite(inviteCode, options)));
270
+ return bot.transformers.invite(bot, await bot.rest.snake.getInvite(inviteCode, options));
274
271
  },
275
272
  getInvites: async (guildId)=>{
276
- return (await bot.rest.getInvites(guildId)).map((res)=>bot.transformers.invite(bot, snakelize(res)));
273
+ return (await bot.rest.snake.getInvites(guildId)).map((res)=>bot.transformers.invite(bot, res));
277
274
  },
278
275
  getMessage: async (channelId, messageId)=>{
279
- return bot.transformers.message(bot, snakelize(await bot.rest.getMessage(channelId, messageId)));
276
+ return bot.transformers.message(bot, await bot.rest.snake.getMessage(channelId, messageId));
280
277
  },
281
278
  getMessages: async (channelId, options)=>{
282
- return (await bot.rest.getMessages(channelId, options)).map((res)=>bot.transformers.message(bot, snakelize(res)));
279
+ return (await bot.rest.snake.getMessages(channelId, options)).map((res)=>bot.transformers.message(bot, res));
283
280
  },
284
281
  getStickerPack: async (stickerPackId)=>{
285
- return bot.transformers.stickerPack(bot, snakelize(await bot.rest.getStickerPack(stickerPackId)));
282
+ return bot.transformers.stickerPack(bot, await bot.rest.snake.getStickerPack(stickerPackId));
286
283
  },
287
284
  getStickerPacks: async ()=>{
288
- return (await bot.rest.getStickerPacks()).map((res)=>bot.transformers.stickerPack(bot, snakelize(res)));
285
+ return (await bot.rest.snake.getStickerPacks()).map((res)=>bot.transformers.stickerPack(bot, res));
289
286
  },
290
287
  getOriginalInteractionResponse: async (token)=>{
291
- return bot.transformers.message(bot, snakelize(await bot.rest.getOriginalInteractionResponse(token)));
288
+ return bot.transformers.message(bot, await bot.rest.snake.getOriginalInteractionResponse(token));
292
289
  },
293
290
  getChannelPins: async (channelId, options)=>{
294
- const res = snakelize(await bot.rest.getChannelPins(channelId, options));
291
+ const res = await bot.rest.snake.getChannelPins(channelId, options);
295
292
  return {
296
293
  hasMore: res.has_more,
297
294
  items: res.items.map((item)=>bot.transformers.messagePin(bot, item))
298
295
  };
299
296
  },
300
297
  getPinnedMessages: async (channelId)=>{
301
- return (await bot.rest.getPinnedMessages(channelId)).map((res)=>bot.transformers.message(bot, snakelize(res)));
298
+ return (await bot.rest.snake.getPinnedMessages(channelId)).map((res)=>bot.transformers.message(bot, res));
302
299
  },
303
300
  getPrivateArchivedThreads: async (channelId, options)=>{
304
301
  return await bot.rest.getPrivateArchivedThreads(channelId, options);
@@ -307,32 +304,32 @@ export function createBotHelpers(bot) {
307
304
  return await bot.rest.getPrivateJoinedArchivedThreads(channelId, options);
308
305
  },
309
306
  getPruneCount: async (guildId, options)=>{
310
- return await bot.rest.getPruneCount(guildId, options);
307
+ return await bot.rest.snake.getPruneCount(guildId, options);
311
308
  },
312
309
  getPublicArchivedThreads: async (channelId, options)=>{
313
310
  return await bot.rest.getPublicArchivedThreads(channelId, options);
314
311
  },
315
312
  getRoles: async (guildId)=>{
316
- return snakelize(await bot.rest.getRoles(guildId)).map((role)=>bot.transformers.role(bot, role, {
313
+ return (await bot.rest.snake.getRoles(guildId)).map((role)=>bot.transformers.role(bot, role, {
317
314
  guildId
318
315
  }));
319
316
  },
320
317
  getRole: async (guildId, roleId)=>{
321
- return bot.transformers.role(bot, snakelize(await bot.rest.getRole(guildId, roleId)), {
318
+ return bot.transformers.role(bot, await bot.rest.snake.getRole(guildId, roleId), {
322
319
  guildId
323
320
  });
324
321
  },
325
322
  getScheduledEvent: async (guildId, eventId, options)=>{
326
- return bot.transformers.scheduledEvent(bot, snakelize(await bot.rest.getScheduledEvent(guildId, eventId, options)));
323
+ return bot.transformers.scheduledEvent(bot, await bot.rest.snake.getScheduledEvent(guildId, eventId, options));
327
324
  },
328
325
  getScheduledEvents: async (guildId, options)=>{
329
- return (await bot.rest.getScheduledEvents(guildId, options)).map((res)=>bot.transformers.scheduledEvent(bot, snakelize(res)));
326
+ return (await bot.rest.snake.getScheduledEvents(guildId, options)).map((res)=>bot.transformers.scheduledEvent(bot, res));
330
327
  },
331
328
  getScheduledEventUsers: async (guildId, eventId, options)=>{
332
- return (await bot.rest.getScheduledEventUsers(guildId, eventId, options)).map((u)=>{
329
+ return (await bot.rest.snake.getScheduledEventUsers(guildId, eventId, options)).map((u)=>{
333
330
  return {
334
- user: bot.transformers.user(bot, snakelize(u.user)),
335
- member: u.member && bot.transformers.member(bot, snakelize(u.member), {
331
+ user: bot.transformers.user(bot, u.user),
332
+ member: u.member && bot.transformers.member(bot, u.member, {
336
333
  guildId,
337
334
  userId: bot.transformers.snowflake(u.user.id)
338
335
  })
@@ -340,38 +337,38 @@ export function createBotHelpers(bot) {
340
337
  });
341
338
  },
342
339
  getSessionInfo: async ()=>{
343
- return bot.transformers.gatewayBot(bot, snakelize(await bot.rest.getSessionInfo()));
340
+ return bot.transformers.gatewayBot(bot, await bot.rest.snake.getSessionInfo());
344
341
  },
345
342
  getStageInstance: async (channelId)=>{
346
- return bot.transformers.stageInstance(bot, snakelize(await bot.rest.getStageInstance(channelId)));
343
+ return bot.transformers.stageInstance(bot, await bot.rest.snake.getStageInstance(channelId));
347
344
  },
348
345
  getOwnVoiceState: async (guildId)=>{
349
- return bot.transformers.voiceState(bot, snakelize(await bot.rest.getOwnVoiceState(guildId)), {
346
+ return bot.transformers.voiceState(bot, await bot.rest.snake.getOwnVoiceState(guildId), {
350
347
  guildId
351
348
  });
352
349
  },
353
350
  getUserVoiceState: async (guildId, userId)=>{
354
- return bot.transformers.voiceState(bot, snakelize(await bot.rest.getUserVoiceState(guildId, userId)), {
351
+ return bot.transformers.voiceState(bot, await bot.rest.snake.getUserVoiceState(guildId, userId), {
355
352
  guildId
356
353
  });
357
354
  },
358
355
  getSticker: async (stickerId)=>{
359
- return bot.transformers.sticker(bot, snakelize(await bot.rest.getSticker(stickerId)));
356
+ return bot.transformers.sticker(bot, await bot.rest.snake.getSticker(stickerId));
360
357
  },
361
358
  getThreadMember: async (channelId, userId, options, extra)=>{
362
- return bot.transformers.threadMember(bot, snakelize(await bot.rest.getThreadMember(channelId, userId, options)), extra);
359
+ return bot.transformers.threadMember(bot, await bot.rest.snake.getThreadMember(channelId, userId, options), extra);
363
360
  },
364
361
  getThreadMembers: async (channelId, options, extra)=>{
365
- return (await bot.rest.getThreadMembers(channelId, options)).map((res)=>bot.transformers.threadMember(bot, snakelize(res), extra));
362
+ return (await bot.rest.snake.getThreadMembers(channelId, options)).map((res)=>bot.transformers.threadMember(bot, res, extra));
366
363
  },
367
364
  getReactions: async (channelId, messageId, reaction, options)=>{
368
- return (await bot.rest.getReactions(channelId, messageId, reaction, options)).map((res)=>bot.transformers.user(bot, snakelize(res)));
365
+ return (await bot.rest.snake.getReactions(channelId, messageId, reaction, options)).map((res)=>bot.transformers.user(bot, res));
369
366
  },
370
367
  getUser: async (id)=>{
371
- return bot.transformers.user(bot, snakelize(await bot.rest.getUser(id)));
368
+ return bot.transformers.user(bot, await bot.rest.snake.getUser(id));
372
369
  },
373
370
  getCurrentUser: async (bearerToken)=>{
374
- return bot.transformers.user(bot, snakelize(await bot.rest.getCurrentUser(bearerToken)));
371
+ return bot.transformers.user(bot, await bot.rest.snake.getCurrentUser(bearerToken));
375
372
  },
376
373
  getUserConnections: async (bearerToken)=>{
377
374
  return await bot.rest.getUserConnections(bearerToken);
@@ -383,100 +380,115 @@ export function createBotHelpers(bot) {
383
380
  return await bot.rest.getVanityUrl(guildId);
384
381
  },
385
382
  getVoiceRegions: async (guildId)=>{
386
- return (await bot.rest.getVoiceRegions(guildId)).map((res)=>bot.transformers.voiceRegion(bot, snakelize(res)));
383
+ return (await bot.rest.snake.getVoiceRegions(guildId)).map((res)=>bot.transformers.voiceRegion(bot, res));
387
384
  },
388
385
  getWebhook: async (webhookId)=>{
389
- return bot.transformers.webhook(bot, snakelize(await bot.rest.getWebhook(webhookId)));
386
+ return bot.transformers.webhook(bot, await bot.rest.snake.getWebhook(webhookId));
390
387
  },
391
388
  getWebhookMessage: async (webhookId, token, messageId, options)=>{
392
- return bot.transformers.message(bot, snakelize(await bot.rest.getWebhookMessage(webhookId, token, messageId, options)));
389
+ return bot.transformers.message(bot, await bot.rest.snake.getWebhookMessage(webhookId, token, messageId, options));
393
390
  },
394
391
  getWebhookWithToken: async (webhookId, token)=>{
395
- return bot.transformers.webhook(bot, snakelize(await bot.rest.getWebhookWithToken(webhookId, token)));
392
+ return bot.transformers.webhook(bot, await bot.rest.snake.getWebhookWithToken(webhookId, token));
396
393
  },
397
394
  getWelcomeScreen: async (guildId)=>{
398
- return bot.transformers.welcomeScreen(bot, snakelize(await bot.rest.getWelcomeScreen(guildId)));
395
+ return bot.transformers.welcomeScreen(bot, await bot.rest.snake.getWelcomeScreen(guildId));
399
396
  },
400
397
  getWidget: async (guildId)=>{
401
- return bot.transformers.widget(bot, snakelize(await bot.rest.getWidget(guildId)));
398
+ return bot.transformers.guildWidget(bot, await bot.rest.snake.getWidget(guildId));
402
399
  },
403
400
  getWidgetSettings: async (guildId)=>{
404
- return bot.transformers.widgetSettings(bot, snakelize(await bot.rest.getWidgetSettings(guildId)));
401
+ return bot.transformers.guildWidgetSettings(bot, await bot.rest.snake.getWidgetSettings(guildId));
405
402
  },
406
403
  publishMessage: async (channelId, messageId)=>{
407
- return bot.transformers.message(bot, snakelize(await bot.rest.publishMessage(channelId, messageId)));
404
+ return bot.transformers.message(bot, await bot.rest.snake.publishMessage(channelId, messageId));
408
405
  },
409
406
  searchGuildMessages: async (guildId, options)=>{
410
- const result = await bot.rest.searchGuildMessages(guildId, options);
411
- if ('code' in result) return result;
407
+ const result = await bot.rest.snake.searchGuildMessages(guildId, options);
408
+ if ('code' in result) return camelize(result);
412
409
  return {
413
- ...result,
414
- messages: result.messages.map((messages)=>messages.map((message)=>bot.transformers.message(bot, snakelize(message)))),
415
- threads: result.threads?.map((thread)=>bot.transformers.channel(bot, snakelize(thread), {
410
+ // We would waste time and memory camelizing the entire result object, so we only camelize the parts we need to. The rest of the data is converted below
411
+ ...camelize({
412
+ ...result,
413
+ messages: undefined,
414
+ threads: undefined,
415
+ members: undefined
416
+ }),
417
+ messages: result.messages.map((messages)=>messages.map((message)=>bot.transformers.message(bot, message))),
418
+ threads: result.threads?.map((thread)=>bot.transformers.channel(bot, thread, {
416
419
  guildId
417
420
  })),
418
- members: result.members?.map((member)=>bot.transformers.threadMember(bot, snakelize(member), {
421
+ members: result.members?.map((member)=>bot.transformers.threadMember(bot, member, {
419
422
  guildId
420
423
  }))
421
424
  };
422
425
  },
423
426
  sendMessage: async (channelId, options)=>{
424
- return bot.transformers.message(bot, snakelize(await bot.rest.sendMessage(channelId, options)));
427
+ return bot.transformers.message(bot, await bot.rest.snake.sendMessage(channelId, options));
425
428
  },
426
429
  sendFollowupMessage: async (token, options)=>{
427
- return bot.transformers.message(bot, snakelize(await bot.rest.sendFollowupMessage(token, options)));
430
+ return bot.transformers.message(bot, await bot.rest.snake.sendFollowupMessage(token, options));
428
431
  },
429
432
  startThreadWithMessage: async (channelId, messageId, options, reason)=>{
430
- return bot.transformers.channel(bot, snakelize(await bot.rest.startThreadWithMessage(channelId, messageId, options, reason)));
433
+ return bot.transformers.channel(bot, await bot.rest.snake.startThreadWithMessage(channelId, messageId, options, reason));
431
434
  },
432
435
  startThreadWithoutMessage: async (channelId, options, reason)=>{
433
- return bot.transformers.channel(bot, snakelize(await bot.rest.startThreadWithoutMessage(channelId, options, reason)));
436
+ return bot.transformers.channel(bot, await bot.rest.snake.startThreadWithoutMessage(channelId, options, reason));
437
+ },
438
+ getPollAnswerVoters: async (channelId, messageId, answerId, options)=>{
439
+ const res = await bot.rest.snake.getPollAnswerVoters(channelId, messageId, answerId, options);
440
+ return {
441
+ users: res.users.map((user)=>bot.transformers.user(bot, user))
442
+ };
443
+ },
444
+ endPoll: async (channelId, messageId)=>{
445
+ return bot.transformers.message(bot, await bot.rest.snake.endPoll(channelId, messageId));
434
446
  },
435
447
  syncGuildTemplate: async (guildId)=>{
436
- return bot.transformers.template(bot, snakelize(await bot.rest.syncGuildTemplate(guildId)));
448
+ return bot.transformers.template(bot, await bot.rest.snake.syncGuildTemplate(guildId));
437
449
  },
438
450
  upsertGlobalApplicationCommands: async (commands, options)=>{
439
- return (await bot.rest.upsertGlobalApplicationCommands(commands, options)).map((res)=>bot.transformers.applicationCommand(bot, snakelize(res)));
451
+ return (await bot.rest.snake.upsertGlobalApplicationCommands(commands, options)).map((res)=>bot.transformers.applicationCommand(bot, res));
440
452
  },
441
453
  upsertGuildApplicationCommands: async (guildId, commands, options)=>{
442
- return (await bot.rest.upsertGuildApplicationCommands(guildId, commands, options)).map((res)=>bot.transformers.applicationCommand(bot, snakelize(res)));
454
+ return (await bot.rest.snake.upsertGuildApplicationCommands(guildId, commands, options)).map((res)=>bot.transformers.applicationCommand(bot, res));
443
455
  },
444
456
  editCurrentMember: async (guildId, options, reason)=>{
445
- return bot.transformers.member(bot, snakelize(await bot.rest.editCurrentMember(guildId, options, reason)), {
457
+ return bot.transformers.member(bot, await bot.rest.snake.editCurrentMember(guildId, options, reason), {
446
458
  guildId,
447
459
  userId: bot.id
448
460
  });
449
461
  },
450
462
  editMember: async (guildId, userId, options, reason)=>{
451
- return bot.transformers.member(bot, snakelize(await bot.rest.editMember(guildId, userId, options, reason)), {
463
+ return bot.transformers.member(bot, await bot.rest.snake.editMember(guildId, userId, options, reason), {
452
464
  guildId,
453
465
  userId
454
466
  });
455
467
  },
456
468
  getCurrentMember: async (guildId, bearerToken)=>{
457
- const res = await bot.rest.getCurrentMember(guildId, bearerToken);
458
- return bot.transformers.member(bot, snakelize(res), {
469
+ const res = await bot.rest.snake.getCurrentMember(guildId, bearerToken);
470
+ return bot.transformers.member(bot, res, {
459
471
  guildId,
460
472
  userId: bot.transformers.snowflake(res.user.id)
461
473
  });
462
474
  },
463
475
  getMember: async (guildId, userId)=>{
464
- return bot.transformers.member(bot, snakelize(await bot.rest.getMember(guildId, userId)), {
476
+ return bot.transformers.member(bot, await bot.rest.snake.getMember(guildId, userId), {
465
477
  guildId,
466
478
  userId
467
479
  });
468
480
  },
469
481
  getMembers: async (guildId, options)=>{
470
- return (await bot.rest.getMembers(guildId, options)).map((res)=>bot.transformers.member(bot, snakelize(res), {
482
+ return (await bot.rest.snake.getMembers(guildId, options)).map((res)=>bot.transformers.member(bot, res, {
471
483
  guildId,
472
484
  userId: bot.transformers.snowflake(res.user.id)
473
485
  }));
474
486
  },
475
487
  pruneMembers: async (guildId, options, reason)=>{
476
- return await bot.rest.pruneMembers(guildId, options, reason);
488
+ return await bot.rest.snake.pruneMembers(guildId, options, reason);
477
489
  },
478
490
  searchMembers: async (guildId, query, options)=>{
479
- return (await bot.rest.searchMembers(guildId, query, options)).map((res)=>bot.transformers.member(bot, snakelize(res), {
491
+ return (await bot.rest.snake.searchMembers(guildId, query, options)).map((res)=>bot.transformers.member(bot, res, {
480
492
  guildId,
481
493
  userId: bot.transformers.snowflake(res.user.id)
482
494
  }));
@@ -498,269 +510,274 @@ export function createBotHelpers(bot) {
498
510
  return await bot.rest.updateApplicationRoleConnectionsMetadataRecords(applicationId, options);
499
511
  },
500
512
  createLobby: async (options)=>{
501
- return bot.transformers.lobby(bot, snakelize(await bot.rest.createLobby(options)));
513
+ return bot.transformers.lobby(bot, await bot.rest.snake.createLobby(options));
502
514
  },
503
515
  createOrJoinLobby: async (options)=>{
504
- return bot.transformers.lobby(bot, snakelize(await bot.rest.createOrJoinLobby(options)));
516
+ return bot.transformers.lobby(bot, await bot.rest.snake.createOrJoinLobby(options));
505
517
  },
506
518
  getLobby: async (lobbyId)=>{
507
- return bot.transformers.lobby(bot, snakelize(await bot.rest.getLobby(lobbyId)));
519
+ return bot.transformers.lobby(bot, await bot.rest.snake.getLobby(lobbyId));
508
520
  },
509
521
  modifyLobby: async (lobbyId, options)=>{
510
- return bot.transformers.lobby(bot, snakelize(await bot.rest.modifyLobby(lobbyId, options)));
522
+ return bot.transformers.lobby(bot, await bot.rest.snake.modifyLobby(lobbyId, options));
511
523
  },
512
524
  addMemberToLobby: async (lobbyId, userId, options)=>{
513
- return bot.transformers.lobbyMember(bot, snakelize(await bot.rest.addMemberToLobby(lobbyId, userId, options)));
525
+ return bot.transformers.lobbyMember(bot, await bot.rest.snake.addMemberToLobby(lobbyId, userId, options));
514
526
  },
515
527
  bulkUpdateLobbyMembers: async (lobbyId, options)=>{
516
- return (await bot.rest.bulkUpdateLobbyMembers(lobbyId, options)).map((res)=>bot.transformers.lobbyMember(bot, snakelize(res)));
528
+ return (await bot.rest.snake.bulkUpdateLobbyMembers(lobbyId, options)).map((res)=>bot.transformers.lobbyMember(bot, res));
517
529
  },
518
530
  linkChannelToLobby: async (lobbyId, bearerToken, options)=>{
519
- return bot.transformers.lobby(bot, snakelize(await bot.rest.linkChannelToLobby(lobbyId, bearerToken, options)));
531
+ return bot.transformers.lobby(bot, await bot.rest.snake.linkChannelToLobby(lobbyId, bearerToken, options));
520
532
  },
521
533
  unlinkChannelToLobby: async (lobbyId, bearerToken)=>{
522
- return bot.transformers.lobby(bot, snakelize(await bot.rest.unlinkChannelToLobby(lobbyId, bearerToken)));
534
+ return bot.transformers.lobby(bot, await bot.rest.snake.unlinkChannelToLobby(lobbyId, bearerToken));
523
535
  },
524
536
  updateLobbyMessageModerationMetadata: async (lobbyId, messageId, options)=>{
525
- return await bot.rest.updateLobbyMessageModerationMetadata(lobbyId, messageId, options);
537
+ return await bot.rest.snake.updateLobbyMessageModerationMetadata(lobbyId, messageId, options);
526
538
  },
527
539
  sendLobbyMessage: async (bearerToken, lobbyId, options)=>{
528
- return bot.transformers.lobbyMessage(bot, snakelize(await bot.rest.sendLobbyMessage(bearerToken, lobbyId, options)));
540
+ return bot.transformers.lobbyMessage(bot, await bot.rest.snake.sendLobbyMessage(bearerToken, lobbyId, options));
529
541
  },
530
542
  getLobbyMessages: async (bearerToken, lobbyId, options)=>{
531
- return (await bot.rest.getLobbyMessages(bearerToken, lobbyId, options)).map((res)=>bot.transformers.lobbyMessage(bot, snakelize(res)));
543
+ return (await bot.rest.snake.getLobbyMessages(bearerToken, lobbyId, options)).map((res)=>bot.transformers.lobbyMessage(bot, res));
532
544
  },
533
545
  createLobbyChannelInviteForSelf: async (bearerToken, lobbyId)=>{
534
- return bot.transformers.lobbyInvite(bot, snakelize(await bot.rest.createLobbyChannelInviteForSelf(bearerToken, lobbyId)));
546
+ return bot.transformers.lobbyInvite(bot, await bot.rest.snake.createLobbyChannelInviteForSelf(bearerToken, lobbyId));
535
547
  },
536
548
  createLobbyChannelInviteForUser: async (lobbyId, userId)=>{
537
- return bot.transformers.lobbyInvite(bot, snakelize(await bot.rest.createLobbyChannelInviteForUser(lobbyId, userId)));
549
+ return bot.transformers.lobbyInvite(bot, await bot.rest.snake.createLobbyChannelInviteForUser(lobbyId, userId));
538
550
  },
539
551
  getTargetUsers: async (inviteCode)=>{
540
- return await bot.rest.getTargetUsers(inviteCode);
552
+ return await bot.rest.snake.getTargetUsers(inviteCode);
541
553
  },
542
554
  updateTargetUsers: async (inviteCode, targetUsersFile)=>{
543
- await bot.rest.updateTargetUsers(inviteCode, targetUsersFile);
555
+ await bot.rest.snake.updateTargetUsers(inviteCode, targetUsersFile);
544
556
  },
545
557
  getTargetUsersJobStatus: async (inviteCode)=>{
546
558
  return await bot.rest.getTargetUsersJobStatus(inviteCode);
547
559
  },
548
- // All useless void return functions here
549
560
  addReaction: async (channelId, messageId, reaction)=>{
550
- return await bot.rest.addReaction(channelId, messageId, reaction);
561
+ return await bot.rest.snake.addReaction(channelId, messageId, reaction);
551
562
  },
552
563
  addReactions: async (channelId, messageId, reactions, ordered)=>{
553
- return await bot.rest.addReactions(channelId, messageId, reactions, ordered);
564
+ return await bot.rest.snake.addReactions(channelId, messageId, reactions, ordered);
554
565
  },
555
566
  addRole: async (guildId, userId, roleId, reason)=>{
556
- return await bot.rest.addRole(guildId, userId, roleId, reason);
567
+ return await bot.rest.snake.addRole(guildId, userId, roleId, reason);
557
568
  },
558
569
  addThreadMember: async (channelId, userId)=>{
559
- return await bot.rest.addThreadMember(channelId, userId);
570
+ return await bot.rest.snake.addThreadMember(channelId, userId);
560
571
  },
561
572
  addDmRecipient: async (channelId, userId, options)=>{
562
- return await bot.rest.addDmRecipient(channelId, userId, options);
573
+ return await bot.rest.snake.addDmRecipient(channelId, userId, options);
563
574
  },
564
575
  addGuildMember: async (guildId, userId, options)=>{
565
- return await bot.rest.addGuildMember(guildId, userId, options);
576
+ return await bot.rest.snake.addGuildMember(guildId, userId, options);
566
577
  },
567
578
  deleteAutomodRule: async (guildId, ruleId, reason)=>{
568
- return await bot.rest.deleteAutomodRule(guildId, ruleId, reason);
579
+ return await bot.rest.snake.deleteAutomodRule(guildId, ruleId, reason);
569
580
  },
570
581
  deleteChannel: async (channelId, reason)=>{
571
- return await bot.rest.deleteChannel(channelId, reason);
582
+ return await bot.rest.snake.deleteChannel(channelId, reason);
572
583
  },
573
584
  deleteChannelPermissionOverride: async (channelId, overwriteId, reason)=>{
574
- return await bot.rest.deleteChannelPermissionOverride(channelId, overwriteId, reason);
585
+ return await bot.rest.snake.deleteChannelPermissionOverride(channelId, overwriteId, reason);
575
586
  },
576
587
  deleteEmoji: async (guildId, id, reason)=>{
577
- return await bot.rest.deleteEmoji(guildId, id, reason);
588
+ return await bot.rest.snake.deleteEmoji(guildId, id, reason);
578
589
  },
579
590
  deleteApplicationEmoji: async (id)=>{
580
- return await bot.rest.deleteApplicationEmoji(id);
591
+ return await bot.rest.snake.deleteApplicationEmoji(id);
581
592
  },
582
593
  deleteFollowupMessage: async (token, messageId)=>{
583
- return await bot.rest.deleteFollowupMessage(token, messageId);
594
+ return await bot.rest.snake.deleteFollowupMessage(token, messageId);
584
595
  },
585
596
  deleteGlobalApplicationCommand: async (commandId)=>{
586
- return await bot.rest.deleteGlobalApplicationCommand(commandId);
597
+ return await bot.rest.snake.deleteGlobalApplicationCommand(commandId);
587
598
  },
588
599
  deleteGuildApplicationCommand: async (commandId, guildId)=>{
589
- return await bot.rest.deleteGuildApplicationCommand(commandId, guildId);
600
+ return await bot.rest.snake.deleteGuildApplicationCommand(commandId, guildId);
590
601
  },
591
602
  deleteGuildSticker: async (guildId, stickerId, reason)=>{
592
- return await bot.rest.deleteGuildSticker(guildId, stickerId, reason);
603
+ return await bot.rest.snake.deleteGuildSticker(guildId, stickerId, reason);
593
604
  },
594
605
  deleteGuildTemplate: async (guildId, templateCode)=>{
595
- return await bot.rest.deleteGuildTemplate(guildId, templateCode);
606
+ return await bot.rest.snake.deleteGuildTemplate(guildId, templateCode);
596
607
  },
597
608
  deleteIntegration: async (guildId, integrationId, reason)=>{
598
- return await bot.rest.deleteIntegration(guildId, integrationId, reason);
609
+ return await bot.rest.snake.deleteIntegration(guildId, integrationId, reason);
599
610
  },
600
611
  deleteInvite: async (inviteCode, reason)=>{
601
- return await bot.rest.deleteInvite(inviteCode, reason);
612
+ return await bot.rest.snake.deleteInvite(inviteCode, reason);
602
613
  },
603
614
  deleteMessage: async (channelId, messageId, reason)=>{
604
- return await bot.rest.deleteMessage(channelId, messageId, reason);
615
+ return await bot.rest.snake.deleteMessage(channelId, messageId, reason);
605
616
  },
606
617
  deleteMessages: async (channelId, messageIds, reason)=>{
607
- return await bot.rest.deleteMessages(channelId, messageIds, reason);
618
+ return await bot.rest.snake.deleteMessages(channelId, messageIds, reason);
608
619
  },
609
620
  deleteOriginalInteractionResponse: async (token)=>{
610
- return await bot.rest.deleteOriginalInteractionResponse(token);
621
+ return await bot.rest.snake.deleteOriginalInteractionResponse(token);
611
622
  },
612
623
  deleteOwnReaction: async (channelId, messageId, reaction)=>{
613
- return await bot.rest.deleteOwnReaction(channelId, messageId, reaction);
624
+ return await bot.rest.snake.deleteOwnReaction(channelId, messageId, reaction);
614
625
  },
615
626
  deleteReactionsAll: async (channelId, messageId)=>{
616
- return await bot.rest.deleteReactionsAll(channelId, messageId);
627
+ return await bot.rest.snake.deleteReactionsAll(channelId, messageId);
617
628
  },
618
629
  deleteReactionsEmoji: async (channelId, messageId, reaction)=>{
619
- return await bot.rest.deleteReactionsEmoji(channelId, messageId, reaction);
630
+ return await bot.rest.snake.deleteReactionsEmoji(channelId, messageId, reaction);
620
631
  },
621
632
  deleteRole: async (guildId, roleId, reason)=>{
622
- return await bot.rest.deleteRole(guildId, roleId, reason);
633
+ return await bot.rest.snake.deleteRole(guildId, roleId, reason);
623
634
  },
624
635
  deleteScheduledEvent: async (guildId, eventId)=>{
625
- return await bot.rest.deleteScheduledEvent(guildId, eventId);
636
+ return await bot.rest.snake.deleteScheduledEvent(guildId, eventId);
626
637
  },
627
638
  deleteStageInstance: async (channelId, reason)=>{
628
- return await bot.rest.deleteStageInstance(channelId, reason);
639
+ return await bot.rest.snake.deleteStageInstance(channelId, reason);
629
640
  },
630
641
  deleteUserReaction: async (channelId, messageId, userId, reaction)=>{
631
- return await bot.rest.deleteUserReaction(channelId, messageId, userId, reaction);
642
+ return await bot.rest.snake.deleteUserReaction(channelId, messageId, userId, reaction);
632
643
  },
633
644
  deleteWebhook: async (webhookId, reason)=>{
634
- return await bot.rest.deleteWebhook(webhookId, reason);
645
+ return await bot.rest.snake.deleteWebhook(webhookId, reason);
635
646
  },
636
647
  deleteWebhookMessage: async (webhookId, token, messageId, options)=>{
637
- return await bot.rest.deleteWebhookMessage(webhookId, token, messageId, options);
648
+ return await bot.rest.snake.deleteWebhookMessage(webhookId, token, messageId, options);
638
649
  },
639
650
  deleteWebhookWithToken: async (webhookId, token)=>{
640
- return await bot.rest.deleteWebhookWithToken(webhookId, token);
651
+ return await bot.rest.snake.deleteWebhookWithToken(webhookId, token);
641
652
  },
642
653
  editChannelPermissionOverrides: async (channelId, options, reason)=>{
643
- return await bot.rest.editChannelPermissionOverrides(channelId, options, reason);
654
+ return await bot.rest.snake.editChannelPermissionOverrides(channelId, options, reason);
644
655
  },
645
656
  editChannelPositions: async (guildId, channelPositions)=>{
646
- return await bot.rest.editChannelPositions(guildId, channelPositions);
657
+ return await bot.rest.snake.editChannelPositions(guildId, channelPositions);
647
658
  },
648
659
  editOwnVoiceState: async (guildId, options)=>{
649
- return await bot.rest.editOwnVoiceState(guildId, options);
660
+ return await bot.rest.snake.editOwnVoiceState(guildId, options);
650
661
  },
651
662
  editUserVoiceState: async (guildId, options)=>{
652
- return await bot.rest.editUserVoiceState(guildId, options);
663
+ return await bot.rest.snake.editUserVoiceState(guildId, options);
653
664
  },
654
665
  editUserApplicationRoleConnection: async (bearerToken, applicationId, options)=>{
655
666
  return await bot.rest.editUserApplicationRoleConnection(bearerToken, applicationId, options);
656
667
  },
657
668
  deleteCurrentUserApplicationRoleConnection: async (bearerToken, applicationId)=>{
658
- return await bot.rest.deleteCurrentUserApplicationRoleConnection(bearerToken, applicationId);
669
+ return await bot.rest.snake.deleteCurrentUserApplicationRoleConnection(bearerToken, applicationId);
659
670
  },
660
671
  joinThread: async (channelId)=>{
661
- return await bot.rest.joinThread(channelId);
672
+ return await bot.rest.snake.joinThread(channelId);
662
673
  },
663
674
  leaveGuild: async (guildId)=>{
664
- return await bot.rest.leaveGuild(guildId);
675
+ return await bot.rest.snake.leaveGuild(guildId);
665
676
  },
666
677
  leaveThread: async (channelId)=>{
667
- return await bot.rest.leaveThread(channelId);
678
+ return await bot.rest.snake.leaveThread(channelId);
668
679
  },
669
680
  removeRole: async (guildId, userId, roleId, reason)=>{
670
- return await bot.rest.removeRole(guildId, userId, roleId, reason);
681
+ return await bot.rest.snake.removeRole(guildId, userId, roleId, reason);
671
682
  },
672
683
  removeThreadMember: async (channelId, userId)=>{
673
- return await bot.rest.removeThreadMember(channelId, userId);
684
+ return await bot.rest.snake.removeThreadMember(channelId, userId);
674
685
  },
675
686
  removeDmRecipient: async (channelId, userId)=>{
676
- return await bot.rest.removeDmRecipient(channelId, userId);
687
+ return await bot.rest.snake.removeDmRecipient(channelId, userId);
677
688
  },
678
689
  sendInteractionResponse: async (interactionId, token, options, params)=>{
679
- const response = await bot.rest.sendInteractionResponse(interactionId, token, options, params);
690
+ const response = await bot.rest.snake.sendInteractionResponse(interactionId, token, options, params);
680
691
  if (!response) return;
681
- return bot.transformers.interactionCallbackResponse(bot, snakelize(response));
692
+ return bot.transformers.interactionCallbackResponse(bot, response);
682
693
  },
683
694
  triggerTypingIndicator: async (channelId)=>{
684
- return await bot.rest.triggerTypingIndicator(channelId);
695
+ return await bot.rest.snake.triggerTypingIndicator(channelId);
685
696
  },
686
697
  banMember: async (guildId, userId, options, reason)=>{
687
- return await bot.rest.banMember(guildId, userId, options, reason);
698
+ return await bot.rest.snake.banMember(guildId, userId, options, reason);
688
699
  },
689
700
  kickMember: async (guildId, userId, reason)=>{
690
- return await bot.rest.kickMember(guildId, userId, reason);
701
+ return await bot.rest.snake.kickMember(guildId, userId, reason);
691
702
  },
692
703
  pinMessage: async (channelId, messageId, reason)=>{
693
- return await bot.rest.pinMessage(channelId, messageId, reason);
704
+ return await bot.rest.snake.pinMessage(channelId, messageId, reason);
694
705
  },
695
706
  unbanMember: async (guildId, userId, reason)=>{
696
- return await bot.rest.unbanMember(guildId, userId, reason);
707
+ return await bot.rest.snake.unbanMember(guildId, userId, reason);
697
708
  },
698
709
  unpinMessage: async (channelId, messageId, reason)=>{
699
- return await bot.rest.unpinMessage(channelId, messageId, reason);
710
+ return await bot.rest.snake.unpinMessage(channelId, messageId, reason);
700
711
  },
701
712
  getGuildOnboarding: async (guildId)=>{
702
- return bot.transformers.guildOnboarding(bot, snakelize(await bot.rest.getGuildOnboarding(guildId)));
713
+ return bot.transformers.guildOnboarding(bot, await bot.rest.snake.getGuildOnboarding(guildId));
703
714
  },
704
715
  editGuildOnboarding: async (guildId, options, reason)=>{
705
- return bot.transformers.guildOnboarding(bot, snakelize(await bot.rest.editGuildOnboarding(guildId, options, reason)));
716
+ return bot.transformers.guildOnboarding(bot, await bot.rest.snake.editGuildOnboarding(guildId, options, reason));
717
+ },
718
+ modifyGuildIncidentActions: async (guildId, options)=>{
719
+ return bot.transformers.incidentsData(bot, await bot.rest.snake.modifyGuildIncidentActions(guildId, options));
706
720
  },
707
721
  listEntitlements: async (applicationId, options)=>{
708
- return (await bot.rest.listEntitlements(applicationId, options)).map((entitlement)=>bot.transformers.entitlement(bot, snakelize(entitlement)));
722
+ return (await bot.rest.snake.listEntitlements(applicationId, options)).map((entitlement)=>bot.transformers.entitlement(bot, entitlement));
709
723
  },
710
724
  getEntitlement: async (applicationId, entitlementId)=>{
711
- return bot.transformers.entitlement(bot, snakelize(await bot.rest.getEntitlement(applicationId, entitlementId)));
725
+ return bot.transformers.entitlement(bot, await bot.rest.snake.getEntitlement(applicationId, entitlementId));
712
726
  },
713
727
  createTestEntitlement: async (applicationId, body)=>{
714
- return bot.transformers.entitlement(bot, snakelize(await bot.rest.createTestEntitlement(applicationId, body)), {
728
+ return bot.transformers.entitlement(bot, await bot.rest.snake.createTestEntitlement(applicationId, body), {
715
729
  partial: true
716
730
  });
717
731
  },
718
732
  deleteTestEntitlement: async (applicationId, entitlementId)=>{
719
- await bot.rest.deleteTestEntitlement(applicationId, entitlementId);
733
+ await bot.rest.snake.deleteTestEntitlement(applicationId, entitlementId);
734
+ },
735
+ consumeEntitlement: async (applicationId, entitlementId)=>{
736
+ await bot.rest.snake.consumeEntitlement(applicationId, entitlementId);
720
737
  },
721
738
  listSkus: async (applicationId)=>{
722
- return (await bot.rest.listSkus(applicationId)).map((sku)=>bot.transformers.sku(bot, snakelize(sku)));
739
+ return (await bot.rest.snake.listSkus(applicationId)).map((sku)=>bot.transformers.sku(bot, sku));
723
740
  },
724
741
  getSubscription: async (skuId, subscriptionId)=>{
725
- return bot.transformers.subscription(bot, snakelize(await bot.rest.getSubscription(skuId, subscriptionId)));
742
+ return bot.transformers.subscription(bot, await bot.rest.snake.getSubscription(skuId, subscriptionId));
726
743
  },
727
744
  listSubscriptions: async (skuId, options)=>{
728
- return (await bot.rest.listSubscriptions(skuId, options)).map((subscription)=>bot.transformers.subscription(bot, snakelize(subscription)));
745
+ return (await bot.rest.snake.listSubscriptions(skuId, options)).map((subscription)=>bot.transformers.subscription(bot, subscription));
729
746
  },
730
747
  sendSoundboardSound: async (channelId, options)=>{
731
- await bot.rest.sendSoundboardSound(channelId, options);
748
+ await bot.rest.snake.sendSoundboardSound(channelId, options);
732
749
  },
733
750
  listDefaultSoundboardSounds: async ()=>{
734
- return (await bot.rest.listDefaultSoundboardSounds()).map((sound)=>bot.transformers.soundboardSound(bot, snakelize(sound)));
751
+ return (await bot.rest.snake.listDefaultSoundboardSounds()).map((sound)=>bot.transformers.soundboardSound(bot, sound));
735
752
  },
736
753
  listGuildSoundboardSounds: async (guildId)=>{
737
- const res = await bot.rest.listGuildSoundboardSounds(guildId);
754
+ const res = await bot.rest.snake.listGuildSoundboardSounds(guildId);
738
755
  return {
739
- items: res.items.map((sound)=>bot.transformers.soundboardSound(bot, snakelize(sound)))
756
+ items: res.items.map((sound)=>bot.transformers.soundboardSound(bot, sound))
740
757
  };
741
758
  },
742
759
  getGuildSoundboardSound: async (guildId, soundId)=>{
743
- return bot.transformers.soundboardSound(bot, snakelize(await bot.rest.getGuildSoundboardSound(guildId, soundId)));
760
+ return bot.transformers.soundboardSound(bot, await bot.rest.snake.getGuildSoundboardSound(guildId, soundId));
744
761
  },
745
762
  createGuildSoundboardSound: async (guildId, options, reason)=>{
746
- return bot.transformers.soundboardSound(bot, snakelize(await bot.rest.createGuildSoundboardSound(guildId, options, reason)));
763
+ return bot.transformers.soundboardSound(bot, await bot.rest.snake.createGuildSoundboardSound(guildId, options, reason));
747
764
  },
748
765
  modifyGuildSoundboardSound: async (guildId, soundId, options, reason)=>{
749
- return bot.transformers.soundboardSound(bot, snakelize(await bot.rest.modifyGuildSoundboardSound(guildId, soundId, options, reason)));
766
+ return bot.transformers.soundboardSound(bot, await bot.rest.snake.modifyGuildSoundboardSound(guildId, soundId, options, reason));
750
767
  },
751
768
  deleteGuildSoundboardSound: async (guildId, soundId, reason)=>{
752
- await bot.rest.deleteGuildSoundboardSound(guildId, soundId, reason);
769
+ await bot.rest.snake.deleteGuildSoundboardSound(guildId, soundId, reason);
753
770
  },
754
771
  deleteLobby: async (lobbyId)=>{
755
- await bot.rest.deleteLobby(lobbyId);
772
+ await bot.rest.snake.deleteLobby(lobbyId);
756
773
  },
757
774
  removeMemberFromLobby: async (lobbyId, userId)=>{
758
- await bot.rest.removeMemberFromLobby(lobbyId, userId);
775
+ await bot.rest.snake.removeMemberFromLobby(lobbyId, userId);
759
776
  },
760
777
  leaveLobby: async (lobbyId, bearerToken)=>{
761
- await bot.rest.leaveLobby(lobbyId, bearerToken);
778
+ await bot.rest.snake.leaveLobby(lobbyId, bearerToken);
762
779
  }
763
780
  };
764
781
  }
765
782
 
766
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9oZWxwZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgQWRkRG1SZWNpcGllbnRPcHRpb25zLFxuICBBZGRHdWlsZE1lbWJlck9wdGlvbnMsXG4gIEFkZExvYmJ5TWVtYmVyLFxuICBBdExlYXN0T25lLFxuICBCZWdpbkd1aWxkUHJ1bmUsXG4gIEJpZ1N0cmluZyxcbiAgQnVsa1VwZGF0ZUxvYmJ5TWVtYmVyLFxuICBDYW1lbGl6ZSxcbiAgQ3JlYXRlQXBwbGljYXRpb25Db21tYW5kLFxuICBDcmVhdGVBcHBsaWNhdGlvbkVtb2ppLFxuICBDcmVhdGVBdXRvTW9kZXJhdGlvblJ1bGVPcHRpb25zLFxuICBDcmVhdGVDaGFubmVsSW52aXRlLFxuICBDcmVhdGVGb3J1bVBvc3RXaXRoTWVzc2FnZSxcbiAgQ3JlYXRlR2xvYmFsQXBwbGljYXRpb25Db21tYW5kT3B0aW9ucyxcbiAgQ3JlYXRlR3JvdXBEbU9wdGlvbnMsXG4gIENyZWF0ZUd1aWxkQXBwbGljYXRpb25Db21tYW5kT3B0aW9ucyxcbiAgQ3JlYXRlR3VpbGRCYW4sXG4gIENyZWF0ZUd1aWxkQnVsa0JhbixcbiAgQ3JlYXRlR3VpbGRDaGFubmVsLFxuICBDcmVhdGVHdWlsZEVtb2ppLFxuICBDcmVhdGVHdWlsZFJvbGUsXG4gIENyZWF0ZUd1aWxkU291bmRib2FyZFNvdW5kLFxuICBDcmVhdGVHdWlsZFN0aWNrZXJPcHRpb25zLFxuICBDcmVhdGVMb2JieSxcbiAgQ3JlYXRlTWVzc2FnZU9wdGlvbnMsXG4gIENyZWF0ZU9ySm9pbkxvYmJ5LFxuICBDcmVhdGVTY2hlZHVsZWRFdmVudCxcbiAgQ3JlYXRlU3RhZ2VJbnN0YW5jZSxcbiAgQ3JlYXRlVGVtcGxhdGUsXG4gIENyZWF0ZVRlc3RFbnRpdGxlbWVudCxcbiAgQ3JlYXRlV2ViaG9vayxcbiAgRGVsZXRlV2ViaG9va01lc3NhZ2VPcHRpb25zLFxuICBEaXNjb3JkQWNjZXNzVG9rZW5SZXNwb25zZSxcbiAgRGlzY29yZEFjdGl2aXR5SW5zdGFuY2UsXG4gIERpc2NvcmRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9ucyxcbiAgRGlzY29yZEFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb24sXG4gIERpc2NvcmRBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uTWV0YWRhdGEsXG4gIERpc2NvcmRBdWRpdExvZyxcbiAgRGlzY29yZEJhbixcbiAgRGlzY29yZENvbm5lY3Rpb24sXG4gIERpc2NvcmRDdXJyZW50QXV0aG9yaXphdGlvbixcbiAgRGlzY29yZEZvbGxvd2VkQ2hhbm5lbCxcbiAgRGlzY29yZEd1aWxkUHJldmlldyxcbiAgRGlzY29yZEd1aWxkV2lkZ2V0U2V0dGluZ3MsXG4gIERpc2NvcmRJbnZpdGUsXG4gIERpc2NvcmRMaXN0QXJjaGl2ZWRUaHJlYWRzLFxuICBEaXNjb3JkUHJ1bmVkQ291bnQsXG4gIERpc2NvcmRTZWFyY2hHdWlsZE1lc3NhZ2VzLFxuICBEaXNjb3JkU2VhcmNoR3VpbGRNZXNzYWdlc0luZGV4aW5nLFxuICBEaXNjb3JkVGFyZ2V0VXNlcnNKb2JTdGF0dXMsXG4gIERpc2NvcmRUb2tlbkV4Y2hhbmdlLFxuICBEaXNjb3JkVG9rZW5SZXZvY2F0aW9uLFxuICBEaXNjb3JkVmFuaXR5VXJsLFxuICBFZGl0QXBwbGljYXRpb24sXG4gIEVkaXRBdXRvTW9kZXJhdGlvblJ1bGVPcHRpb25zLFxuICBFZGl0Q2hhbm5lbFBlcm1pc3Npb25PdmVycmlkZXNPcHRpb25zLFxuICBFZGl0R3VpbGRPbmJvYXJkaW5nLFxuICBFZGl0R3VpbGRSb2xlLFxuICBFZGl0R3VpbGRTdGlja2VyT3B0aW9ucyxcbiAgRWRpdE1lc3NhZ2UsXG4gIEVkaXRPd25Wb2ljZVN0YXRlLFxuICBFZGl0U2NoZWR1bGVkRXZlbnQsXG4gIEVkaXRVc2VyVm9pY2VTdGF0ZSxcbiAgRWRpdFdlYmhvb2tNZXNzYWdlT3B0aW9ucyxcbiAgRXhlY3V0ZVdlYmhvb2ssXG4gIEdldEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25PcHRpb25zLFxuICBHZXRCYW5zLFxuICBHZXRDaGFubmVsUGluc09wdGlvbnMsXG4gIEdldEVudGl0bGVtZW50cyxcbiAgR2V0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kc09wdGlvbnMsXG4gIEdldEd1aWxkQXBwbGljYXRpb25Db21tYW5kc09wdGlvbnMsXG4gIEdldEd1aWxkQXVkaXRMb2csXG4gIEdldEd1aWxkUHJ1bmVDb3VudFF1ZXJ5LFxuICBHZXRJbnZpdGUsXG4gIEdldExvYmJ5TWVzc2FnZXMsXG4gIEdldE1lc3NhZ2VzT3B0aW9ucyxcbiAgR2V0UmVhY3Rpb25zLFxuICBHZXRTY2hlZHVsZWRFdmVudHMsXG4gIEdldFNjaGVkdWxlZEV2ZW50VXNlcnMsXG4gIEdldFRocmVhZE1lbWJlcixcbiAgR2V0VXNlckd1aWxkcyxcbiAgR2V0V2ViaG9va01lc3NhZ2VPcHRpb25zLFxuICBJbnRlcmFjdGlvbkNhbGxiYWNrRGF0YSxcbiAgSW50ZXJhY3Rpb25DYWxsYmFja09wdGlvbnMsXG4gIEludGVyYWN0aW9uUmVzcG9uc2UsXG4gIExpbmtDaGFubmVsVG9Mb2JieSxcbiAgTGlzdEFyY2hpdmVkVGhyZWFkcyxcbiAgTGlzdEd1aWxkTWVtYmVycyxcbiAgTGlzdFNrdVN1YnNjcmlwdGlvbnNPcHRpb25zLFxuICBMaXN0VGhyZWFkTWVtYmVycyxcbiAgTW9kaWZ5QXBwbGljYXRpb25FbW9qaSxcbiAgTW9kaWZ5Q2hhbm5lbCxcbiAgTW9kaWZ5Q3VycmVudE1lbWJlcixcbiAgTW9kaWZ5R3VpbGQsXG4gIE1vZGlmeUd1aWxkQ2hhbm5lbFBvc2l0aW9ucyxcbiAgTW9kaWZ5R3VpbGRFbW9qaSxcbiAgTW9kaWZ5R3VpbGRNZW1iZXIsXG4gIE1vZGlmeUd1aWxkU291bmRib2FyZFNvdW5kLFxuICBNb2RpZnlHdWlsZFRlbXBsYXRlLFxuICBNb2RpZnlHdWlsZFdlbGNvbWVTY3JlZW4sXG4gIE1vZGlmeUxvYmJ5LFxuICBNb2RpZnlSb2xlUG9zaXRpb25zLFxuICBNb2RpZnlXZWJob29rLFxuICBTZWFyY2hHdWlsZE1lc3NhZ2VzT3B0aW9ucyxcbiAgU2VhcmNoTWVtYmVycyxcbiAgU2VuZExvYmJ5TWVzc2FnZSxcbiAgU2VuZFNvdW5kYm9hcmRTb3VuZCxcbiAgU3RhcnRUaHJlYWRXaXRoTWVzc2FnZSxcbiAgU3RhcnRUaHJlYWRXaXRob3V0TWVzc2FnZSxcbiAgVXBzZXJ0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kT3B0aW9ucyxcbiAgVXBzZXJ0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25zLFxufSBmcm9tICdAZGlzY29yZGVuby90eXBlcyc7XG5pbXBvcnQgeyBzbmFrZWxpemUgfSBmcm9tICdAZGlzY29yZGVuby91dGlscyc7XG5pbXBvcnQgdHlwZSB7IEJvdCB9IGZyb20gJy4vYm90LmpzJztcbmltcG9ydCB0eXBlIHsgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvciwgU2V0dXBEZXNpcmVkUHJvcHMsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzIH0gZnJvbSAnLi9kZXNpcmVkUHJvcGVydGllcy5qcyc7XG5pbXBvcnQgdHlwZSB7IFRocmVhZE1lbWJlclRyYW5zZm9ybWVyRXh0cmEgfSBmcm9tICcuL3RyYW5zZm9ybWVycy90aHJlYWRNZW1iZXIuanMnO1xuaW1wb3J0IHR5cGUge1xuICBBcHBsaWNhdGlvbixcbiAgQXBwbGljYXRpb25Db21tYW5kLFxuICBBdXRvTW9kZXJhdGlvblJ1bGUsXG4gIENoYW5uZWwsXG4gIEVtb2ppLFxuICBFbnRpdGxlbWVudCxcbiAgR2V0R2F0ZXdheUJvdCxcbiAgR3VpbGQsXG4gIEd1aWxkQXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnMsXG4gIEd1aWxkT25ib2FyZGluZyxcbiAgR3VpbGRXaWRnZXQsXG4gIEd1aWxkV2lkZ2V0U2V0dGluZ3MsXG4gIEludGVncmF0aW9uLFxuICBJbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UsXG4gIEludml0ZSxcbiAgTG9iYnksXG4gIExvYmJ5SW52aXRlLFxuICBMb2JieU1lbWJlcixcbiAgTG9iYnlNZXNzYWdlLFxuICBNZW1iZXIsXG4gIE1lc3NhZ2UsXG4gIE1lc3NhZ2VQaW4sXG4gIFJvbGUsXG4gIFNjaGVkdWxlZEV2ZW50LFxuICBTa3UsXG4gIFNvdW5kYm9hcmRTb3VuZCxcbiAgU3RhZ2VJbnN0YW5jZSxcbiAgU3RpY2tlcixcbiAgU3RpY2tlclBhY2ssXG4gIFN1YnNjcmlwdGlvbixcbiAgVGVtcGxhdGUsXG4gIFRocmVhZE1lbWJlcixcbiAgVXNlcixcbiAgVm9pY2VSZWdpb24sXG4gIFZvaWNlU3RhdGUsXG4gIFdlYmhvb2ssXG4gIFdlbGNvbWVTY3JlZW4sXG59IGZyb20gJy4vdHJhbnNmb3JtZXJzL3R5cGVzLmpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUJvdEhlbHBlcnM8VFByb3BzIGV4dGVuZHMgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIFRCZWhhdmlvciBleHRlbmRzIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+KFxuICBib3Q6IEJvdDxUUHJvcHMsIFRCZWhhdmlvcj4sXG4pOiBCb3RIZWxwZXJzPFRQcm9wcywgVEJlaGF2aW9yPiB7XG4gIHJldHVybiB7XG4gICAgY3JlYXRlQXV0b21vZFJ1bGU6IGFzeW5jIChndWlsZElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmF1dG9tb2RSdWxlKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmNyZWF0ZUF1dG9tb2RSdWxlKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikpKTtcbiAgICB9LFxuICAgIGNyZWF0ZUNoYW5uZWw6IGFzeW5jIChndWlsZElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmNoYW5uZWwoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuY3JlYXRlQ2hhbm5lbChndWlsZElkLCBvcHRpb25zLCByZWFzb24pKSwgeyBndWlsZElkIH0pO1xuICAgIH0sXG4gICAgY3JlYXRlRW1vamk6IGFzeW5jIChndWlsZElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmVtb2ppKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmNyZWF0ZUVtb2ppKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikpKTtcbiAgICB9LFxuICAgIGNyZWF0ZUFwcGxpY2F0aW9uRW1vamk6IGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5lbW9qaShib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5jcmVhdGVBcHBsaWNhdGlvbkVtb2ppKG9wdGlvbnMpKSk7XG4gICAgfSxcbiAgICBjcmVhdGVGb3J1bVRocmVhZDogYXN5bmMgKGNoYW5uZWxJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jaGFubmVsKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmNyZWF0ZUZvcnVtVGhyZWFkKGNoYW5uZWxJZCwgb3B0aW9ucywgcmVhc29uKSkpO1xuICAgIH0sXG4gICAgY3JlYXRlR2xvYmFsQXBwbGljYXRpb25Db21tYW5kOiBhc3luYyAoY29tbWFuZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuYXBwbGljYXRpb25Db21tYW5kKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmNyZWF0ZUdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZChjb21tYW5kLCBvcHRpb25zKSkpO1xuICAgIH0sXG4gICAgY3JlYXRlR3VpbGRBcHBsaWNhdGlvbkNvbW1hbmQ6IGFzeW5jIChjb21tYW5kLCBndWlsZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5hcHBsaWNhdGlvbkNvbW1hbmQoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuY3JlYXRlR3VpbGRBcHBsaWNhdGlvbkNvbW1hbmQoY29tbWFuZCwgZ3VpbGRJZCwgb3B0aW9ucykpKTtcbiAgICB9LFxuICAgIGNyZWF0ZUd1aWxkU3RpY2tlcjogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuc3RpY2tlcihib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5jcmVhdGVHdWlsZFN0aWNrZXIoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSkpO1xuICAgIH0sXG4gICAgY3JlYXRlR3VpbGRUZW1wbGF0ZTogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnRlbXBsYXRlKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmNyZWF0ZUd1aWxkVGVtcGxhdGUoZ3VpbGRJZCwgb3B0aW9ucykpKTtcbiAgICB9LFxuICAgIGNyZWF0ZUludml0ZTogYXN5bmMgKGNoYW5uZWxJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuY3JlYXRlSW52aXRlKGNoYW5uZWxJZCwgb3B0aW9ucywgcmVhc29uKTtcbiAgICB9LFxuICAgIGdldEd1aWxkUm9sZU1lbWJlckNvdW50czogYXN5bmMgKGd1aWxkSWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5nZXRHdWlsZFJvbGVNZW1iZXJDb3VudHMoZ3VpbGRJZCk7XG4gICAgfSxcbiAgICBjcmVhdGVSb2xlOiBhc3luYyAoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5yb2xlKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmNyZWF0ZVJvbGUoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSksIHsgZ3VpbGRJZCB9KTtcbiAgICB9LFxuICAgIGNyZWF0ZVNjaGVkdWxlZEV2ZW50OiBhc3luYyAoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5zY2hlZHVsZWRFdmVudChib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5jcmVhdGVTY2hlZHVsZWRFdmVudChndWlsZElkLCBvcHRpb25zLCByZWFzb24pKSk7XG4gICAgfSxcbiAgICBjcmVhdGVTdGFnZUluc3RhbmNlOiBhc3luYyAob3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5zdGFnZUluc3RhbmNlKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmNyZWF0ZVN0YWdlSW5zdGFuY2Uob3B0aW9ucywgcmVhc29uKSkpO1xuICAgIH0sXG4gICAgY3JlYXRlV2ViaG9vazogYXN5bmMgKGNoYW5uZWxJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy53ZWJob29rKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmNyZWF0ZVdlYmhvb2soY2hhbm5lbElkLCBvcHRpb25zLCByZWFzb24pKSk7XG4gICAgfSxcbiAgICBlZGl0QXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnM6IGFzeW5jIChndWlsZElkLCBjb21tYW5kSWQsIGJlYXJlclRva2VuLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5hcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uKFxuICAgICAgICBib3QsXG4gICAgICAgIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5lZGl0QXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnMoZ3VpbGRJZCwgY29tbWFuZElkLCBiZWFyZXJUb2tlbiwgb3B0aW9ucykpLFxuICAgICAgKTtcbiAgICB9LFxuICAgIGVkaXRBdXRvbW9kUnVsZTogYXN5bmMgKGd1aWxkSWQsIHJ1bGVJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5hdXRvbW9kUnVsZShib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5lZGl0QXV0b21vZFJ1bGUoZ3VpbGRJZCwgcnVsZUlkLCBvcHRpb25zLCByZWFzb24pKSk7XG4gICAgfSxcbiAgICBlZGl0Qm90UHJvZmlsZTogYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnVzZXIoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZWRpdEJvdFByb2ZpbGUob3B0aW9ucykpKTtcbiAgICB9LFxuICAgIGVkaXRDaGFubmVsOiBhc3luYyAoY2hhbm5lbElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmNoYW5uZWwoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZWRpdENoYW5uZWwoY2hhbm5lbElkLCBvcHRpb25zLCByZWFzb24pKSk7XG4gICAgfSxcbiAgICBlZGl0RW1vamk6IGFzeW5jIChndWlsZElkLCBpZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5lbW9qaShib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5lZGl0RW1vamkoZ3VpbGRJZCwgaWQsIG9wdGlvbnMsIHJlYXNvbikpKTtcbiAgICB9LFxuICAgIGVkaXRBcHBsaWNhdGlvbkVtb2ppOiBhc3luYyAoaWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmVtb2ppKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmVkaXRBcHBsaWNhdGlvbkVtb2ppKGlkLCBvcHRpb25zKSkpO1xuICAgIH0sXG4gICAgZWRpdEZvbGxvd3VwTWVzc2FnZTogYXN5bmMgKHRva2VuLCBtZXNzYWdlSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLm1lc3NhZ2UoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZWRpdEZvbGxvd3VwTWVzc2FnZSh0b2tlbiwgbWVzc2FnZUlkLCBvcHRpb25zKSkpO1xuICAgIH0sXG4gICAgZWRpdEdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZDogYXN5bmMgKGNvbW1hbmRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuYXBwbGljYXRpb25Db21tYW5kKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmVkaXRHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmQoY29tbWFuZElkLCBvcHRpb25zKSkpO1xuICAgIH0sXG4gICAgZWRpdEd1aWxkOiBhc3luYyAoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5ndWlsZChib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5lZGl0R3VpbGQoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSkpO1xuICAgIH0sXG4gICAgZWRpdEd1aWxkQXBwbGljYXRpb25Db21tYW5kOiBhc3luYyAoY29tbWFuZElkLCBndWlsZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5hcHBsaWNhdGlvbkNvbW1hbmQoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZWRpdEd1aWxkQXBwbGljYXRpb25Db21tYW5kKGNvbW1hbmRJZCwgZ3VpbGRJZCwgb3B0aW9ucykpKTtcbiAgICB9LFxuICAgIGVkaXRHdWlsZFN0aWNrZXI6IGFzeW5jIChndWlsZElkLCBzdGlja2VySWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuc3RpY2tlcihib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5lZGl0R3VpbGRTdGlja2VyKGd1aWxkSWQsIHN0aWNrZXJJZCwgb3B0aW9ucywgcmVhc29uKSkpO1xuICAgIH0sXG4gICAgZWRpdEd1aWxkVGVtcGxhdGU6IGFzeW5jIChndWlsZElkLCB0ZW1wbGF0ZUNvZGUsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnRlbXBsYXRlKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmVkaXRHdWlsZFRlbXBsYXRlKGd1aWxkSWQsIHRlbXBsYXRlQ29kZSwgb3B0aW9ucykpKTtcbiAgICB9LFxuICAgIGVkaXRNZXNzYWdlOiBhc3luYyAoY2hhbm5lbElkLCBtZXNzYWdlSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLm1lc3NhZ2UoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZWRpdE1lc3NhZ2UoY2hhbm5lbElkLCBtZXNzYWdlSWQsIG9wdGlvbnMpKSk7XG4gICAgfSxcbiAgICBlZGl0T3JpZ2luYWxJbnRlcmFjdGlvblJlc3BvbnNlOiBhc3luYyAodG9rZW4sIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLm1lc3NhZ2UoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZWRpdE9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZSh0b2tlbiwgb3B0aW9ucykpKTtcbiAgICB9LFxuICAgIGVkaXRSb2xlOiBhc3luYyAoZ3VpbGRJZCwgcm9sZUlkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnJvbGUoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZWRpdFJvbGUoZ3VpbGRJZCwgcm9sZUlkLCBvcHRpb25zLCByZWFzb24pKSwgeyBndWlsZElkIH0pO1xuICAgIH0sXG4gICAgZWRpdFJvbGVQb3NpdGlvbnM6IGFzeW5jIChndWlsZElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZWRpdFJvbGVQb3NpdGlvbnMoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSkubWFwKChyb2xlKSA9PiBib3QudHJhbnNmb3JtZXJzLnJvbGUoYm90LCByb2xlLCB7IGd1aWxkSWQgfSkpO1xuICAgIH0sXG4gICAgZWRpdFNjaGVkdWxlZEV2ZW50OiBhc3luYyAoZ3VpbGRJZCwgZXZlbnRJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5zY2hlZHVsZWRFdmVudChib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5lZGl0U2NoZWR1bGVkRXZlbnQoZ3VpbGRJZCwgZXZlbnRJZCwgb3B0aW9ucywgcmVhc29uKSkpO1xuICAgIH0sXG4gICAgZWRpdFN0YWdlSW5zdGFuY2U6IGFzeW5jIChjaGFubmVsSWQsIHRvcGljLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnN0YWdlSW5zdGFuY2UoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZWRpdFN0YWdlSW5zdGFuY2UoY2hhbm5lbElkLCB0b3BpYywgcmVhc29uKSkpO1xuICAgIH0sXG4gICAgZWRpdFdlYmhvb2s6IGFzeW5jICh3ZWJob29rSWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMud2ViaG9vayhib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5lZGl0V2ViaG9vayh3ZWJob29rSWQsIG9wdGlvbnMsIHJlYXNvbikpKTtcbiAgICB9LFxuICAgIGVkaXRXZWJob29rTWVzc2FnZTogYXN5bmMgKHdlYmhvb2tJZCwgdG9rZW4sIG1lc3NhZ2VJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5lZGl0V2ViaG9va01lc3NhZ2Uod2ViaG9va0lkLCB0b2tlbiwgbWVzc2FnZUlkLCBvcHRpb25zKSkpO1xuICAgIH0sXG4gICAgZWRpdFdlYmhvb2tXaXRoVG9rZW46IGFzeW5jICh3ZWJob29rSWQsIHRva2VuLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy53ZWJob29rKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmVkaXRXZWJob29rV2l0aFRva2VuKHdlYmhvb2tJZCwgdG9rZW4sIG9wdGlvbnMpKSk7XG4gICAgfSxcbiAgICBlZGl0V2VsY29tZVNjcmVlbjogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMud2VsY29tZVNjcmVlbihib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5lZGl0V2VsY29tZVNjcmVlbihndWlsZElkLCBvcHRpb25zLCByZWFzb24pKSk7XG4gICAgfSxcbiAgICBlZGl0V2lkZ2V0U2V0dGluZ3M6IGFzeW5jIChndWlsZElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLndpZGdldFNldHRpbmdzKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmVkaXRXaWRnZXRTZXR0aW5ncyhndWlsZElkLCBvcHRpb25zLCByZWFzb24pKSk7XG4gICAgfSxcbiAgICBleGVjdXRlV2ViaG9vazogYXN5bmMgKHdlYmhvb2tJZCwgdG9rZW4sIG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJvdC5yZXN0LmV4ZWN1dGVXZWJob29rKHdlYmhvb2tJZCwgdG9rZW4sIG9wdGlvbnMpO1xuICAgICAgaWYgKCFyZXN1bHQpIHJldHVybjtcblxuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIHNuYWtlbGl6ZShyZXN1bHQpKTtcbiAgICB9LFxuICAgIGZvbGxvd0Fubm91bmNlbWVudDogYXN5bmMgKHNvdXJjZUNoYW5uZWxJZCwgdGFyZ2V0Q2hhbm5lbElkKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZm9sbG93QW5ub3VuY2VtZW50KHNvdXJjZUNoYW5uZWxJZCwgdGFyZ2V0Q2hhbm5lbElkKTtcbiAgICB9LFxuICAgIGdldEFjdGl2ZVRocmVhZHM6IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBib3QucmVzdC5nZXRBY3RpdmVUaHJlYWRzKGd1aWxkSWQpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGhyZWFkczogcmVzdWx0LnRocmVhZHMubWFwKCh0aHJlYWQpID0+IGJvdC50cmFuc2Zvcm1lcnMuY2hhbm5lbChib3QsIHNuYWtlbGl6ZSh0aHJlYWQpLCB7IGd1aWxkSWQgfSkpLFxuICAgICAgICBtZW1iZXJzOiByZXN1bHQubWVtYmVycy5tYXAoKG1lbWJlcikgPT4gYm90LnRyYW5zZm9ybWVycy50aHJlYWRNZW1iZXIoYm90LCBzbmFrZWxpemUobWVtYmVyKSwgeyBndWlsZElkIH0pKSxcbiAgICAgIH07XG4gICAgfSxcbiAgICBnZXRBcHBsaWNhdGlvbkluZm86IGFzeW5jICgpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmFwcGxpY2F0aW9uKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmdldEFwcGxpY2F0aW9uSW5mbygpKSk7XG4gICAgfSxcbiAgICBlZGl0QXBwbGljYXRpb25JbmZvOiBhc3luYyAoYm9keSkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuYXBwbGljYXRpb24oYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZWRpdEFwcGxpY2F0aW9uSW5mbyhib2R5KSkpO1xuICAgIH0sXG4gICAgZ2V0Q3VycmVudEF1dGhlbnRpY2F0aW9uSW5mbzogYXN5bmMgKGJlYXJlclRva2VuKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZ2V0Q3VycmVudEF1dGhlbnRpY2F0aW9uSW5mbyhiZWFyZXJUb2tlbik7XG4gICAgfSxcbiAgICBleGNoYW5nZVRva2VuOiBhc3luYyAoY2xpZW50SWQsIGNsaWVudFNlY3JldCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmV4Y2hhbmdlVG9rZW4oY2xpZW50SWQsIGNsaWVudFNlY3JldCwgb3B0aW9ucyk7XG4gICAgfSxcbiAgICByZXZva2VUb2tlbjogYXN5bmMgKGNsaWVudElkLCBjbGllbnRTZWNyZXQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5yZXZva2VUb2tlbihjbGllbnRJZCwgY2xpZW50U2VjcmV0LCBvcHRpb25zKTtcbiAgICB9LFxuICAgIGdldEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb246IGFzeW5jIChndWlsZElkLCBjb21tYW5kSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGJvdC5yZXN0LmdldEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb24oZ3VpbGRJZCwgY29tbWFuZElkLCBvcHRpb25zKTtcbiAgICAgIGNvbnN0IHNuYWtlZFJlcyA9IHNuYWtlbGl6ZShyZXMpO1xuXG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5hcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uKGJvdCwgc25ha2VkUmVzKTtcbiAgICB9LFxuICAgIGdldEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zOiBhc3luYyAoZ3VpbGRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5nZXRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9ucyhndWlsZElkLCBvcHRpb25zKSkubWFwKChyZXMpID0+XG4gICAgICAgIGJvdC50cmFuc2Zvcm1lcnMuYXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbihib3QsIHNuYWtlbGl6ZShyZXMpKSxcbiAgICAgICk7XG4gICAgfSxcbiAgICBnZXRBdWRpdExvZzogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5nZXRBdWRpdExvZyhndWlsZElkLCBvcHRpb25zKTtcbiAgICB9LFxuICAgIGdldEF1dG9tb2RSdWxlOiBhc3luYyAoZ3VpbGRJZCwgcnVsZUlkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5hdXRvbW9kUnVsZShib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRBdXRvbW9kUnVsZShndWlsZElkLCBydWxlSWQpKSk7XG4gICAgfSxcbiAgICBnZXRBdXRvbW9kUnVsZXM6IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LmdldEF1dG9tb2RSdWxlcyhndWlsZElkKSkubWFwKChyZXMpID0+IGJvdC50cmFuc2Zvcm1lcnMuYXV0b21vZFJ1bGUoYm90LCBzbmFrZWxpemUocmVzKSkpO1xuICAgIH0sXG4gICAgZ2V0QXZhaWxhYmxlVm9pY2VSZWdpb25zOiBhc3luYyAoKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LmdldEF2YWlsYWJsZVZvaWNlUmVnaW9ucygpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy52b2ljZVJlZ2lvbihib3QsIHNuYWtlbGl6ZShyZXMpKSk7XG4gICAgfSxcbiAgICBnZXRCYW46IGFzeW5jIChndWlsZElkLCB1c2VySWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5nZXRCYW4oZ3VpbGRJZCwgdXNlcklkKTtcbiAgICB9LFxuICAgIGdldEJhbnM6IGFzeW5jIChndWlsZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZ2V0QmFucyhndWlsZElkLCBvcHRpb25zKTtcbiAgICB9LFxuICAgIGdldENoYW5uZWw6IGFzeW5jIChjaGFubmVsSWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmNoYW5uZWwoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0Q2hhbm5lbChjaGFubmVsSWQpKSk7XG4gICAgfSxcbiAgICBnZXRDaGFubmVsSW52aXRlczogYXN5bmMgKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5nZXRDaGFubmVsSW52aXRlcyhjaGFubmVsSWQpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy5pbnZpdGUoYm90LCBzbmFrZWxpemUocmVzKSkpO1xuICAgIH0sXG4gICAgZ2V0Q2hhbm5lbHM6IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LmdldENoYW5uZWxzKGd1aWxkSWQpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy5jaGFubmVsKGJvdCwgc25ha2VsaXplKHJlcyksIHsgZ3VpbGRJZCB9KSk7XG4gICAgfSxcbiAgICBnZXRDaGFubmVsV2ViaG9va3M6IGFzeW5jIChjaGFubmVsSWQpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3QuZ2V0Q2hhbm5lbFdlYmhvb2tzKGNoYW5uZWxJZCkpLm1hcCgocmVzKSA9PiBib3QudHJhbnNmb3JtZXJzLndlYmhvb2soYm90LCBzbmFrZWxpemUocmVzKSkpO1xuICAgIH0sXG4gICAgZ2V0RG1DaGFubmVsOiBhc3luYyAodXNlcklkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jaGFubmVsKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmdldERtQ2hhbm5lbCh1c2VySWQpKSk7XG4gICAgfSxcbiAgICBnZXRHcm91cERtQ2hhbm5lbDogYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmNoYW5uZWwoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0R3JvdXBEbUNoYW5uZWwob3B0aW9ucykpKTtcbiAgICB9LFxuICAgIGdldEVtb2ppOiBhc3luYyAoZ3VpbGRJZCwgZW1vamlJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuZW1vamkoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0RW1vamkoZ3VpbGRJZCwgZW1vamlJZCkpKTtcbiAgICB9LFxuICAgIGdldEFwcGxpY2F0aW9uRW1vamk6IGFzeW5jIChlbW9qaUlkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5lbW9qaShib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRBcHBsaWNhdGlvbkVtb2ppKGVtb2ppSWQpKSk7XG4gICAgfSxcbiAgICBnZXRFbW9qaXM6IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LmdldEVtb2ppcyhndWlsZElkKSkubWFwKChyZXMpID0+IGJvdC50cmFuc2Zvcm1lcnMuZW1vamkoYm90LCBzbmFrZWxpemUocmVzKSkpO1xuICAgIH0sXG4gICAgZ2V0QXBwbGljYXRpb25FbW9qaXM6IGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGJvdC5yZXN0LmdldEFwcGxpY2F0aW9uRW1vamlzKCk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGl0ZW1zOiByZXMuaXRlbXMubWFwKChpdGVtKSA9PiBib3QudHJhbnNmb3JtZXJzLmVtb2ppKGJvdCwgc25ha2VsaXplKGl0ZW0pKSksXG4gICAgICB9O1xuICAgIH0sXG4gICAgZ2V0Rm9sbG93dXBNZXNzYWdlOiBhc3luYyAodG9rZW4sIG1lc3NhZ2VJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRGb2xsb3d1cE1lc3NhZ2UodG9rZW4sIG1lc3NhZ2VJZCkpKTtcbiAgICB9LFxuICAgIGdldEdhdGV3YXlCb3Q6IGFzeW5jICgpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmdhdGV3YXlCb3QoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0R2F0ZXdheUJvdCgpKSk7XG4gICAgfSxcbiAgICBnZXRHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmQ6IGFzeW5jIChjb21tYW5kSWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmFwcGxpY2F0aW9uQ29tbWFuZChib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmQoY29tbWFuZElkKSkpO1xuICAgIH0sXG4gICAgZ2V0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kczogYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3QuZ2V0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kcyhvcHRpb25zKSkubWFwKChyZXMpID0+IGJvdC50cmFuc2Zvcm1lcnMuYXBwbGljYXRpb25Db21tYW5kKGJvdCwgc25ha2VsaXplKHJlcykpKTtcbiAgICB9LFxuICAgIGdldEd1aWxkOiBhc3luYyAoZ3VpbGRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuZ3VpbGQoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0R3VpbGQoZ3VpbGRJZCwgb3B0aW9ucykpKTtcbiAgICB9LFxuICAgIGdldEd1aWxkczogYXN5bmMgKGJlYXJlclRva2VuLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LmdldEd1aWxkcyhiZWFyZXJUb2tlbiwgb3B0aW9ucykpLm1hcCgocmVzKSA9PiBib3QudHJhbnNmb3JtZXJzLmd1aWxkKGJvdCwgc25ha2VsaXplKHJlcyksIHsgcGFydGlhbDogdHJ1ZSB9KSk7XG4gICAgfSxcbiAgICBnZXRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZDogYXN5bmMgKGNvbW1hbmRJZCwgZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuYXBwbGljYXRpb25Db21tYW5kKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmdldEd1aWxkQXBwbGljYXRpb25Db21tYW5kKGNvbW1hbmRJZCwgZ3VpbGRJZCkpKTtcbiAgICB9LFxuICAgIGdldEd1aWxkQXBwbGljYXRpb25Db21tYW5kczogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3QuZ2V0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRzKGd1aWxkSWQsIG9wdGlvbnMpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy5hcHBsaWNhdGlvbkNvbW1hbmQoYm90LCBzbmFrZWxpemUocmVzKSkpO1xuICAgIH0sXG4gICAgZ2V0R3VpbGRQcmV2aWV3OiBhc3luYyAoZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmdldEd1aWxkUHJldmlldyhndWlsZElkKTtcbiAgICAgIC8vIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnh4eChib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRHdWlsZFByZXZpZXcoZ3VpbGRJZCkpKVxuICAgIH0sXG4gICAgZ2V0R3VpbGRTdGlja2VyOiBhc3luYyAoZ3VpbGRJZCwgc3RpY2tlcklkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5zdGlja2VyKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmdldEd1aWxkU3RpY2tlcihndWlsZElkLCBzdGlja2VySWQpKSk7XG4gICAgfSxcbiAgICBnZXRHdWlsZFN0aWNrZXJzOiBhc3luYyAoZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5nZXRHdWlsZFN0aWNrZXJzKGd1aWxkSWQpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy5zdGlja2VyKGJvdCwgc25ha2VsaXplKHJlcykpKTtcbiAgICB9LFxuICAgIGdldEd1aWxkVGVtcGxhdGU6IGFzeW5jICh0ZW1wbGF0ZUNvZGUpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnRlbXBsYXRlKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmdldEd1aWxkVGVtcGxhdGUodGVtcGxhdGVDb2RlKSkpO1xuICAgIH0sXG4gICAgZ2V0R3VpbGRUZW1wbGF0ZXM6IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LmdldEd1aWxkVGVtcGxhdGVzKGd1aWxkSWQpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy50ZW1wbGF0ZShib3QsIHNuYWtlbGl6ZShyZXMpKSk7XG4gICAgfSxcbiAgICBnZXRHdWlsZFdlYmhvb2tzOiBhc3luYyAoZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5nZXRHdWlsZFdlYmhvb2tzKGd1aWxkSWQpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy53ZWJob29rKGJvdCwgc25ha2VsaXplKHJlcykpKTtcbiAgICB9LFxuICAgIGdldEludGVncmF0aW9uczogYXN5bmMgKGd1aWxkSWQpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3QuZ2V0SW50ZWdyYXRpb25zKGd1aWxkSWQpKS5tYXAoKHJlcykgPT5cbiAgICAgICAgYm90LnRyYW5zZm9ybWVycy5pbnRlZ3JhdGlvbihib3QsIHNuYWtlbGl6ZSh7IC4uLnJlcywgZ3VpbGRJZDogZ3VpbGRJZC50b1N0cmluZygpIH0pKSxcbiAgICAgICk7XG4gICAgfSxcbiAgICBnZXRJbnZpdGU6IGFzeW5jIChpbnZpdGVDb2RlLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5pbnZpdGUoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0SW52aXRlKGludml0ZUNvZGUsIG9wdGlvbnMpKSk7XG4gICAgfSxcbiAgICBnZXRJbnZpdGVzOiBhc3luYyAoZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5nZXRJbnZpdGVzKGd1aWxkSWQpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy5pbnZpdGUoYm90LCBzbmFrZWxpemUocmVzKSkpO1xuICAgIH0sXG4gICAgZ2V0TWVzc2FnZTogYXN5bmMgKGNoYW5uZWxJZCwgbWVzc2FnZUlkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5tZXNzYWdlKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmdldE1lc3NhZ2UoY2hhbm5lbElkLCBtZXNzYWdlSWQpKSk7XG4gICAgfSxcbiAgICBnZXRNZXNzYWdlczogYXN5bmMgKGNoYW5uZWxJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5nZXRNZXNzYWdlcyhjaGFubmVsSWQsIG9wdGlvbnMpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy5tZXNzYWdlKGJvdCwgc25ha2VsaXplKHJlcykpKTtcbiAgICB9LFxuICAgIGdldFN0aWNrZXJQYWNrOiBhc3luYyAoc3RpY2tlclBhY2tJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuc3RpY2tlclBhY2soYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0U3RpY2tlclBhY2soc3RpY2tlclBhY2tJZCkpKTtcbiAgICB9LFxuICAgIGdldFN0aWNrZXJQYWNrczogYXN5bmMgKCkgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5nZXRTdGlja2VyUGFja3MoKSkubWFwKChyZXMpID0+IGJvdC50cmFuc2Zvcm1lcnMuc3RpY2tlclBhY2soYm90LCBzbmFrZWxpemUocmVzKSkpO1xuICAgIH0sXG4gICAgZ2V0T3JpZ2luYWxJbnRlcmFjdGlvblJlc3BvbnNlOiBhc3luYyAodG9rZW4pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLm1lc3NhZ2UoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0T3JpZ2luYWxJbnRlcmFjdGlvblJlc3BvbnNlKHRva2VuKSkpO1xuICAgIH0sXG4gICAgZ2V0Q2hhbm5lbFBpbnM6IGFzeW5jIChjaGFubmVsSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IHJlcyA9IHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRDaGFubmVsUGlucyhjaGFubmVsSWQsIG9wdGlvbnMpKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaGFzTW9yZTogcmVzLmhhc19tb3JlLFxuICAgICAgICBpdGVtczogcmVzLml0ZW1zLm1hcCgoaXRlbSkgPT4gYm90LnRyYW5zZm9ybWVycy5tZXNzYWdlUGluKGJvdCwgaXRlbSkpLFxuICAgICAgfTtcbiAgICB9LFxuICAgIGdldFBpbm5lZE1lc3NhZ2VzOiBhc3luYyAoY2hhbm5lbElkKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LmdldFBpbm5lZE1lc3NhZ2VzKGNoYW5uZWxJZCkpLm1hcCgocmVzKSA9PiBib3QudHJhbnNmb3JtZXJzLm1lc3NhZ2UoYm90LCBzbmFrZWxpemUocmVzKSkpO1xuICAgIH0sXG4gICAgZ2V0UHJpdmF0ZUFyY2hpdmVkVGhyZWFkczogYXN5bmMgKGNoYW5uZWxJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmdldFByaXZhdGVBcmNoaXZlZFRocmVhZHMoY2hhbm5lbElkLCBvcHRpb25zKTtcbiAgICB9LFxuICAgIGdldFByaXZhdGVKb2luZWRBcmNoaXZlZFRocmVhZHM6IGFzeW5jIChjaGFubmVsSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5nZXRQcml2YXRlSm9pbmVkQXJjaGl2ZWRUaHJlYWRzKGNoYW5uZWxJZCwgb3B0aW9ucyk7XG4gICAgfSxcbiAgICBnZXRQcnVuZUNvdW50OiBhc3luYyAoZ3VpbGRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmdldFBydW5lQ291bnQoZ3VpbGRJZCwgb3B0aW9ucyk7XG4gICAgfSxcbiAgICBnZXRQdWJsaWNBcmNoaXZlZFRocmVhZHM6IGFzeW5jIChjaGFubmVsSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5nZXRQdWJsaWNBcmNoaXZlZFRocmVhZHMoY2hhbm5lbElkLCBvcHRpb25zKTtcbiAgICB9LFxuICAgIGdldFJvbGVzOiBhc3luYyAoZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRSb2xlcyhndWlsZElkKSkubWFwKChyb2xlKSA9PiBib3QudHJhbnNmb3JtZXJzLnJvbGUoYm90LCByb2xlLCB7IGd1aWxkSWQgfSkpO1xuICAgIH0sXG4gICAgZ2V0Um9sZTogYXN5bmMgKGd1aWxkSWQsIHJvbGVJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMucm9sZShib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRSb2xlKGd1aWxkSWQsIHJvbGVJZCkpLCB7IGd1aWxkSWQgfSk7XG4gICAgfSxcbiAgICBnZXRTY2hlZHVsZWRFdmVudDogYXN5bmMgKGd1aWxkSWQsIGV2ZW50SWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnNjaGVkdWxlZEV2ZW50KGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmdldFNjaGVkdWxlZEV2ZW50KGd1aWxkSWQsIGV2ZW50SWQsIG9wdGlvbnMpKSk7XG4gICAgfSxcbiAgICBnZXRTY2hlZHVsZWRFdmVudHM6IGFzeW5jIChndWlsZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LmdldFNjaGVkdWxlZEV2ZW50cyhndWlsZElkLCBvcHRpb25zKSkubWFwKChyZXMpID0+IGJvdC50cmFuc2Zvcm1lcnMuc2NoZWR1bGVkRXZlbnQoYm90LCBzbmFrZWxpemUocmVzKSkpO1xuICAgIH0sXG4gICAgZ2V0U2NoZWR1bGVkRXZlbnRVc2VyczogYXN5bmMgKGd1aWxkSWQsIGV2ZW50SWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3QuZ2V0U2NoZWR1bGVkRXZlbnRVc2VycyhndWlsZElkLCBldmVudElkLCBvcHRpb25zKSkubWFwKCh1KSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdXNlcjogYm90LnRyYW5zZm9ybWVycy51c2VyKGJvdCwgc25ha2VsaXplKHUudXNlcikpLFxuICAgICAgICAgIG1lbWJlcjogdS5tZW1iZXIgJiYgYm90LnRyYW5zZm9ybWVycy5tZW1iZXIoYm90LCBzbmFrZWxpemUodS5tZW1iZXIpLCB7IGd1aWxkSWQsIHVzZXJJZDogYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UodS51c2VyLmlkKSB9KSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgZ2V0U2Vzc2lvbkluZm86IGFzeW5jICgpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmdhdGV3YXlCb3QoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0U2Vzc2lvbkluZm8oKSkpO1xuICAgIH0sXG4gICAgZ2V0U3RhZ2VJbnN0YW5jZTogYXN5bmMgKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuc3RhZ2VJbnN0YW5jZShib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRTdGFnZUluc3RhbmNlKGNoYW5uZWxJZCkpKTtcbiAgICB9LFxuICAgIGdldE93blZvaWNlU3RhdGU6IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy52b2ljZVN0YXRlKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmdldE93blZvaWNlU3RhdGUoZ3VpbGRJZCkpLCB7IGd1aWxkSWQgfSk7XG4gICAgfSxcbiAgICBnZXRVc2VyVm9pY2VTdGF0ZTogYXN5bmMgKGd1aWxkSWQsIHVzZXJJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMudm9pY2VTdGF0ZShib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRVc2VyVm9pY2VTdGF0ZShndWlsZElkLCB1c2VySWQpKSwgeyBndWlsZElkIH0pO1xuICAgIH0sXG4gICAgZ2V0U3RpY2tlcjogYXN5bmMgKHN0aWNrZXJJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuc3RpY2tlcihib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRTdGlja2VyKHN0aWNrZXJJZCkpKTtcbiAgICB9LFxuICAgIGdldFRocmVhZE1lbWJlcjogYXN5bmMgKGNoYW5uZWxJZCwgdXNlcklkLCBvcHRpb25zLCBleHRyYSkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMudGhyZWFkTWVtYmVyKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmdldFRocmVhZE1lbWJlcihjaGFubmVsSWQsIHVzZXJJZCwgb3B0aW9ucykpLCBleHRyYSk7XG4gICAgfSxcbiAgICBnZXRUaHJlYWRNZW1iZXJzOiBhc3luYyAoY2hhbm5lbElkLCBvcHRpb25zLCBleHRyYSkgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5nZXRUaHJlYWRNZW1iZXJzKGNoYW5uZWxJZCwgb3B0aW9ucykpLm1hcCgocmVzKSA9PiBib3QudHJhbnNmb3JtZXJzLnRocmVhZE1lbWJlcihib3QsIHNuYWtlbGl6ZShyZXMpLCBleHRyYSkpO1xuICAgIH0sXG4gICAgZ2V0UmVhY3Rpb25zOiBhc3luYyAoY2hhbm5lbElkLCBtZXNzYWdlSWQsIHJlYWN0aW9uLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LmdldFJlYWN0aW9ucyhjaGFubmVsSWQsIG1lc3NhZ2VJZCwgcmVhY3Rpb24sIG9wdGlvbnMpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy51c2VyKGJvdCwgc25ha2VsaXplKHJlcykpKTtcbiAgICB9LFxuICAgIGdldFVzZXI6IGFzeW5jIChpZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMudXNlcihib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRVc2VyKGlkKSkpO1xuICAgIH0sXG4gICAgZ2V0Q3VycmVudFVzZXI6IGFzeW5jIChiZWFyZXJUb2tlbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMudXNlcihib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRDdXJyZW50VXNlcihiZWFyZXJUb2tlbikpKTtcbiAgICB9LFxuICAgIGdldFVzZXJDb25uZWN0aW9uczogYXN5bmMgKGJlYXJlclRva2VuKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZ2V0VXNlckNvbm5lY3Rpb25zKGJlYXJlclRva2VuKTtcbiAgICB9LFxuICAgIGdldFVzZXJBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uOiBhc3luYyAoYmVhcmVyVG9rZW4sIGFwcGxpY2F0aW9uSWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5nZXRVc2VyQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbihiZWFyZXJUb2tlbiwgYXBwbGljYXRpb25JZCk7XG4gICAgfSxcbiAgICBnZXRWYW5pdHlVcmw6IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZ2V0VmFuaXR5VXJsKGd1aWxkSWQpO1xuICAgIH0sXG4gICAgZ2V0Vm9pY2VSZWdpb25zOiBhc3luYyAoZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5nZXRWb2ljZVJlZ2lvbnMoZ3VpbGRJZCkpLm1hcCgocmVzKSA9PiBib3QudHJhbnNmb3JtZXJzLnZvaWNlUmVnaW9uKGJvdCwgc25ha2VsaXplKHJlcykpKTtcbiAgICB9LFxuICAgIGdldFdlYmhvb2s6IGFzeW5jICh3ZWJob29rSWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLndlYmhvb2soYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0V2ViaG9vayh3ZWJob29rSWQpKSk7XG4gICAgfSxcbiAgICBnZXRXZWJob29rTWVzc2FnZTogYXN5bmMgKHdlYmhvb2tJZCwgdG9rZW4sIG1lc3NhZ2VJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRXZWJob29rTWVzc2FnZSh3ZWJob29rSWQsIHRva2VuLCBtZXNzYWdlSWQsIG9wdGlvbnMpKSk7XG4gICAgfSxcbiAgICBnZXRXZWJob29rV2l0aFRva2VuOiBhc3luYyAod2ViaG9va0lkLCB0b2tlbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMud2ViaG9vayhib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRXZWJob29rV2l0aFRva2VuKHdlYmhvb2tJZCwgdG9rZW4pKSk7XG4gICAgfSxcbiAgICBnZXRXZWxjb21lU2NyZWVuOiBhc3luYyAoZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMud2VsY29tZVNjcmVlbihib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRXZWxjb21lU2NyZWVuKGd1aWxkSWQpKSk7XG4gICAgfSxcbiAgICBnZXRXaWRnZXQ6IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy53aWRnZXQoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0V2lkZ2V0KGd1aWxkSWQpKSk7XG4gICAgfSxcbiAgICBnZXRXaWRnZXRTZXR0aW5nczogYXN5bmMgKGd1aWxkSWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLndpZGdldFNldHRpbmdzKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmdldFdpZGdldFNldHRpbmdzKGd1aWxkSWQpKSk7XG4gICAgfSxcbiAgICBwdWJsaXNoTWVzc2FnZTogYXN5bmMgKGNoYW5uZWxJZCwgbWVzc2FnZUlkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5tZXNzYWdlKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LnB1Ymxpc2hNZXNzYWdlKGNoYW5uZWxJZCwgbWVzc2FnZUlkKSkpO1xuICAgIH0sXG4gICAgc2VhcmNoR3VpbGRNZXNzYWdlczogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJvdC5yZXN0LnNlYXJjaEd1aWxkTWVzc2FnZXMoZ3VpbGRJZCwgb3B0aW9ucyk7XG4gICAgICBpZiAoJ2NvZGUnIGluIHJlc3VsdCkgcmV0dXJuIHJlc3VsdDtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgbWVzc2FnZXM6IHJlc3VsdC5tZXNzYWdlcy5tYXAoKG1lc3NhZ2VzKSA9PiBtZXNzYWdlcy5tYXAoKG1lc3NhZ2UpID0+IGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIHNuYWtlbGl6ZShtZXNzYWdlKSkpKSxcbiAgICAgICAgdGhyZWFkczogcmVzdWx0LnRocmVhZHM/Lm1hcCgodGhyZWFkKSA9PiBib3QudHJhbnNmb3JtZXJzLmNoYW5uZWwoYm90LCBzbmFrZWxpemUodGhyZWFkKSwgeyBndWlsZElkIH0pKSxcbiAgICAgICAgbWVtYmVyczogcmVzdWx0Lm1lbWJlcnM/Lm1hcCgobWVtYmVyKSA9PiBib3QudHJhbnNmb3JtZXJzLnRocmVhZE1lbWJlcihib3QsIHNuYWtlbGl6ZShtZW1iZXIpLCB7IGd1aWxkSWQgfSkpLFxuICAgICAgfTtcbiAgICB9LFxuICAgIHNlbmRNZXNzYWdlOiBhc3luYyAoY2hhbm5lbElkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5tZXNzYWdlKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LnNlbmRNZXNzYWdlKGNoYW5uZWxJZCwgb3B0aW9ucykpKTtcbiAgICB9LFxuICAgIHNlbmRGb2xsb3d1cE1lc3NhZ2U6IGFzeW5jICh0b2tlbiwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5zZW5kRm9sbG93dXBNZXNzYWdlKHRva2VuLCBvcHRpb25zKSkpO1xuICAgIH0sXG4gICAgc3RhcnRUaHJlYWRXaXRoTWVzc2FnZTogYXN5bmMgKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmNoYW5uZWwoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3Quc3RhcnRUaHJlYWRXaXRoTWVzc2FnZShjaGFubmVsSWQsIG1lc3NhZ2VJZCwgb3B0aW9ucywgcmVhc29uKSkpO1xuICAgIH0sXG4gICAgc3RhcnRUaHJlYWRXaXRob3V0TWVzc2FnZTogYXN5bmMgKGNoYW5uZWxJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jaGFubmVsKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LnN0YXJ0VGhyZWFkV2l0aG91dE1lc3NhZ2UoY2hhbm5lbElkLCBvcHRpb25zLCByZWFzb24pKSk7XG4gICAgfSxcbiAgICBzeW5jR3VpbGRUZW1wbGF0ZTogYXN5bmMgKGd1aWxkSWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnRlbXBsYXRlKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LnN5bmNHdWlsZFRlbXBsYXRlKGd1aWxkSWQpKSk7XG4gICAgfSxcbiAgICB1cHNlcnRHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmRzOiBhc3luYyAoY29tbWFuZHMsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3QudXBzZXJ0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kcyhjb21tYW5kcywgb3B0aW9ucykpLm1hcCgocmVzKSA9PlxuICAgICAgICBib3QudHJhbnNmb3JtZXJzLmFwcGxpY2F0aW9uQ29tbWFuZChib3QsIHNuYWtlbGl6ZShyZXMpKSxcbiAgICAgICk7XG4gICAgfSxcbiAgICB1cHNlcnRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZHM6IGFzeW5jIChndWlsZElkLCBjb21tYW5kcywgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC51cHNlcnRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZHMoZ3VpbGRJZCwgY29tbWFuZHMsIG9wdGlvbnMpKS5tYXAoKHJlcykgPT5cbiAgICAgICAgYm90LnRyYW5zZm9ybWVycy5hcHBsaWNhdGlvbkNvbW1hbmQoYm90LCBzbmFrZWxpemUocmVzKSksXG4gICAgICApO1xuICAgIH0sXG4gICAgZWRpdEN1cnJlbnRNZW1iZXI6IGFzeW5jIChndWlsZElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLm1lbWJlcihib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5lZGl0Q3VycmVudE1lbWJlcihndWlsZElkLCBvcHRpb25zLCByZWFzb24pKSwgeyBndWlsZElkLCB1c2VySWQ6IGJvdC5pZCB9KTtcbiAgICB9LFxuICAgIGVkaXRNZW1iZXI6IGFzeW5jIChndWlsZElkLCB1c2VySWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubWVtYmVyKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmVkaXRNZW1iZXIoZ3VpbGRJZCwgdXNlcklkLCBvcHRpb25zLCByZWFzb24pKSwgeyBndWlsZElkLCB1c2VySWQgfSk7XG4gICAgfSxcbiAgICBnZXRDdXJyZW50TWVtYmVyOiBhc3luYyAoZ3VpbGRJZCwgYmVhcmVyVG9rZW4pID0+IHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGJvdC5yZXN0LmdldEN1cnJlbnRNZW1iZXIoZ3VpbGRJZCwgYmVhcmVyVG9rZW4pO1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubWVtYmVyKGJvdCwgc25ha2VsaXplKHJlcyksIHsgZ3VpbGRJZCwgdXNlcklkOiBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShyZXMudXNlci5pZCkgfSk7XG4gICAgfSxcbiAgICBnZXRNZW1iZXI6IGFzeW5jIChndWlsZElkLCB1c2VySWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLm1lbWJlcihib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRNZW1iZXIoZ3VpbGRJZCwgdXNlcklkKSksIHsgZ3VpbGRJZCwgdXNlcklkIH0pO1xuICAgIH0sXG4gICAgZ2V0TWVtYmVyczogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3QuZ2V0TWVtYmVycyhndWlsZElkLCBvcHRpb25zKSkubWFwKChyZXMpID0+XG4gICAgICAgIGJvdC50cmFuc2Zvcm1lcnMubWVtYmVyKGJvdCwgc25ha2VsaXplKHJlcyksIHsgZ3VpbGRJZCwgdXNlcklkOiBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShyZXMudXNlci5pZCkgfSksXG4gICAgICApO1xuICAgIH0sXG4gICAgcHJ1bmVNZW1iZXJzOiBhc3luYyAoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QucHJ1bmVNZW1iZXJzKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbik7XG4gICAgfSxcbiAgICBzZWFyY2hNZW1iZXJzOiBhc3luYyAoZ3VpbGRJZCwgcXVlcnksIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3Quc2VhcmNoTWVtYmVycyhndWlsZElkLCBxdWVyeSwgb3B0aW9ucykpLm1hcCgocmVzKSA9PlxuICAgICAgICBib3QudHJhbnNmb3JtZXJzLm1lbWJlcihib3QsIHNuYWtlbGl6ZShyZXMpLCB7IGd1aWxkSWQsIHVzZXJJZDogYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocmVzLnVzZXIuaWQpIH0pLFxuICAgICAgKTtcbiAgICB9LFxuICAgIGJ1bGtCYW5NZW1iZXJzOiBhc3luYyAoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBib3QucmVzdC5idWxrQmFuTWVtYmVycyhndWlsZElkLCBvcHRpb25zLCByZWFzb24pO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBiYW5uZWRVc2VyczogcmVzLmJhbm5lZFVzZXJzLm1hcCgoeCkgPT4gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UoeCkpLFxuICAgICAgICBmYWlsZWRVc2VyczogcmVzLmZhaWxlZFVzZXJzLm1hcCgoeCkgPT4gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UoeCkpLFxuICAgICAgfTtcbiAgICB9LFxuICAgIGdldEFwcGxpY2F0aW9uQWN0aXZpdHlJbnN0YW5jZTogYXN5bmMgKGFwcGxpY2F0aW9uSWQsIGluc3RhbmNlSWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5nZXRBcHBsaWNhdGlvbkFjdGl2aXR5SW5zdGFuY2UoYXBwbGljYXRpb25JZCwgaW5zdGFuY2VJZCk7XG4gICAgfSxcbiAgICBsaXN0QXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbnNNZXRhZGF0YVJlY29yZHM6IGFzeW5jIChhcHBsaWNhdGlvbklkKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QubGlzdEFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb25zTWV0YWRhdGFSZWNvcmRzKGFwcGxpY2F0aW9uSWQpO1xuICAgIH0sXG4gICAgdXBkYXRlQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbnNNZXRhZGF0YVJlY29yZHM6IGFzeW5jIChhcHBsaWNhdGlvbklkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QudXBkYXRlQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbnNNZXRhZGF0YVJlY29yZHMoYXBwbGljYXRpb25JZCwgb3B0aW9ucyk7XG4gICAgfSxcbiAgICBjcmVhdGVMb2JieTogYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmxvYmJ5KGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmNyZWF0ZUxvYmJ5KG9wdGlvbnMpKSk7XG4gICAgfSxcbiAgICBjcmVhdGVPckpvaW5Mb2JieTogYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmxvYmJ5KGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmNyZWF0ZU9ySm9pbkxvYmJ5KG9wdGlvbnMpKSk7XG4gICAgfSxcbiAgICBnZXRMb2JieTogYXN5bmMgKGxvYmJ5SWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmxvYmJ5KGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmdldExvYmJ5KGxvYmJ5SWQpKSk7XG4gICAgfSxcbiAgICBtb2RpZnlMb2JieTogYXN5bmMgKGxvYmJ5SWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmxvYmJ5KGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0Lm1vZGlmeUxvYmJ5KGxvYmJ5SWQsIG9wdGlvbnMpKSk7XG4gICAgfSxcbiAgICBhZGRNZW1iZXJUb0xvYmJ5OiBhc3luYyAobG9iYnlJZCwgdXNlcklkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5sb2JieU1lbWJlcihib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5hZGRNZW1iZXJUb0xvYmJ5KGxvYmJ5SWQsIHVzZXJJZCwgb3B0aW9ucykpKTtcbiAgICB9LFxuICAgIGJ1bGtVcGRhdGVMb2JieU1lbWJlcnM6IGFzeW5jIChsb2JieUlkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LmJ1bGtVcGRhdGVMb2JieU1lbWJlcnMobG9iYnlJZCwgb3B0aW9ucykpLm1hcCgocmVzKSA9PiBib3QudHJhbnNmb3JtZXJzLmxvYmJ5TWVtYmVyKGJvdCwgc25ha2VsaXplKHJlcykpKTtcbiAgICB9LFxuICAgIGxpbmtDaGFubmVsVG9Mb2JieTogYXN5bmMgKGxvYmJ5SWQsIGJlYXJlclRva2VuLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5sb2JieShib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5saW5rQ2hhbm5lbFRvTG9iYnkobG9iYnlJZCwgYmVhcmVyVG9rZW4sIG9wdGlvbnMpKSk7XG4gICAgfSxcbiAgICB1bmxpbmtDaGFubmVsVG9Mb2JieTogYXN5bmMgKGxvYmJ5SWQsIGJlYXJlclRva2VuKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5sb2JieShib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC51bmxpbmtDaGFubmVsVG9Mb2JieShsb2JieUlkLCBiZWFyZXJUb2tlbikpKTtcbiAgICB9LFxuICAgIHVwZGF0ZUxvYmJ5TWVzc2FnZU1vZGVyYXRpb25NZXRhZGF0YTogYXN5bmMgKGxvYmJ5SWQsIG1lc3NhZ2VJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LnVwZGF0ZUxvYmJ5TWVzc2FnZU1vZGVyYXRpb25NZXRhZGF0YShsb2JieUlkLCBtZXNzYWdlSWQsIG9wdGlvbnMpO1xuICAgIH0sXG4gICAgc2VuZExvYmJ5TWVzc2FnZTogYXN5bmMgKGJlYXJlclRva2VuLCBsb2JieUlkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5sb2JieU1lc3NhZ2UoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3Quc2VuZExvYmJ5TWVzc2FnZShiZWFyZXJUb2tlbiwgbG9iYnlJZCwgb3B0aW9ucykpKTtcbiAgICB9LFxuICAgIGdldExvYmJ5TWVzc2FnZXM6IGFzeW5jIChiZWFyZXJUb2tlbiwgbG9iYnlJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5nZXRMb2JieU1lc3NhZ2VzKGJlYXJlclRva2VuLCBsb2JieUlkLCBvcHRpb25zKSkubWFwKChyZXMpID0+IGJvdC50cmFuc2Zvcm1lcnMubG9iYnlNZXNzYWdlKGJvdCwgc25ha2VsaXplKHJlcykpKTtcbiAgICB9LFxuICAgIGNyZWF0ZUxvYmJ5Q2hhbm5lbEludml0ZUZvclNlbGY6IGFzeW5jIChiZWFyZXJUb2tlbiwgbG9iYnlJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubG9iYnlJbnZpdGUoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuY3JlYXRlTG9iYnlDaGFubmVsSW52aXRlRm9yU2VsZihiZWFyZXJUb2tlbiwgbG9iYnlJZCkpKTtcbiAgICB9LFxuICAgIGNyZWF0ZUxvYmJ5Q2hhbm5lbEludml0ZUZvclVzZXI6IGFzeW5jIChsb2JieUlkLCB1c2VySWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmxvYmJ5SW52aXRlKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmNyZWF0ZUxvYmJ5Q2hhbm5lbEludml0ZUZvclVzZXIobG9iYnlJZCwgdXNlcklkKSkpO1xuICAgIH0sXG4gICAgZ2V0VGFyZ2V0VXNlcnM6IGFzeW5jIChpbnZpdGVDb2RlKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZ2V0VGFyZ2V0VXNlcnMoaW52aXRlQ29kZSk7XG4gICAgfSxcbiAgICB1cGRhdGVUYXJnZXRVc2VyczogYXN5bmMgKGludml0ZUNvZGUsIHRhcmdldFVzZXJzRmlsZSkgPT4ge1xuICAgICAgYXdhaXQgYm90LnJlc3QudXBkYXRlVGFyZ2V0VXNlcnMoaW52aXRlQ29kZSwgdGFyZ2V0VXNlcnNGaWxlKTtcbiAgICB9LFxuICAgIGdldFRhcmdldFVzZXJzSm9iU3RhdHVzOiBhc3luYyAoaW52aXRlQ29kZSkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmdldFRhcmdldFVzZXJzSm9iU3RhdHVzKGludml0ZUNvZGUpO1xuICAgIH0sXG4gICAgLy8gQWxsIHVzZWxlc3Mgdm9pZCByZXR1cm4gZnVuY3Rpb25zIGhlcmVcbiAgICBhZGRSZWFjdGlvbjogYXN5bmMgKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCByZWFjdGlvbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmFkZFJlYWN0aW9uKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCByZWFjdGlvbik7XG4gICAgfSxcbiAgICBhZGRSZWFjdGlvbnM6IGFzeW5jIChjaGFubmVsSWQsIG1lc3NhZ2VJZCwgcmVhY3Rpb25zLCBvcmRlcmVkKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuYWRkUmVhY3Rpb25zKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCByZWFjdGlvbnMsIG9yZGVyZWQpO1xuICAgIH0sXG4gICAgYWRkUm9sZTogYXN5bmMgKGd1aWxkSWQsIHVzZXJJZCwgcm9sZUlkLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5hZGRSb2xlKGd1aWxkSWQsIHVzZXJJZCwgcm9sZUlkLCByZWFzb24pO1xuICAgIH0sXG4gICAgYWRkVGhyZWFkTWVtYmVyOiBhc3luYyAoY2hhbm5lbElkLCB1c2VySWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5hZGRUaHJlYWRNZW1iZXIoY2hhbm5lbElkLCB1c2VySWQpO1xuICAgIH0sXG4gICAgYWRkRG1SZWNpcGllbnQ6IGFzeW5jIChjaGFubmVsSWQsIHVzZXJJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmFkZERtUmVjaXBpZW50KGNoYW5uZWxJZCwgdXNlcklkLCBvcHRpb25zKTtcbiAgICB9LFxuICAgIGFkZEd1aWxkTWVtYmVyOiBhc3luYyAoZ3VpbGRJZCwgdXNlcklkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuYWRkR3VpbGRNZW1iZXIoZ3VpbGRJZCwgdXNlcklkLCBvcHRpb25zKTtcbiAgICB9LFxuICAgIGRlbGV0ZUF1dG9tb2RSdWxlOiBhc3luYyAoZ3VpbGRJZCwgcnVsZUlkLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5kZWxldGVBdXRvbW9kUnVsZShndWlsZElkLCBydWxlSWQsIHJlYXNvbik7XG4gICAgfSxcbiAgICBkZWxldGVDaGFubmVsOiBhc3luYyAoY2hhbm5lbElkLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5kZWxldGVDaGFubmVsKGNoYW5uZWxJZCwgcmVhc29uKTtcbiAgICB9LFxuICAgIGRlbGV0ZUNoYW5uZWxQZXJtaXNzaW9uT3ZlcnJpZGU6IGFzeW5jIChjaGFubmVsSWQsIG92ZXJ3cml0ZUlkLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5kZWxldGVDaGFubmVsUGVybWlzc2lvbk92ZXJyaWRlKGNoYW5uZWxJZCwgb3ZlcndyaXRlSWQsIHJlYXNvbik7XG4gICAgfSxcbiAgICBkZWxldGVFbW9qaTogYXN5bmMgKGd1aWxkSWQsIGlkLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5kZWxldGVFbW9qaShndWlsZElkLCBpZCwgcmVhc29uKTtcbiAgICB9LFxuICAgIGRlbGV0ZUFwcGxpY2F0aW9uRW1vamk6IGFzeW5jIChpZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmRlbGV0ZUFwcGxpY2F0aW9uRW1vamkoaWQpO1xuICAgIH0sXG4gICAgZGVsZXRlRm9sbG93dXBNZXNzYWdlOiBhc3luYyAodG9rZW4sIG1lc3NhZ2VJZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmRlbGV0ZUZvbGxvd3VwTWVzc2FnZSh0b2tlbiwgbWVzc2FnZUlkKTtcbiAgICB9LFxuICAgIGRlbGV0ZUdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZDogYXN5bmMgKGNvbW1hbmRJZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmRlbGV0ZUdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZChjb21tYW5kSWQpO1xuICAgIH0sXG4gICAgZGVsZXRlR3VpbGRBcHBsaWNhdGlvbkNvbW1hbmQ6IGFzeW5jIChjb21tYW5kSWQsIGd1aWxkSWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5kZWxldGVHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZChjb21tYW5kSWQsIGd1aWxkSWQpO1xuICAgIH0sXG4gICAgZGVsZXRlR3VpbGRTdGlja2VyOiBhc3luYyAoZ3VpbGRJZCwgc3RpY2tlcklkLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5kZWxldGVHdWlsZFN0aWNrZXIoZ3VpbGRJZCwgc3RpY2tlcklkLCByZWFzb24pO1xuICAgIH0sXG4gICAgZGVsZXRlR3VpbGRUZW1wbGF0ZTogYXN5bmMgKGd1aWxkSWQsIHRlbXBsYXRlQ29kZSkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmRlbGV0ZUd1aWxkVGVtcGxhdGUoZ3VpbGRJZCwgdGVtcGxhdGVDb2RlKTtcbiAgICB9LFxuICAgIGRlbGV0ZUludGVncmF0aW9uOiBhc3luYyAoZ3VpbGRJZCwgaW50ZWdyYXRpb25JZCwgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZGVsZXRlSW50ZWdyYXRpb24oZ3VpbGRJZCwgaW50ZWdyYXRpb25JZCwgcmVhc29uKTtcbiAgICB9LFxuICAgIGRlbGV0ZUludml0ZTogYXN5bmMgKGludml0ZUNvZGUsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmRlbGV0ZUludml0ZShpbnZpdGVDb2RlLCByZWFzb24pO1xuICAgIH0sXG4gICAgZGVsZXRlTWVzc2FnZTogYXN5bmMgKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5kZWxldGVNZXNzYWdlKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCByZWFzb24pO1xuICAgIH0sXG4gICAgZGVsZXRlTWVzc2FnZXM6IGFzeW5jIChjaGFubmVsSWQsIG1lc3NhZ2VJZHMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmRlbGV0ZU1lc3NhZ2VzKGNoYW5uZWxJZCwgbWVzc2FnZUlkcywgcmVhc29uKTtcbiAgICB9LFxuICAgIGRlbGV0ZU9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZTogYXN5bmMgKHRva2VuKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZGVsZXRlT3JpZ2luYWxJbnRlcmFjdGlvblJlc3BvbnNlKHRva2VuKTtcbiAgICB9LFxuICAgIGRlbGV0ZU93blJlYWN0aW9uOiBhc3luYyAoY2hhbm5lbElkLCBtZXNzYWdlSWQsIHJlYWN0aW9uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZGVsZXRlT3duUmVhY3Rpb24oY2hhbm5lbElkLCBtZXNzYWdlSWQsIHJlYWN0aW9uKTtcbiAgICB9LFxuICAgIGRlbGV0ZVJlYWN0aW9uc0FsbDogYXN5bmMgKGNoYW5uZWxJZCwgbWVzc2FnZUlkKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZGVsZXRlUmVhY3Rpb25zQWxsKGNoYW5uZWxJZCwgbWVzc2FnZUlkKTtcbiAgICB9LFxuICAgIGRlbGV0ZVJlYWN0aW9uc0Vtb2ppOiBhc3luYyAoY2hhbm5lbElkLCBtZXNzYWdlSWQsIHJlYWN0aW9uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZGVsZXRlUmVhY3Rpb25zRW1vamkoY2hhbm5lbElkLCBtZXNzYWdlSWQsIHJlYWN0aW9uKTtcbiAgICB9LFxuICAgIGRlbGV0ZVJvbGU6IGFzeW5jIChndWlsZElkLCByb2xlSWQsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmRlbGV0ZVJvbGUoZ3VpbGRJZCwgcm9sZUlkLCByZWFzb24pO1xuICAgIH0sXG4gICAgZGVsZXRlU2NoZWR1bGVkRXZlbnQ6IGFzeW5jIChndWlsZElkLCBldmVudElkKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZGVsZXRlU2NoZWR1bGVkRXZlbnQoZ3VpbGRJZCwgZXZlbnRJZCk7XG4gICAgfSxcbiAgICBkZWxldGVTdGFnZUluc3RhbmNlOiBhc3luYyAoY2hhbm5lbElkLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5kZWxldGVTdGFnZUluc3RhbmNlKGNoYW5uZWxJZCwgcmVhc29uKTtcbiAgICB9LFxuICAgIGRlbGV0ZVVzZXJSZWFjdGlvbjogYXN5bmMgKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCB1c2VySWQsIHJlYWN0aW9uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZGVsZXRlVXNlclJlYWN0aW9uKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCB1c2VySWQsIHJlYWN0aW9uKTtcbiAgICB9LFxuICAgIGRlbGV0ZVdlYmhvb2s6IGFzeW5jICh3ZWJob29rSWQsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmRlbGV0ZVdlYmhvb2sod2ViaG9va0lkLCByZWFzb24pO1xuICAgIH0sXG4gICAgZGVsZXRlV2ViaG9va01lc3NhZ2U6IGFzeW5jICh3ZWJob29rSWQsIHRva2VuLCBtZXNzYWdlSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5kZWxldGVXZWJob29rTWVzc2FnZSh3ZWJob29rSWQsIHRva2VuLCBtZXNzYWdlSWQsIG9wdGlvbnMpO1xuICAgIH0sXG4gICAgZGVsZXRlV2ViaG9va1dpdGhUb2tlbjogYXN5bmMgKHdlYmhvb2tJZCwgdG9rZW4pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5kZWxldGVXZWJob29rV2l0aFRva2VuKHdlYmhvb2tJZCwgdG9rZW4pO1xuICAgIH0sXG4gICAgZWRpdENoYW5uZWxQZXJtaXNzaW9uT3ZlcnJpZGVzOiBhc3luYyAoY2hhbm5lbElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5lZGl0Q2hhbm5lbFBlcm1pc3Npb25PdmVycmlkZXMoY2hhbm5lbElkLCBvcHRpb25zLCByZWFzb24pO1xuICAgIH0sXG4gICAgZWRpdENoYW5uZWxQb3NpdGlvbnM6IGFzeW5jIChndWlsZElkLCBjaGFubmVsUG9zaXRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZWRpdENoYW5uZWxQb3NpdGlvbnMoZ3VpbGRJZCwgY2hhbm5lbFBvc2l0aW9ucyk7XG4gICAgfSxcbiAgICBlZGl0T3duVm9pY2VTdGF0ZTogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5lZGl0T3duVm9pY2VTdGF0ZShndWlsZElkLCBvcHRpb25zKTtcbiAgICB9LFxuICAgIGVkaXRVc2VyVm9pY2VTdGF0ZTogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5lZGl0VXNlclZvaWNlU3RhdGUoZ3VpbGRJZCwgb3B0aW9ucyk7XG4gICAgfSxcbiAgICBlZGl0VXNlckFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb246IGFzeW5jIChiZWFyZXJUb2tlbiwgYXBwbGljYXRpb25JZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmVkaXRVc2VyQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbihiZWFyZXJUb2tlbiwgYXBwbGljYXRpb25JZCwgb3B0aW9ucyk7XG4gICAgfSxcbiAgICBkZWxldGVDdXJyZW50VXNlckFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb246IGFzeW5jIChiZWFyZXJUb2tlbiwgYXBwbGljYXRpb25JZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmRlbGV0ZUN1cnJlbnRVc2VyQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbihiZWFyZXJUb2tlbiwgYXBwbGljYXRpb25JZCk7XG4gICAgfSxcbiAgICBqb2luVGhyZWFkOiBhc3luYyAoY2hhbm5lbElkKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quam9pblRocmVhZChjaGFubmVsSWQpO1xuICAgIH0sXG4gICAgbGVhdmVHdWlsZDogYXN5bmMgKGd1aWxkSWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5sZWF2ZUd1aWxkKGd1aWxkSWQpO1xuICAgIH0sXG4gICAgbGVhdmVUaHJlYWQ6IGFzeW5jIChjaGFubmVsSWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5sZWF2ZVRocmVhZChjaGFubmVsSWQpO1xuICAgIH0sXG4gICAgcmVtb3ZlUm9sZTogYXN5bmMgKGd1aWxkSWQsIHVzZXJJZCwgcm9sZUlkLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5yZW1vdmVSb2xlKGd1aWxkSWQsIHVzZXJJZCwgcm9sZUlkLCByZWFzb24pO1xuICAgIH0sXG4gICAgcmVtb3ZlVGhyZWFkTWVtYmVyOiBhc3luYyAoY2hhbm5lbElkLCB1c2VySWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5yZW1vdmVUaHJlYWRNZW1iZXIoY2hhbm5lbElkLCB1c2VySWQpO1xuICAgIH0sXG4gICAgcmVtb3ZlRG1SZWNpcGllbnQ6IGFzeW5jIChjaGFubmVsSWQsIHVzZXJJZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LnJlbW92ZURtUmVjaXBpZW50KGNoYW5uZWxJZCwgdXNlcklkKTtcbiAgICB9LFxuICAgIHNlbmRJbnRlcmFjdGlvblJlc3BvbnNlOiBhc3luYyAoaW50ZXJhY3Rpb25JZCwgdG9rZW4sIG9wdGlvbnMsIHBhcmFtcykgPT4ge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBib3QucmVzdC5zZW5kSW50ZXJhY3Rpb25SZXNwb25zZShpbnRlcmFjdGlvbklkLCB0b2tlbiwgb3B0aW9ucywgcGFyYW1zKTtcblxuICAgICAgaWYgKCFyZXNwb25zZSkgcmV0dXJuO1xuXG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5pbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UoYm90LCBzbmFrZWxpemUocmVzcG9uc2UpKTtcbiAgICB9LFxuICAgIHRyaWdnZXJUeXBpbmdJbmRpY2F0b3I6IGFzeW5jIChjaGFubmVsSWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC50cmlnZ2VyVHlwaW5nSW5kaWNhdG9yKGNoYW5uZWxJZCk7XG4gICAgfSxcbiAgICBiYW5NZW1iZXI6IGFzeW5jIChndWlsZElkLCB1c2VySWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmJhbk1lbWJlcihndWlsZElkLCB1c2VySWQsIG9wdGlvbnMsIHJlYXNvbik7XG4gICAgfSxcblxuICAgIGtpY2tNZW1iZXI6IGFzeW5jIChndWlsZElkLCB1c2VySWQsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmtpY2tNZW1iZXIoZ3VpbGRJZCwgdXNlcklkLCByZWFzb24pO1xuICAgIH0sXG4gICAgcGluTWVzc2FnZTogYXN5bmMgKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5waW5NZXNzYWdlKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCByZWFzb24pO1xuICAgIH0sXG4gICAgdW5iYW5NZW1iZXI6IGFzeW5jIChndWlsZElkLCB1c2VySWQsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LnVuYmFuTWVtYmVyKGd1aWxkSWQsIHVzZXJJZCwgcmVhc29uKTtcbiAgICB9LFxuICAgIHVucGluTWVzc2FnZTogYXN5bmMgKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC51bnBpbk1lc3NhZ2UoY2hhbm5lbElkLCBtZXNzYWdlSWQsIHJlYXNvbik7XG4gICAgfSxcbiAgICBnZXRHdWlsZE9uYm9hcmRpbmc6IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5ndWlsZE9uYm9hcmRpbmcoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0R3VpbGRPbmJvYXJkaW5nKGd1aWxkSWQpKSk7XG4gICAgfSxcbiAgICBlZGl0R3VpbGRPbmJvYXJkaW5nOiBhc3luYyAoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5ndWlsZE9uYm9hcmRpbmcoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZWRpdEd1aWxkT25ib2FyZGluZyhndWlsZElkLCBvcHRpb25zLCByZWFzb24pKSk7XG4gICAgfSxcbiAgICBsaXN0RW50aXRsZW1lbnRzOiBhc3luYyAoYXBwbGljYXRpb25JZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5saXN0RW50aXRsZW1lbnRzKGFwcGxpY2F0aW9uSWQsIG9wdGlvbnMpKS5tYXAoKGVudGl0bGVtZW50KSA9PlxuICAgICAgICBib3QudHJhbnNmb3JtZXJzLmVudGl0bGVtZW50KGJvdCwgc25ha2VsaXplKGVudGl0bGVtZW50KSksXG4gICAgICApO1xuICAgIH0sXG4gICAgZ2V0RW50aXRsZW1lbnQ6IGFzeW5jIChhcHBsaWNhdGlvbklkLCBlbnRpdGxlbWVudElkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5lbnRpdGxlbWVudChib3QsIHNuYWtlbGl6ZShhd2FpdCBib3QucmVzdC5nZXRFbnRpdGxlbWVudChhcHBsaWNhdGlvbklkLCBlbnRpdGxlbWVudElkKSkpO1xuICAgIH0sXG4gICAgY3JlYXRlVGVzdEVudGl0bGVtZW50OiBhc3luYyAoYXBwbGljYXRpb25JZCwgYm9keSkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuZW50aXRsZW1lbnQoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuY3JlYXRlVGVzdEVudGl0bGVtZW50KGFwcGxpY2F0aW9uSWQsIGJvZHkpKSwgeyBwYXJ0aWFsOiB0cnVlIH0pO1xuICAgIH0sXG4gICAgZGVsZXRlVGVzdEVudGl0bGVtZW50OiBhc3luYyAoYXBwbGljYXRpb25JZCwgZW50aXRsZW1lbnRJZCkgPT4ge1xuICAgICAgYXdhaXQgYm90LnJlc3QuZGVsZXRlVGVzdEVudGl0bGVtZW50KGFwcGxpY2F0aW9uSWQsIGVudGl0bGVtZW50SWQpO1xuICAgIH0sXG4gICAgbGlzdFNrdXM6IGFzeW5jIChhcHBsaWNhdGlvbklkKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0Lmxpc3RTa3VzKGFwcGxpY2F0aW9uSWQpKS5tYXAoKHNrdSkgPT4gYm90LnRyYW5zZm9ybWVycy5za3UoYm90LCBzbmFrZWxpemUoc2t1KSkpO1xuICAgIH0sXG4gICAgZ2V0U3Vic2NyaXB0aW9uOiBhc3luYyAoc2t1SWQsIHN1YnNjcmlwdGlvbklkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5zdWJzY3JpcHRpb24oYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QuZ2V0U3Vic2NyaXB0aW9uKHNrdUlkLCBzdWJzY3JpcHRpb25JZCkpKTtcbiAgICB9LFxuICAgIGxpc3RTdWJzY3JpcHRpb25zOiBhc3luYyAoc2t1SWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3QubGlzdFN1YnNjcmlwdGlvbnMoc2t1SWQsIG9wdGlvbnMpKS5tYXAoKHN1YnNjcmlwdGlvbikgPT4gYm90LnRyYW5zZm9ybWVycy5zdWJzY3JpcHRpb24oYm90LCBzbmFrZWxpemUoc3Vic2NyaXB0aW9uKSkpO1xuICAgIH0sXG4gICAgc2VuZFNvdW5kYm9hcmRTb3VuZDogYXN5bmMgKGNoYW5uZWxJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgYXdhaXQgYm90LnJlc3Quc2VuZFNvdW5kYm9hcmRTb3VuZChjaGFubmVsSWQsIG9wdGlvbnMpO1xuICAgIH0sXG4gICAgbGlzdERlZmF1bHRTb3VuZGJvYXJkU291bmRzOiBhc3luYyAoKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0Lmxpc3REZWZhdWx0U291bmRib2FyZFNvdW5kcygpKS5tYXAoKHNvdW5kKSA9PiBib3QudHJhbnNmb3JtZXJzLnNvdW5kYm9hcmRTb3VuZChib3QsIHNuYWtlbGl6ZShzb3VuZCkpKTtcbiAgICB9LFxuICAgIGxpc3RHdWlsZFNvdW5kYm9hcmRTb3VuZHM6IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBib3QucmVzdC5saXN0R3VpbGRTb3VuZGJvYXJkU291bmRzKGd1aWxkSWQpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBpdGVtczogcmVzLml0ZW1zLm1hcCgoc291bmQpID0+IGJvdC50cmFuc2Zvcm1lcnMuc291bmRib2FyZFNvdW5kKGJvdCwgc25ha2VsaXplKHNvdW5kKSkpLFxuICAgICAgfTtcbiAgICB9LFxuICAgIGdldEd1aWxkU291bmRib2FyZFNvdW5kOiBhc3luYyAoZ3VpbGRJZCwgc291bmRJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuc291bmRib2FyZFNvdW5kKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmdldEd1aWxkU291bmRib2FyZFNvdW5kKGd1aWxkSWQsIHNvdW5kSWQpKSk7XG4gICAgfSxcbiAgICBjcmVhdGVHdWlsZFNvdW5kYm9hcmRTb3VuZDogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuc291bmRib2FyZFNvdW5kKGJvdCwgc25ha2VsaXplKGF3YWl0IGJvdC5yZXN0LmNyZWF0ZUd1aWxkU291bmRib2FyZFNvdW5kKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikpKTtcbiAgICB9LFxuICAgIG1vZGlmeUd1aWxkU291bmRib2FyZFNvdW5kOiBhc3luYyAoZ3VpbGRJZCwgc291bmRJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5zb3VuZGJvYXJkU291bmQoYm90LCBzbmFrZWxpemUoYXdhaXQgYm90LnJlc3QubW9kaWZ5R3VpbGRTb3VuZGJvYXJkU291bmQoZ3VpbGRJZCwgc291bmRJZCwgb3B0aW9ucywgcmVhc29uKSkpO1xuICAgIH0sXG4gICAgZGVsZXRlR3VpbGRTb3VuZGJvYXJkU291bmQ6IGFzeW5jIChndWlsZElkLCBzb3VuZElkLCByZWFzb24pID0+IHtcbiAgICAgIGF3YWl0IGJvdC5yZXN0LmRlbGV0ZUd1aWxkU291bmRib2FyZFNvdW5kKGd1aWxkSWQsIHNvdW5kSWQsIHJlYXNvbik7XG4gICAgfSxcbiAgICBkZWxldGVMb2JieTogYXN5bmMgKGxvYmJ5SWQpID0+IHtcbiAgICAgIGF3YWl0IGJvdC5yZXN0LmRlbGV0ZUxvYmJ5KGxvYmJ5SWQpO1xuICAgIH0sXG4gICAgcmVtb3ZlTWVtYmVyRnJvbUxvYmJ5OiBhc3luYyAobG9iYnlJZCwgdXNlcklkKSA9PiB7XG4gICAgICBhd2FpdCBib3QucmVzdC5yZW1vdmVNZW1iZXJGcm9tTG9iYnkobG9iYnlJZCwgdXNlcklkKTtcbiAgICB9LFxuICAgIGxlYXZlTG9iYnk6IGFzeW5jIChsb2JieUlkLCBiZWFyZXJUb2tlbikgPT4ge1xuICAgICAgYXdhaXQgYm90LnJlc3QubGVhdmVMb2JieShsb2JieUlkLCBiZWFyZXJUb2tlbik7XG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgQm90SGVscGVyczxUUHJvcHMgZXh0ZW5kcyBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcywgVEJlaGF2aW9yIGV4dGVuZHMgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj4gPSB7XG4gIGNyZWF0ZUF1dG9tb2RSdWxlOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IENyZWF0ZUF1dG9Nb2RlcmF0aW9uUnVsZU9wdGlvbnMsXG4gICAgcmVhc29uPzogc3RyaW5nLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8QXV0b01vZGVyYXRpb25SdWxlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBjcmVhdGVDaGFubmVsOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBDcmVhdGVHdWlsZENoYW5uZWwsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxDaGFubmVsLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBjcmVhdGVFbW9qaTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQ3JlYXRlR3VpbGRFbW9qaSwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEVtb2ppLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBjcmVhdGVBcHBsaWNhdGlvbkVtb2ppOiAob3B0aW9uczogQ3JlYXRlQXBwbGljYXRpb25FbW9qaSkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxFbW9qaSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgY3JlYXRlRm9ydW1UaHJlYWQ6IChcbiAgICBjaGFubmVsSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zOiBDcmVhdGVGb3J1bVBvc3RXaXRoTWVzc2FnZSxcbiAgICByZWFzb24/OiBzdHJpbmcsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxDaGFubmVsLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBjcmVhdGVHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmQ6IChcbiAgICBjb21tYW5kOiBDcmVhdGVBcHBsaWNhdGlvbkNvbW1hbmQsXG4gICAgb3B0aW9ucz86IENyZWF0ZUdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZE9wdGlvbnMsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxBcHBsaWNhdGlvbkNvbW1hbmQsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGNyZWF0ZUd1aWxkQXBwbGljYXRpb25Db21tYW5kOiAoXG4gICAgY29tbWFuZDogQ3JlYXRlQXBwbGljYXRpb25Db21tYW5kLFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zPzogQ3JlYXRlR3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25zLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8QXBwbGljYXRpb25Db21tYW5kLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBjcmVhdGVHdWlsZFN0aWNrZXI6IChcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogQ3JlYXRlR3VpbGRTdGlja2VyT3B0aW9ucyxcbiAgICByZWFzb24/OiBzdHJpbmcsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxTdGlja2VyLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBjcmVhdGVHdWlsZFRlbXBsYXRlOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBDcmVhdGVUZW1wbGF0ZSkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxUZW1wbGF0ZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgY3JlYXRlSW52aXRlOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBDcmVhdGVDaGFubmVsSW52aXRlLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEludml0ZT4+O1xuICBnZXRHdWlsZFJvbGVNZW1iZXJDb3VudHM6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8UmVjb3JkPHN0cmluZywgbnVtYmVyPj47XG4gIGNyZWF0ZVJvbGU6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IENyZWF0ZUd1aWxkUm9sZSwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFJvbGUsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGNyZWF0ZVNjaGVkdWxlZEV2ZW50OiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IENyZWF0ZVNjaGVkdWxlZEV2ZW50LFxuICAgIHJlYXNvbj86IHN0cmluZyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFNjaGVkdWxlZEV2ZW50LCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBjcmVhdGVTdGFnZUluc3RhbmNlOiAob3B0aW9uczogQ3JlYXRlU3RhZ2VJbnN0YW5jZSwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFN0YWdlSW5zdGFuY2UsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGNyZWF0ZVdlYmhvb2s6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQ3JlYXRlV2ViaG9vaywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFdlYmhvb2ssIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGVkaXRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uczogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBjb21tYW5kSWQ6IEJpZ1N0cmluZyxcbiAgICBiZWFyZXJUb2tlbjogc3RyaW5nLFxuICAgIG9wdGlvbnM6IENhbWVsaXplPERpc2NvcmRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9ucz5bXSxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEd1aWxkQXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnMsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGVkaXRBdXRvbW9kUnVsZTogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBydWxlSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zOiBQYXJ0aWFsPEVkaXRBdXRvTW9kZXJhdGlvblJ1bGVPcHRpb25zPixcbiAgICByZWFzb24/OiBzdHJpbmcsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxBdXRvTW9kZXJhdGlvblJ1bGUsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGVkaXRCb3RQcm9maWxlOiAob3B0aW9uczoge1xuICAgIHVzZXJuYW1lPzogc3RyaW5nO1xuICAgIGJvdEF2YXRhclVSTD86IHN0cmluZyB8IG51bGw7XG4gICAgYm90QmFubmVyVVJMPzogc3RyaW5nIHwgbnVsbDtcbiAgfSkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxVc2VyLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBlZGl0Q2hhbm5lbDogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBNb2RpZnlDaGFubmVsLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8Q2hhbm5lbCwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZWRpdEVtb2ppOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBpZDogQmlnU3RyaW5nLCBvcHRpb25zOiBNb2RpZnlHdWlsZEVtb2ppLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8RW1vamksIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGVkaXRBcHBsaWNhdGlvbkVtb2ppOiAoaWQ6IEJpZ1N0cmluZywgb3B0aW9uczogTW9kaWZ5QXBwbGljYXRpb25FbW9qaSkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxFbW9qaSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZWRpdEZvbGxvd3VwTWVzc2FnZTogKFxuICAgIHRva2VuOiBzdHJpbmcsXG4gICAgbWVzc2FnZUlkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogSW50ZXJhY3Rpb25DYWxsYmFja0RhdGEsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxNZXNzYWdlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBlZGl0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kOiAoXG4gICAgY29tbWFuZElkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogQ3JlYXRlQXBwbGljYXRpb25Db21tYW5kLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8QXBwbGljYXRpb25Db21tYW5kLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBlZGl0R3VpbGQ6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IE1vZGlmeUd1aWxkLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8R3VpbGQsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGVkaXRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZDogKFxuICAgIGNvbW1hbmRJZDogQmlnU3RyaW5nLFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zOiBDcmVhdGVBcHBsaWNhdGlvbkNvbW1hbmQsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxBcHBsaWNhdGlvbkNvbW1hbmQsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGVkaXRHdWlsZFN0aWNrZXI6IChcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgc3RpY2tlcklkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogQXRMZWFzdE9uZTxFZGl0R3VpbGRTdGlja2VyT3B0aW9ucz4sXG4gICAgcmVhc29uPzogc3RyaW5nLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8U3RpY2tlciwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZWRpdEd1aWxkVGVtcGxhdGU6IChcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgdGVtcGxhdGVDb2RlOiBzdHJpbmcsXG4gICAgb3B0aW9uczogTW9kaWZ5R3VpbGRUZW1wbGF0ZSxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFRlbXBsYXRlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBlZGl0TWVzc2FnZTogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogRWRpdE1lc3NhZ2UpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TWVzc2FnZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZWRpdE9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZTogKHRva2VuOiBzdHJpbmcsIG9wdGlvbnM6IEludGVyYWN0aW9uQ2FsbGJhY2tEYXRhKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPE1lc3NhZ2UsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGVkaXRSb2xlOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCByb2xlSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogRWRpdEd1aWxkUm9sZSwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFJvbGUsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGVkaXRSb2xlUG9zaXRpb25zOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBNb2RpZnlSb2xlUG9zaXRpb25zW10sIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxSb2xlLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGVkaXRTY2hlZHVsZWRFdmVudDogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBldmVudElkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogUGFydGlhbDxFZGl0U2NoZWR1bGVkRXZlbnQ+LFxuICAgIHJlYXNvbj86IHN0cmluZyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFNjaGVkdWxlZEV2ZW50LCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBlZGl0U3RhZ2VJbnN0YW5jZTogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCB0b3BpYzogc3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8U3RhZ2VJbnN0YW5jZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZWRpdFdlYmhvb2s6ICh3ZWJob29rSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogTW9kaWZ5V2ViaG9vaywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFdlYmhvb2ssIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGVkaXRXZWJob29rTWVzc2FnZTogKFxuICAgIHdlYmhvb2tJZDogQmlnU3RyaW5nLFxuICAgIHRva2VuOiBzdHJpbmcsXG4gICAgbWVzc2FnZUlkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogRWRpdFdlYmhvb2tNZXNzYWdlT3B0aW9ucyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPE1lc3NhZ2UsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGVkaXRXZWJob29rV2l0aFRva2VuOiAoXG4gICAgd2ViaG9va0lkOiBCaWdTdHJpbmcsXG4gICAgdG9rZW46IHN0cmluZyxcbiAgICBvcHRpb25zOiBPbWl0PE1vZGlmeVdlYmhvb2ssICdjaGFubmVsSWQnPixcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFdlYmhvb2ssIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGVkaXRXZWxjb21lU2NyZWVuOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IE1vZGlmeUd1aWxkV2VsY29tZVNjcmVlbixcbiAgICByZWFzb24/OiBzdHJpbmcsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxXZWxjb21lU2NyZWVuLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBlZGl0V2lkZ2V0U2V0dGluZ3M6IChcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogQ2FtZWxpemU8RGlzY29yZEd1aWxkV2lkZ2V0U2V0dGluZ3M+LFxuICAgIHJlYXNvbj86IHN0cmluZyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEd1aWxkV2lkZ2V0U2V0dGluZ3MsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGVkaXRVc2VyQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbjogKFxuICAgIGJlYXJlclRva2VuOiBzdHJpbmcsXG4gICAgYXBwbGljYXRpb25JZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IENhbWVsaXplPERpc2NvcmRBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uPixcbiAgKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uPj47XG4gIGRlbGV0ZUN1cnJlbnRVc2VyQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbjogKGJlYXJlclRva2VuOiBzdHJpbmcsIGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZXhlY3V0ZVdlYmhvb2s6IChcbiAgICB3ZWJob29rSWQ6IEJpZ1N0cmluZyxcbiAgICB0b2tlbjogc3RyaW5nLFxuICAgIG9wdGlvbnM6IEV4ZWN1dGVXZWJob29rLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TWVzc2FnZSwgVFByb3BzLCBUQmVoYXZpb3I+IHwgdW5kZWZpbmVkPjtcbiAgZm9sbG93QW5ub3VuY2VtZW50OiAoc291cmNlQ2hhbm5lbElkOiBCaWdTdHJpbmcsIHRhcmdldENoYW5uZWxJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRGb2xsb3dlZENoYW5uZWw+PjtcbiAgZ2V0QWN0aXZlVGhyZWFkczogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgKSA9PiBQcm9taXNlPHsgdGhyZWFkczogU2V0dXBEZXNpcmVkUHJvcHM8Q2hhbm5lbCwgVFByb3BzLCBUQmVoYXZpb3I+W107IG1lbWJlcnM6IFNldHVwRGVzaXJlZFByb3BzPFRocmVhZE1lbWJlciwgVFByb3BzLCBUQmVoYXZpb3I+W10gfT47XG4gIGdldEFwcGxpY2F0aW9uSW5mbzogKCkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxBcHBsaWNhdGlvbiwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZWRpdEFwcGxpY2F0aW9uSW5mbzogKGJvZHk6IEVkaXRBcHBsaWNhdGlvbikgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxBcHBsaWNhdGlvbiwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0Q3VycmVudEF1dGhlbnRpY2F0aW9uSW5mbzogKGJlYXJlclRva2VuOiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEN1cnJlbnRBdXRob3JpemF0aW9uPj47XG4gIGV4Y2hhbmdlVG9rZW46IChcbiAgICBjbGllbnRJZDogQmlnU3RyaW5nLFxuICAgIGNsaWVudFNlY3JldDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IENhbWVsaXplPERpc2NvcmRUb2tlbkV4Y2hhbmdlPixcbiAgKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRBY2Nlc3NUb2tlblJlc3BvbnNlPj47XG4gIHJldm9rZVRva2VuOiAoY2xpZW50SWQ6IEJpZ1N0cmluZywgY2xpZW50U2VjcmV0OiBzdHJpbmcsIG9wdGlvbnM6IENhbWVsaXplPERpc2NvcmRUb2tlblJldm9jYXRpb24+KSA9PiBQcm9taXNlPHZvaWQ+O1xuICBnZXRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIGNvbW1hbmRJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM/OiBHZXRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uT3B0aW9ucyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEd1aWxkQXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnMsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM/OiBHZXRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uT3B0aW9ucyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEd1aWxkQXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnMsIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgZ2V0QXVkaXRMb2c6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBHZXRHdWlsZEF1ZGl0TG9nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRBdWRpdExvZz4+O1xuICBnZXRBdXRvbW9kUnVsZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgcnVsZUlkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8QXV0b01vZGVyYXRpb25SdWxlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRBdXRvbW9kUnVsZXM6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8QXV0b01vZGVyYXRpb25SdWxlLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGdldEF2YWlsYWJsZVZvaWNlUmVnaW9uczogKCkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxWb2ljZVJlZ2lvbiwgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBnZXRCYW46IChndWlsZElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRCYW4+PjtcbiAgZ2V0QmFuczogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IEdldEJhbnMpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEJhbj5bXT47XG4gIGdldENoYW5uZWw6IChjaGFubmVsSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxDaGFubmVsLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRDaGFubmVsSW52aXRlczogKGNoYW5uZWxJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEludml0ZSwgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBnZXRDaGFubmVsczogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxDaGFubmVsLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGdldENoYW5uZWxXZWJob29rczogKGNoYW5uZWxJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFdlYmhvb2ssIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgZ2V0RG1DaGFubmVsOiAodXNlcklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8Q2hhbm5lbCwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0R3JvdXBEbUNoYW5uZWw6IChvcHRpb25zOiBDcmVhdGVHcm91cERtT3B0aW9ucykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxDaGFubmVsLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRFbW9qaTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgZW1vamlJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEVtb2ppLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRBcHBsaWNhdGlvbkVtb2ppOiAoZW1vamlJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEVtb2ppLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRFbW9qaXM6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8RW1vamksIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgZ2V0QXBwbGljYXRpb25FbW9qaXM6ICgpID0+IFByb21pc2U8eyBpdGVtczogU2V0dXBEZXNpcmVkUHJvcHM8RW1vamksIFRQcm9wcywgVEJlaGF2aW9yPltdIH0+O1xuICBnZXRGb2xsb3d1cE1lc3NhZ2U6ICh0b2tlbjogc3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxNZXNzYWdlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRHYXRld2F5Qm90OiAoKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEdldEdhdGV3YXlCb3QsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldEdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZDogKGNvbW1hbmRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEFwcGxpY2F0aW9uQ29tbWFuZCwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kczogKFxuICAgIG9wdGlvbnM/OiBHZXRHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmRzT3B0aW9ucyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEFwcGxpY2F0aW9uQ29tbWFuZCwgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBnZXRHdWlsZDogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IHsgY291bnRzPzogYm9vbGVhbiB9KSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEd1aWxkLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRHdWlsZHM6IChiZWFyZXJUb2tlbjogc3RyaW5nLCBvcHRpb25zPzogR2V0VXNlckd1aWxkcykgPT4gUHJvbWlzZTxQYXJ0aWFsPFNldHVwRGVzaXJlZFByb3BzPEd1aWxkLCBUUHJvcHMsIFRCZWhhdmlvcj4+W10+O1xuICBnZXRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZDogKGNvbW1hbmRJZDogQmlnU3RyaW5nLCBndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8QXBwbGljYXRpb25Db21tYW5kLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZHM6IChcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9ucz86IEdldEd1aWxkQXBwbGljYXRpb25Db21tYW5kc09wdGlvbnMsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxBcHBsaWNhdGlvbkNvbW1hbmQsIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgZ2V0R3VpbGRQcmV2aWV3OiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRHdWlsZFByZXZpZXc+PjtcbiAgZ2V0R3VpbGRTdGlja2VyOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBzdGlja2VySWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxTdGlja2VyLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRHdWlsZFN0aWNrZXJzOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFN0aWNrZXIsIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgZ2V0R3VpbGRUZW1wbGF0ZTogKHRlbXBsYXRlQ29kZTogc3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFRlbXBsYXRlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRHdWlsZFRlbXBsYXRlczogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxUZW1wbGF0ZSwgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBnZXRHdWlsZFdlYmhvb2tzOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFdlYmhvb2ssIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgZ2V0SW50ZWdyYXRpb25zOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEludGVncmF0aW9uLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGdldEludml0ZTogKGludml0ZUNvZGU6IHN0cmluZywgb3B0aW9ucz86IEdldEludml0ZSkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxJbnZpdGUsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldEludml0ZXM6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8SW52aXRlLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGdldE1lc3NhZ2U6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TWVzc2FnZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0TWVzc2FnZXM6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IEdldE1lc3NhZ2VzT3B0aW9ucykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxNZXNzYWdlLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIHNlYXJjaEd1aWxkTWVzc2FnZXM6IChcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9ucz86IFNlYXJjaEd1aWxkTWVzc2FnZXNPcHRpb25zLFxuICApID0+IFByb21pc2U8XG4gICAgfCBDYW1lbGl6ZTxEaXNjb3JkU2VhcmNoR3VpbGRNZXNzYWdlc0luZGV4aW5nPlxuICAgIHwgKE9taXQ8Q2FtZWxpemU8RGlzY29yZFNlYXJjaEd1aWxkTWVzc2FnZXM+LCAnbWVzc2FnZXMnIHwgJ3RocmVhZHMnIHwgJ21lbWJlcnMnPiAmIHtcbiAgICAgICAgbWVzc2FnZXM6IFNldHVwRGVzaXJlZFByb3BzPE1lc3NhZ2UsIFRQcm9wcywgVEJlaGF2aW9yPltdW107XG4gICAgICAgIHRocmVhZHM/OiBTZXR1cERlc2lyZWRQcm9wczxDaGFubmVsLCBUUHJvcHMsIFRCZWhhdmlvcj5bXTtcbiAgICAgICAgbWVtYmVycz86IFNldHVwRGVzaXJlZFByb3BzPFRocmVhZE1lbWJlciwgVFByb3BzLCBUQmVoYXZpb3I+W107XG4gICAgICB9KVxuICA+O1xuICBnZXRTdGlja2VyUGFjazogKHN0aWNrZXJQYWNrSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxTdGlja2VyUGFjaywgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0U3RpY2tlclBhY2tzOiAoKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFN0aWNrZXJQYWNrLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGdldE9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZTogKHRva2VuOiBzdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TWVzc2FnZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0Q2hhbm5lbFBpbnM6IChcbiAgICBjaGFubmVsSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zPzogR2V0Q2hhbm5lbFBpbnNPcHRpb25zLFxuICApID0+IFByb21pc2U8eyBpdGVtczogU2V0dXBEZXNpcmVkUHJvcHM8TWVzc2FnZVBpbiwgVFByb3BzLCBUQmVoYXZpb3I+W107IGhhc01vcmU6IGJvb2xlYW4gfT47XG4gIC8qKiBAZGVwcmVjYXRlZCBVc2Uge0BsaW5rIEJvdEhlbHBlcnMuZ2V0Q2hhbm5lbFBpbnN9IGluc3RlYWQgKi9cbiAgZ2V0UGlubmVkTWVzc2FnZXM6IChjaGFubmVsSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxNZXNzYWdlLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGdldFByaXZhdGVBcmNoaXZlZFRocmVhZHM6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IExpc3RBcmNoaXZlZFRocmVhZHMpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZExpc3RBcmNoaXZlZFRocmVhZHM+PjtcbiAgZ2V0UHJpdmF0ZUpvaW5lZEFyY2hpdmVkVGhyZWFkczogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogTGlzdEFyY2hpdmVkVGhyZWFkcykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTGlzdEFyY2hpdmVkVGhyZWFkcz4+O1xuICBnZXRQcnVuZUNvdW50OiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogR2V0R3VpbGRQcnVuZUNvdW50UXVlcnkpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFBydW5lZENvdW50Pj47XG4gIGdldFB1YmxpY0FyY2hpdmVkVGhyZWFkczogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogTGlzdEFyY2hpdmVkVGhyZWFkcykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTGlzdEFyY2hpdmVkVGhyZWFkcz4+O1xuICBnZXRSb2xlczogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxSb2xlLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGdldFJvbGU6IChndWlsZElkOiBCaWdTdHJpbmcsIHJvbGVJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFJvbGUsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldFNjaGVkdWxlZEV2ZW50OiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIGV2ZW50SWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zPzogeyB3aXRoVXNlckNvdW50PzogYm9vbGVhbiB9LFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8U2NoZWR1bGVkRXZlbnQsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldFNjaGVkdWxlZEV2ZW50czogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IEdldFNjaGVkdWxlZEV2ZW50cykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxTY2hlZHVsZWRFdmVudCwgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBnZXRTY2hlZHVsZWRFdmVudFVzZXJzOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIGV2ZW50SWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zPzogR2V0U2NoZWR1bGVkRXZlbnRVc2VycyxcbiAgKSA9PiBQcm9taXNlPEFycmF5PHsgdXNlcjogU2V0dXBEZXNpcmVkUHJvcHM8VXNlciwgVFByb3BzLCBUQmVoYXZpb3I+OyBtZW1iZXI/OiBTZXR1cERlc2lyZWRQcm9wczxNZW1iZXIsIFRQcm9wcywgVEJlaGF2aW9yPiB9Pj47XG4gIGdldFNlc3Npb25JbmZvOiAoKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEdldEdhdGV3YXlCb3QsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldFN0YWdlSW5zdGFuY2U6IChjaGFubmVsSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxTdGFnZUluc3RhbmNlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRPd25Wb2ljZVN0YXRlOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFZvaWNlU3RhdGUsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldFVzZXJWb2ljZVN0YXRlOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxWb2ljZVN0YXRlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRTdGlja2VyOiAoc3RpY2tlcklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8U3RpY2tlciwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0VGhyZWFkTWVtYmVyOiAoXG4gICAgY2hhbm5lbElkOiBCaWdTdHJpbmcsXG4gICAgdXNlcklkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9ucz86IEdldFRocmVhZE1lbWJlcixcbiAgICBleHRyYT86IFRocmVhZE1lbWJlclRyYW5zZm9ybWVyRXh0cmEsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxUaHJlYWRNZW1iZXIsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldFRocmVhZE1lbWJlcnM6IChcbiAgICBjaGFubmVsSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zPzogTGlzdFRocmVhZE1lbWJlcnMsXG4gICAgZXh0cmE/OiBUaHJlYWRNZW1iZXJUcmFuc2Zvcm1lckV4dHJhLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8VGhyZWFkTWVtYmVyLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGdldFJlYWN0aW9uczogKFxuICAgIGNoYW5uZWxJZDogQmlnU3RyaW5nLFxuICAgIG1lc3NhZ2VJZDogQmlnU3RyaW5nLFxuICAgIHJlYWN0aW9uOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IEdldFJlYWN0aW9ucyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFVzZXIsIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgZ2V0VXNlcjogKGlkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8VXNlciwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0Q3VycmVudFVzZXI6IChiZWFyZXJUb2tlbjogc3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFVzZXIsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldFVzZXJDb25uZWN0aW9uczogKGJlYXJlclRva2VuOiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZENvbm5lY3Rpb24+W10+O1xuICBnZXRVc2VyQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbjogKGJlYXJlclRva2VuOiBzdHJpbmcsIGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbj4+O1xuICBnZXRWYW5pdHlVcmw6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFZhbml0eVVybD4+O1xuICBnZXRWb2ljZVJlZ2lvbnM6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8Vm9pY2VSZWdpb24sIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgZ2V0V2ViaG9vazogKHdlYmhvb2tJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFdlYmhvb2ssIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldFdlYmhvb2tNZXNzYWdlOiAoXG4gICAgd2ViaG9va0lkOiBCaWdTdHJpbmcsXG4gICAgdG9rZW46IHN0cmluZyxcbiAgICBtZXNzYWdlSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zPzogR2V0V2ViaG9va01lc3NhZ2VPcHRpb25zLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TWVzc2FnZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0V2ViaG9va1dpdGhUb2tlbjogKHdlYmhvb2tJZDogQmlnU3RyaW5nLCB0b2tlbjogc3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFdlYmhvb2ssIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldFdlbGNvbWVTY3JlZW46IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8V2VsY29tZVNjcmVlbiwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0V2lkZ2V0OiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEd1aWxkV2lkZ2V0LCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRXaWRnZXRTZXR0aW5nczogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxHdWlsZFdpZGdldFNldHRpbmdzLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBwdWJsaXNoTWVzc2FnZTogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxNZXNzYWdlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBzZW5kTWVzc2FnZTogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBDcmVhdGVNZXNzYWdlT3B0aW9ucykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxNZXNzYWdlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBzZW5kRm9sbG93dXBNZXNzYWdlOiAodG9rZW46IHN0cmluZywgb3B0aW9uczogSW50ZXJhY3Rpb25DYWxsYmFja0RhdGEpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TWVzc2FnZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgc3RhcnRUaHJlYWRXaXRoTWVzc2FnZTogKFxuICAgIGNoYW5uZWxJZDogQmlnU3RyaW5nLFxuICAgIG1lc3NhZ2VJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IFN0YXJ0VGhyZWFkV2l0aE1lc3NhZ2UsXG4gICAgcmVhc29uPzogc3RyaW5nLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8Q2hhbm5lbCwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgc3RhcnRUaHJlYWRXaXRob3V0TWVzc2FnZTogKFxuICAgIGNoYW5uZWxJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IFN0YXJ0VGhyZWFkV2l0aG91dE1lc3NhZ2UsXG4gICAgcmVhc29uPzogc3RyaW5nLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8Q2hhbm5lbCwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgc3luY0d1aWxkVGVtcGxhdGU6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8VGVtcGxhdGUsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIHVwc2VydEdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZHM6IChcbiAgICBjb21tYW5kczogQ3JlYXRlQXBwbGljYXRpb25Db21tYW5kW10sXG4gICAgb3B0aW9ucz86IFVwc2VydEdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZE9wdGlvbnMsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxBcHBsaWNhdGlvbkNvbW1hbmQsIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgdXBzZXJ0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRzOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIGNvbW1hbmRzOiBDcmVhdGVBcHBsaWNhdGlvbkNvbW1hbmRbXSxcbiAgICBvcHRpb25zPzogVXBzZXJ0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25zLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8QXBwbGljYXRpb25Db21tYW5kLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGVkaXRDdXJyZW50TWVtYmVyOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBNb2RpZnlDdXJyZW50TWVtYmVyLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TWVtYmVyLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBlZGl0TWVtYmVyOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIHVzZXJJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IE1vZGlmeUd1aWxkTWVtYmVyLFxuICAgIHJlYXNvbj86IHN0cmluZyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPE1lbWJlciwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0Q3VycmVudE1lbWJlcjogKGd1aWxkSWQ6IEJpZ1N0cmluZywgYmVhcmVyVG9rZW46IHN0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxNZW1iZXIsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldE1lbWJlcjogKGd1aWxkSWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TWVtYmVyLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRNZW1iZXJzOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBMaXN0R3VpbGRNZW1iZXJzKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPE1lbWJlciwgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBwcnVuZU1lbWJlcnM6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IEJlZ2luR3VpbGRQcnVuZSwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHsgcHJ1bmVkOiBudW1iZXIgfCBudWxsIH0+O1xuICBzZWFyY2hNZW1iZXJzOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIHF1ZXJ5OiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IE9taXQ8U2VhcmNoTWVtYmVycywgJ3F1ZXJ5Jz4sXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxNZW1iZXIsIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgYnVsa0Jhbk1lbWJlcnM6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IENyZWF0ZUd1aWxkQnVsa0JhbiwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHsgYmFubmVkVXNlcnM6IGJpZ2ludFtdOyBmYWlsZWRVc2VyczogYmlnaW50W10gfT47XG4gIGdldEFwcGxpY2F0aW9uQWN0aXZpdHlJbnN0YW5jZTogKGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZywgaW5zdGFuY2VJZDogc3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRBY3Rpdml0eUluc3RhbmNlPj47XG4gIGxpc3RBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uc01ldGFkYXRhUmVjb3JkczogKGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbk1ldGFkYXRhPltdPjtcbiAgdXBkYXRlQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbnNNZXRhZGF0YVJlY29yZHM6IChcbiAgICBhcHBsaWNhdGlvbklkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogQ2FtZWxpemU8RGlzY29yZEFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb25NZXRhZGF0YT5bXSxcbiAgKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uTWV0YWRhdGE+W10+O1xuICBjcmVhdGVMb2JieTogKG9wdGlvbnM6IENyZWF0ZUxvYmJ5KSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPExvYmJ5LCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBjcmVhdGVPckpvaW5Mb2JieTogKG9wdGlvbnM6IENyZWF0ZU9ySm9pbkxvYmJ5KSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPExvYmJ5LCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRMb2JieTogKGxvYmJ5SWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxMb2JieSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgbW9kaWZ5TG9iYnk6IChsb2JieUlkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IE1vZGlmeUxvYmJ5KSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPExvYmJ5LCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBhZGRNZW1iZXJUb0xvYmJ5OiAobG9iYnlJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQWRkTG9iYnlNZW1iZXIpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TG9iYnlNZW1iZXIsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGJ1bGtVcGRhdGVMb2JieU1lbWJlcnM6IChsb2JieUlkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IEJ1bGtVcGRhdGVMb2JieU1lbWJlcltdKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPExvYmJ5TWVtYmVyLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGxpbmtDaGFubmVsVG9Mb2JieTogKGxvYmJ5SWQ6IEJpZ1N0cmluZywgYmVhcmVyVG9rZW46IHN0cmluZywgb3B0aW9uczogTGlua0NoYW5uZWxUb0xvYmJ5KSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPExvYmJ5LCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICB1bmxpbmtDaGFubmVsVG9Mb2JieTogKGxvYmJ5SWQ6IEJpZ1N0cmluZywgYmVhcmVyVG9rZW46IHN0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxMb2JieSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgdXBkYXRlTG9iYnlNZXNzYWdlTW9kZXJhdGlvbk1ldGFkYXRhOiAobG9iYnlJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPikgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZ2V0VGFyZ2V0VXNlcnM6IChpbnZpdGVDb2RlOiBzdHJpbmcpID0+IFByb21pc2U8c3RyaW5nPjtcbiAgdXBkYXRlVGFyZ2V0VXNlcnM6IChpbnZpdGVDb2RlOiBzdHJpbmcsIHRhcmdldFVzZXJzRmlsZTogQmxvYikgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZ2V0VGFyZ2V0VXNlcnNKb2JTdGF0dXM6IChpbnZpdGVDb2RlOiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFRhcmdldFVzZXJzSm9iU3RhdHVzPj47XG4gIHNlbmRMb2JieU1lc3NhZ2U6IChcbiAgICBiZWFyZXJUb2tlbjogc3RyaW5nLFxuICAgIGxvYmJ5SWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zOiBTZW5kTG9iYnlNZXNzYWdlLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TG9iYnlNZXNzYWdlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRMb2JieU1lc3NhZ2VzOiAoXG4gICAgYmVhcmVyVG9rZW46IHN0cmluZyxcbiAgICBsb2JieUlkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9ucz86IEdldExvYmJ5TWVzc2FnZXMsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxMb2JieU1lc3NhZ2UsIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgY3JlYXRlTG9iYnlDaGFubmVsSW52aXRlRm9yU2VsZjogKGJlYXJlclRva2VuOiBzdHJpbmcsIGxvYmJ5SWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxMb2JieUludml0ZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgY3JlYXRlTG9iYnlDaGFubmVsSW52aXRlRm9yVXNlcjogKGxvYmJ5SWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TG9iYnlJbnZpdGUsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIC8vIGZ1bmN0aW9ucyByZXR1cm4gVm9pZCBzbyBkb250IG5lZWQgYW55IHNwZWNpYWwgaGFuZGxpbmdcbiAgYWRkUmVhY3Rpb246IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcsIHJlYWN0aW9uOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGFkZFJlYWN0aW9uczogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZywgcmVhY3Rpb25zOiBzdHJpbmdbXSwgb3JkZXJlZD86IGJvb2xlYW4pID0+IFByb21pc2U8dm9pZD47XG4gIGFkZFJvbGU6IChndWlsZElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nLCByb2xlSWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBhZGRUaHJlYWRNZW1iZXI6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGFkZERtUmVjaXBpZW50OiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBBZGREbVJlY2lwaWVudE9wdGlvbnMpID0+IFByb21pc2U8dm9pZD47XG4gIGFkZEd1aWxkTWVtYmVyOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQWRkR3VpbGRNZW1iZXJPcHRpb25zKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVBdXRvbW9kUnVsZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgcnVsZUlkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlQ2hhbm5lbDogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGRlbGV0ZUNoYW5uZWxQZXJtaXNzaW9uT3ZlcnJpZGU6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgb3ZlcndyaXRlSWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVFbW9qaTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgaWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVBcHBsaWNhdGlvbkVtb2ppOiAoaWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlRm9sbG93dXBNZXNzYWdlOiAodG9rZW46IHN0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGRlbGV0ZUdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZDogKGNvbW1hbmRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZDogKGNvbW1hbmRJZDogQmlnU3RyaW5nLCBndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGRlbGV0ZUd1aWxkU3RpY2tlcjogKGd1aWxkSWQ6IEJpZ1N0cmluZywgc3RpY2tlcklkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlR3VpbGRUZW1wbGF0ZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgdGVtcGxhdGVDb2RlOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGRlbGV0ZUludGVncmF0aW9uOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBpbnRlZ3JhdGlvbklkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlSW52aXRlOiAoaW52aXRlQ29kZTogc3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGRlbGV0ZU1lc3NhZ2U6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlTWVzc2FnZXM6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgbWVzc2FnZUlkczogQmlnU3RyaW5nW10sIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlT3JpZ2luYWxJbnRlcmFjdGlvblJlc3BvbnNlOiAodG9rZW46IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlT3duUmVhY3Rpb246IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcsIHJlYWN0aW9uOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGRlbGV0ZVJlYWN0aW9uc0FsbDogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlUmVhY3Rpb25zRW1vamk6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcsIHJlYWN0aW9uOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGRlbGV0ZVJvbGU6IChndWlsZElkOiBCaWdTdHJpbmcsIHJvbGVJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGRlbGV0ZVNjaGVkdWxlZEV2ZW50OiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBldmVudElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGRlbGV0ZVN0YWdlSW5zdGFuY2U6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVVc2VyUmVhY3Rpb246IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nLCByZWFjdGlvbjogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVXZWJob29rOiAod2ViaG9va0lkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlV2ViaG9va01lc3NhZ2U6ICh3ZWJob29rSWQ6IEJpZ1N0cmluZywgdG9rZW46IHN0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBEZWxldGVXZWJob29rTWVzc2FnZU9wdGlvbnMpID0+IFByb21pc2U8dm9pZD47XG4gIGRlbGV0ZVdlYmhvb2tXaXRoVG9rZW46ICh3ZWJob29rSWQ6IEJpZ1N0cmluZywgdG9rZW46IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZWRpdENoYW5uZWxQZXJtaXNzaW9uT3ZlcnJpZGVzOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IEVkaXRDaGFubmVsUGVybWlzc2lvbk92ZXJyaWRlc09wdGlvbnMsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZWRpdENoYW5uZWxQb3NpdGlvbnM6IChndWlsZElkOiBCaWdTdHJpbmcsIGNoYW5uZWxQb3NpdGlvbnM6IE1vZGlmeUd1aWxkQ2hhbm5lbFBvc2l0aW9uc1tdKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBlZGl0T3duVm9pY2VTdGF0ZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogRWRpdE93blZvaWNlU3RhdGUpID0+IFByb21pc2U8dm9pZD47XG4gIGVkaXRVc2VyVm9pY2VTdGF0ZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogRWRpdFVzZXJWb2ljZVN0YXRlKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBqb2luVGhyZWFkOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGxlYXZlR3VpbGQ6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGxlYXZlVGhyZWFkOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIHJlbW92ZVJvbGU6IChndWlsZElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nLCByb2xlSWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICByZW1vdmVUaHJlYWRNZW1iZXI6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIHJlbW92ZURtUmVjaXBpZW50OiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBzZW5kSW50ZXJhY3Rpb25SZXNwb25zZTogKFxuICAgIGludGVyYWN0aW9uSWQ6IEJpZ1N0cmluZyxcbiAgICB0b2tlbjogc3RyaW5nLFxuICAgIG9wdGlvbnM6IEludGVyYWN0aW9uUmVzcG9uc2UsXG4gICAgcGFyYW1zPzogSW50ZXJhY3Rpb25DYWxsYmFja09wdGlvbnMsXG4gICkgPT4gUHJvbWlzZTx2b2lkIHwgU2V0dXBEZXNpcmVkUHJvcHM8SW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICB0cmlnZ2VyVHlwaW5nSW5kaWNhdG9yOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGJhbk1lbWJlcjogKGd1aWxkSWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBDcmVhdGVHdWlsZEJhbiwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBraWNrTWVtYmVyOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBwaW5NZXNzYWdlOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIHVuYmFuTWVtYmVyOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICB1bnBpbk1lc3NhZ2U6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZ2V0R3VpbGRPbmJvYXJkaW5nOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEd1aWxkT25ib2FyZGluZywgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZWRpdEd1aWxkT25ib2FyZGluZzogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zOiBFZGl0R3VpbGRPbmJvYXJkaW5nLFxuICAgIHJlYXNvbj86IHN0cmluZyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEd1aWxkT25ib2FyZGluZywgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgbGlzdEVudGl0bGVtZW50czogKGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IEdldEVudGl0bGVtZW50cykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxFbnRpdGxlbWVudCwgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBnZXRFbnRpdGxlbWVudDogKGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZywgZW50aXRsZW1lbnRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEVudGl0bGVtZW50LCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBjcmVhdGVUZXN0RW50aXRsZW1lbnQ6IChcbiAgICBhcHBsaWNhdGlvbklkOiBCaWdTdHJpbmcsXG4gICAgYm9keTogQ3JlYXRlVGVzdEVudGl0bGVtZW50LFxuICApID0+IFByb21pc2U8UGFydGlhbDxTZXR1cERlc2lyZWRQcm9wczxFbnRpdGxlbWVudCwgVFByb3BzLCBUQmVoYXZpb3I+Pj47XG4gIGRlbGV0ZVRlc3RFbnRpdGxlbWVudDogKGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZywgZW50aXRsZW1lbnRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBsaXN0U2t1czogKGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxTa3UsIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgbGlzdFN1YnNjcmlwdGlvbnM6IChza3VJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogTGlzdFNrdVN1YnNjcmlwdGlvbnNPcHRpb25zKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFN1YnNjcmlwdGlvbiwgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBnZXRTdWJzY3JpcHRpb246IChza3VJZDogQmlnU3RyaW5nLCBzdWJzY3JpcHRpb25JZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFN1YnNjcmlwdGlvbiwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgc2VuZFNvdW5kYm9hcmRTb3VuZDogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBTZW5kU291bmRib2FyZFNvdW5kKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBsaXN0RGVmYXVsdFNvdW5kYm9hcmRTb3VuZHM6ICgpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8U291bmRib2FyZFNvdW5kLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGxpc3RHdWlsZFNvdW5kYm9hcmRTb3VuZHM6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8eyBpdGVtczogU2V0dXBEZXNpcmVkUHJvcHM8U291bmRib2FyZFNvdW5kLCBUUHJvcHMsIFRCZWhhdmlvcj5bXSB9PjtcbiAgZ2V0R3VpbGRTb3VuZGJvYXJkU291bmQ6IChndWlsZElkOiBCaWdTdHJpbmcsIHNvdW5kSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxTb3VuZGJvYXJkU291bmQsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGNyZWF0ZUd1aWxkU291bmRib2FyZFNvdW5kOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IENyZWF0ZUd1aWxkU291bmRib2FyZFNvdW5kLFxuICAgIHJlYXNvbj86IHN0cmluZyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFNvdW5kYm9hcmRTb3VuZCwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgbW9kaWZ5R3VpbGRTb3VuZGJvYXJkU291bmQ6IChcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgc291bmRJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IE1vZGlmeUd1aWxkU291bmRib2FyZFNvdW5kLFxuICAgIHJlYXNvbj86IHN0cmluZyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFNvdW5kYm9hcmRTb3VuZCwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZGVsZXRlR3VpbGRTb3VuZGJvYXJkU291bmQ6IChndWlsZElkOiBCaWdTdHJpbmcsIHNvdW5kSWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVMb2JieTogKGxvYmJ5SWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgcmVtb3ZlTWVtYmVyRnJvbUxvYmJ5OiAobG9iYnlJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgbGVhdmVMb2JieTogKGxvYmJ5SWQ6IEJpZ1N0cmluZywgYmVhcmVyVG9rZW46IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbn07XG4iXSwibmFtZXMiOlsic25ha2VsaXplIiwiY3JlYXRlQm90SGVscGVycyIsImJvdCIsImNyZWF0ZUF1dG9tb2RSdWxlIiwiZ3VpbGRJZCIsIm9wdGlvbnMiLCJyZWFzb24iLCJ0cmFuc2Zvcm1lcnMiLCJhdXRvbW9kUnVsZSIsInJlc3QiLCJjcmVhdGVDaGFubmVsIiwiY2hhbm5lbCIsImNyZWF0ZUVtb2ppIiwiZW1vamkiLCJjcmVhdGVBcHBsaWNhdGlvbkVtb2ppIiwiY3JlYXRlRm9ydW1UaHJlYWQiLCJjaGFubmVsSWQiLCJjcmVhdGVHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmQiLCJjb21tYW5kIiwiYXBwbGljYXRpb25Db21tYW5kIiwiY3JlYXRlR3VpbGRBcHBsaWNhdGlvbkNvbW1hbmQiLCJjcmVhdGVHdWlsZFN0aWNrZXIiLCJzdGlja2VyIiwiY3JlYXRlR3VpbGRUZW1wbGF0ZSIsInRlbXBsYXRlIiwiY3JlYXRlSW52aXRlIiwiZ2V0R3VpbGRSb2xlTWVtYmVyQ291bnRzIiwiY3JlYXRlUm9sZSIsInJvbGUiLCJjcmVhdGVTY2hlZHVsZWRFdmVudCIsInNjaGVkdWxlZEV2ZW50IiwiY3JlYXRlU3RhZ2VJbnN0YW5jZSIsInN0YWdlSW5zdGFuY2UiLCJjcmVhdGVXZWJob29rIiwid2ViaG9vayIsImVkaXRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9ucyIsImNvbW1hbmRJZCIsImJlYXJlclRva2VuIiwiYXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbiIsImVkaXRBdXRvbW9kUnVsZSIsInJ1bGVJZCIsImVkaXRCb3RQcm9maWxlIiwidXNlciIsImVkaXRDaGFubmVsIiwiZWRpdEVtb2ppIiwiaWQiLCJlZGl0QXBwbGljYXRpb25FbW9qaSIsImVkaXRGb2xsb3d1cE1lc3NhZ2UiLCJ0b2tlbiIsIm1lc3NhZ2VJZCIsIm1lc3NhZ2UiLCJlZGl0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kIiwiZWRpdEd1aWxkIiwiZ3VpbGQiLCJlZGl0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmQiLCJlZGl0R3VpbGRTdGlja2VyIiwic3RpY2tlcklkIiwiZWRpdEd1aWxkVGVtcGxhdGUiLCJ0ZW1wbGF0ZUNvZGUiLCJlZGl0TWVzc2FnZSIsImVkaXRPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2UiLCJlZGl0Um9sZSIsInJvbGVJZCIsImVkaXRSb2xlUG9zaXRpb25zIiwibWFwIiwiZWRpdFNjaGVkdWxlZEV2ZW50IiwiZXZlbnRJZCIsImVkaXRTdGFnZUluc3RhbmNlIiwidG9waWMiLCJlZGl0V2ViaG9vayIsIndlYmhvb2tJZCIsImVkaXRXZWJob29rTWVzc2FnZSIsImVkaXRXZWJob29rV2l0aFRva2VuIiwiZWRpdFdlbGNvbWVTY3JlZW4iLCJ3ZWxjb21lU2NyZWVuIiwiZWRpdFdpZGdldFNldHRpbmdzIiwid2lkZ2V0U2V0dGluZ3MiLCJleGVjdXRlV2ViaG9vayIsInJlc3VsdCIsImZvbGxvd0Fubm91bmNlbWVudCIsInNvdXJjZUNoYW5uZWxJZCIsInRhcmdldENoYW5uZWxJZCIsImdldEFjdGl2ZVRocmVhZHMiLCJ0aHJlYWRzIiwidGhyZWFkIiwibWVtYmVycyIsIm1lbWJlciIsInRocmVhZE1lbWJlciIsImdldEFwcGxpY2F0aW9uSW5mbyIsImFwcGxpY2F0aW9uIiwiZWRpdEFwcGxpY2F0aW9uSW5mbyIsImJvZHkiLCJnZXRDdXJyZW50QXV0aGVudGljYXRpb25JbmZvIiwiZXhjaGFuZ2VUb2tlbiIsImNsaWVudElkIiwiY2xpZW50U2VjcmV0IiwicmV2b2tlVG9rZW4iLCJnZXRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uIiwicmVzIiwic25ha2VkUmVzIiwiZ2V0QXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnMiLCJnZXRBdWRpdExvZyIsImdldEF1dG9tb2RSdWxlIiwiZ2V0QXV0b21vZFJ1bGVzIiwiZ2V0QXZhaWxhYmxlVm9pY2VSZWdpb25zIiwidm9pY2VSZWdpb24iLCJnZXRCYW4iLCJ1c2VySWQiLCJnZXRCYW5zIiwiZ2V0Q2hhbm5lbCIsImdldENoYW5uZWxJbnZpdGVzIiwiaW52aXRlIiwiZ2V0Q2hhbm5lbHMiLCJnZXRDaGFubmVsV2ViaG9va3MiLCJnZXREbUNoYW5uZWwiLCJnZXRHcm91cERtQ2hhbm5lbCIsImdldEVtb2ppIiwiZW1vamlJZCIsImdldEFwcGxpY2F0aW9uRW1vamkiLCJnZXRFbW9qaXMiLCJnZXRBcHBsaWNhdGlvbkVtb2ppcyIsIml0ZW1zIiwiaXRlbSIsImdldEZvbGxvd3VwTWVzc2FnZSIsImdldEdhdGV3YXlCb3QiLCJnYXRld2F5Qm90IiwiZ2V0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kIiwiZ2V0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kcyIsImdldEd1aWxkIiwiZ2V0R3VpbGRzIiwicGFydGlhbCIsImdldEd1aWxkQXBwbGljYXRpb25Db21tYW5kIiwiZ2V0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRzIiwiZ2V0R3VpbGRQcmV2aWV3IiwiZ2V0R3VpbGRTdGlja2VyIiwiZ2V0R3VpbGRTdGlja2VycyIsImdldEd1aWxkVGVtcGxhdGUiLCJnZXRHdWlsZFRlbXBsYXRlcyIsImdldEd1aWxkV2ViaG9va3MiLCJnZXRJbnRlZ3JhdGlvbnMiLCJpbnRlZ3JhdGlvbiIsInRvU3RyaW5nIiwiZ2V0SW52aXRlIiwiaW52aXRlQ29kZSIsImdldEludml0ZXMiLCJnZXRNZXNzYWdlIiwiZ2V0TWVzc2FnZXMiLCJnZXRTdGlja2VyUGFjayIsInN0aWNrZXJQYWNrSWQiLCJzdGlja2VyUGFjayIsImdldFN0aWNrZXJQYWNrcyIsImdldE9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZSIsImdldENoYW5uZWxQaW5zIiwiaGFzTW9yZSIsImhhc19tb3JlIiwibWVzc2FnZVBpbiIsImdldFBpbm5lZE1lc3NhZ2VzIiwiZ2V0UHJpdmF0ZUFyY2hpdmVkVGhyZWFkcyIsImdldFByaXZhdGVKb2luZWRBcmNoaXZlZFRocmVhZHMiLCJnZXRQcnVuZUNvdW50IiwiZ2V0UHVibGljQXJjaGl2ZWRUaHJlYWRzIiwiZ2V0Um9sZXMiLCJnZXRSb2xlIiwiZ2V0U2NoZWR1bGVkRXZlbnQiLCJnZXRTY2hlZHVsZWRFdmVudHMiLCJnZXRTY2hlZHVsZWRFdmVudFVzZXJzIiwidSIsInNub3dmbGFrZSIsImdldFNlc3Npb25JbmZvIiwiZ2V0U3RhZ2VJbnN0YW5jZSIsImdldE93blZvaWNlU3RhdGUiLCJ2b2ljZVN0YXRlIiwiZ2V0VXNlclZvaWNlU3RhdGUiLCJnZXRTdGlja2VyIiwiZ2V0VGhyZWFkTWVtYmVyIiwiZXh0cmEiLCJnZXRUaHJlYWRNZW1iZXJzIiwiZ2V0UmVhY3Rpb25zIiwicmVhY3Rpb24iLCJnZXRVc2VyIiwiZ2V0Q3VycmVudFVzZXIiLCJnZXRVc2VyQ29ubmVjdGlvbnMiLCJnZXRVc2VyQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbiIsImFwcGxpY2F0aW9uSWQiLCJnZXRWYW5pdHlVcmwiLCJnZXRWb2ljZVJlZ2lvbnMiLCJnZXRXZWJob29rIiwiZ2V0V2ViaG9va01lc3NhZ2UiLCJnZXRXZWJob29rV2l0aFRva2VuIiwiZ2V0V2VsY29tZVNjcmVlbiIsImdldFdpZGdldCIsIndpZGdldCIsImdldFdpZGdldFNldHRpbmdzIiwicHVibGlzaE1lc3NhZ2UiLCJzZWFyY2hHdWlsZE1lc3NhZ2VzIiwibWVzc2FnZXMiLCJzZW5kTWVzc2FnZSIsInNlbmRGb2xsb3d1cE1lc3NhZ2UiLCJzdGFydFRocmVhZFdpdGhNZXNzYWdlIiwic3RhcnRUaHJlYWRXaXRob3V0TWVzc2FnZSIsInN5bmNHdWlsZFRlbXBsYXRlIiwidXBzZXJ0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kcyIsImNvbW1hbmRzIiwidXBzZXJ0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRzIiwiZWRpdEN1cnJlbnRNZW1iZXIiLCJlZGl0TWVtYmVyIiwiZ2V0Q3VycmVudE1lbWJlciIsImdldE1lbWJlciIsImdldE1lbWJlcnMiLCJwcnVuZU1lbWJlcnMiLCJzZWFyY2hNZW1iZXJzIiwicXVlcnkiLCJidWxrQmFuTWVtYmVycyIsImJhbm5lZFVzZXJzIiwieCIsImZhaWxlZFVzZXJzIiwiZ2V0QXBwbGljYXRpb25BY3Rpdml0eUluc3RhbmNlIiwiaW5zdGFuY2VJZCIsImxpc3RBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uc01ldGFkYXRhUmVjb3JkcyIsInVwZGF0ZUFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb25zTWV0YWRhdGFSZWNvcmRzIiwiY3JlYXRlTG9iYnkiLCJsb2JieSIsImNyZWF0ZU9ySm9pbkxvYmJ5IiwiZ2V0TG9iYnkiLCJsb2JieUlkIiwibW9kaWZ5TG9iYnkiLCJhZGRNZW1iZXJUb0xvYmJ5IiwibG9iYnlNZW1iZXIiLCJidWxrVXBkYXRlTG9iYnlNZW1iZXJzIiwibGlua0NoYW5uZWxUb0xvYmJ5IiwidW5saW5rQ2hhbm5lbFRvTG9iYnkiLCJ1cGRhdGVMb2JieU1lc3NhZ2VNb2RlcmF0aW9uTWV0YWRhdGEiLCJzZW5kTG9iYnlNZXNzYWdlIiwibG9iYnlNZXNzYWdlIiwiZ2V0TG9iYnlNZXNzYWdlcyIsImNyZWF0ZUxvYmJ5Q2hhbm5lbEludml0ZUZvclNlbGYiLCJsb2JieUludml0ZSIsImNyZWF0ZUxvYmJ5Q2hhbm5lbEludml0ZUZvclVzZXIiLCJnZXRUYXJnZXRVc2VycyIsInVwZGF0ZVRhcmdldFVzZXJzIiwidGFyZ2V0VXNlcnNGaWxlIiwiZ2V0VGFyZ2V0VXNlcnNKb2JTdGF0dXMiLCJhZGRSZWFjdGlvbiIsImFkZFJlYWN0aW9ucyIsInJlYWN0aW9ucyIsIm9yZGVyZWQiLCJhZGRSb2xlIiwiYWRkVGhyZWFkTWVtYmVyIiwiYWRkRG1SZWNpcGllbnQiLCJhZGRHdWlsZE1lbWJlciIsImRlbGV0ZUF1dG9tb2RSdWxlIiwiZGVsZXRlQ2hhbm5lbCIsImRlbGV0ZUNoYW5uZWxQZXJtaXNzaW9uT3ZlcnJpZGUiLCJvdmVyd3JpdGVJZCIsImRlbGV0ZUVtb2ppIiwiZGVsZXRlQXBwbGljYXRpb25FbW9qaSIsImRlbGV0ZUZvbGxvd3VwTWVzc2FnZSIsImRlbGV0ZUdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZCIsImRlbGV0ZUd1aWxkQXBwbGljYXRpb25Db21tYW5kIiwiZGVsZXRlR3VpbGRTdGlja2VyIiwiZGVsZXRlR3VpbGRUZW1wbGF0ZSIsImRlbGV0ZUludGVncmF0aW9uIiwiaW50ZWdyYXRpb25JZCIsImRlbGV0ZUludml0ZSIsImRlbGV0ZU1lc3NhZ2UiLCJkZWxldGVNZXNzYWdlcyIsIm1lc3NhZ2VJZHMiLCJkZWxldGVPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2UiLCJkZWxldGVPd25SZWFjdGlvbiIsImRlbGV0ZVJlYWN0aW9uc0FsbCIsImRlbGV0ZVJlYWN0aW9uc0Vtb2ppIiwiZGVsZXRlUm9sZSIsImRlbGV0ZVNjaGVkdWxlZEV2ZW50IiwiZGVsZXRlU3RhZ2VJbnN0YW5jZSIsImRlbGV0ZVVzZXJSZWFjdGlvbiIsImRlbGV0ZVdlYmhvb2siLCJkZWxldGVXZWJob29rTWVzc2FnZSIsImRlbGV0ZVdlYmhvb2tXaXRoVG9rZW4iLCJlZGl0Q2hhbm5lbFBlcm1pc3Npb25PdmVycmlkZXMiLCJlZGl0Q2hhbm5lbFBvc2l0aW9ucyIsImNoYW5uZWxQb3NpdGlvbnMiLCJlZGl0T3duVm9pY2VTdGF0ZSIsImVkaXRVc2VyVm9pY2VTdGF0ZSIsImVkaXRVc2VyQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbiIsImRlbGV0ZUN1cnJlbnRVc2VyQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbiIsImpvaW5UaHJlYWQiLCJsZWF2ZUd1aWxkIiwibGVhdmVUaHJlYWQiLCJyZW1vdmVSb2xlIiwicmVtb3ZlVGhyZWFkTWVtYmVyIiwicmVtb3ZlRG1SZWNpcGllbnQiLCJzZW5kSW50ZXJhY3Rpb25SZXNwb25zZSIsImludGVyYWN0aW9uSWQiLCJwYXJhbXMiLCJyZXNwb25zZSIsImludGVyYWN0aW9uQ2FsbGJhY2tSZXNwb25zZSIsInRyaWdnZXJUeXBpbmdJbmRpY2F0b3IiLCJiYW5NZW1iZXIiLCJraWNrTWVtYmVyIiwicGluTWVzc2FnZSIsInVuYmFuTWVtYmVyIiwidW5waW5NZXNzYWdlIiwiZ2V0R3VpbGRPbmJvYXJkaW5nIiwiZ3VpbGRPbmJvYXJkaW5nIiwiZWRpdEd1aWxkT25ib2FyZGluZyIsImxpc3RFbnRpdGxlbWVudHMiLCJlbnRpdGxlbWVudCIsImdldEVudGl0bGVtZW50IiwiZW50aXRsZW1lbnRJZCIsImNyZWF0ZVRlc3RFbnRpdGxlbWVudCIsImRlbGV0ZVRlc3RFbnRpdGxlbWVudCIsImxpc3RTa3VzIiwic2t1IiwiZ2V0U3Vic2NyaXB0aW9uIiwic2t1SWQiLCJzdWJzY3JpcHRpb25JZCIsInN1YnNjcmlwdGlvbiIsImxpc3RTdWJzY3JpcHRpb25zIiwic2VuZFNvdW5kYm9hcmRTb3VuZCIsImxpc3REZWZhdWx0U291bmRib2FyZFNvdW5kcyIsInNvdW5kIiwic291bmRib2FyZFNvdW5kIiwibGlzdEd1aWxkU291bmRib2FyZFNvdW5kcyIsImdldEd1aWxkU291bmRib2FyZFNvdW5kIiwic291bmRJZCIsImNyZWF0ZUd1aWxkU291bmRib2FyZFNvdW5kIiwibW9kaWZ5R3VpbGRTb3VuZGJvYXJkU291bmQiLCJkZWxldGVHdWlsZFNvdW5kYm9hcmRTb3VuZCIsImRlbGV0ZUxvYmJ5IiwicmVtb3ZlTWVtYmVyRnJvbUxvYmJ5IiwibGVhdmVMb2JieSJdLCJtYXBw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
783
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9oZWxwZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUmVzdEVuZHBvaW50cyB9IGZyb20gJ0BkaXNjb3JkZW5vL3Jlc3QnO1xuaW1wb3J0IHR5cGUge1xuICBBZGREbVJlY2lwaWVudE9wdGlvbnMsXG4gIEFkZEd1aWxkTWVtYmVyT3B0aW9ucyxcbiAgQWRkTG9iYnlNZW1iZXIsXG4gIEF0TGVhc3RPbmUsXG4gIEJlZ2luR3VpbGRQcnVuZSxcbiAgQmlnU3RyaW5nLFxuICBCdWxrVXBkYXRlTG9iYnlNZW1iZXIsXG4gIENhbWVsaXplLFxuICBDcmVhdGVBcHBsaWNhdGlvbkNvbW1hbmQsXG4gIENyZWF0ZUFwcGxpY2F0aW9uRW1vamksXG4gIENyZWF0ZUF1dG9Nb2RlcmF0aW9uUnVsZU9wdGlvbnMsXG4gIENyZWF0ZUNoYW5uZWxJbnZpdGUsXG4gIENyZWF0ZUZvcnVtUG9zdFdpdGhNZXNzYWdlLFxuICBDcmVhdGVHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25zLFxuICBDcmVhdGVHcm91cERtT3B0aW9ucyxcbiAgQ3JlYXRlR3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25zLFxuICBDcmVhdGVHdWlsZEJhbixcbiAgQ3JlYXRlR3VpbGRCdWxrQmFuLFxuICBDcmVhdGVHdWlsZENoYW5uZWwsXG4gIENyZWF0ZUd1aWxkRW1vamksXG4gIENyZWF0ZUd1aWxkUm9sZSxcbiAgQ3JlYXRlR3VpbGRTb3VuZGJvYXJkU291bmQsXG4gIENyZWF0ZUd1aWxkU3RpY2tlck9wdGlvbnMsXG4gIENyZWF0ZUxvYmJ5LFxuICBDcmVhdGVNZXNzYWdlT3B0aW9ucyxcbiAgQ3JlYXRlT3JKb2luTG9iYnksXG4gIENyZWF0ZVNjaGVkdWxlZEV2ZW50LFxuICBDcmVhdGVTdGFnZUluc3RhbmNlLFxuICBDcmVhdGVUZW1wbGF0ZSxcbiAgQ3JlYXRlVGVzdEVudGl0bGVtZW50LFxuICBDcmVhdGVXZWJob29rLFxuICBEZWxldGVXZWJob29rTWVzc2FnZU9wdGlvbnMsXG4gIERpc2NvcmRBY2Nlc3NUb2tlblJlc3BvbnNlLFxuICBEaXNjb3JkQWN0aXZpdHlJbnN0YW5jZSxcbiAgRGlzY29yZEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zLFxuICBEaXNjb3JkQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbixcbiAgRGlzY29yZEFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb25NZXRhZGF0YSxcbiAgRGlzY29yZEF1ZGl0TG9nLFxuICBEaXNjb3JkQmFuLFxuICBEaXNjb3JkQ29ubmVjdGlvbixcbiAgRGlzY29yZEN1cnJlbnRBdXRob3JpemF0aW9uLFxuICBEaXNjb3JkRm9sbG93ZWRDaGFubmVsLFxuICBEaXNjb3JkR3VpbGRQcmV2aWV3LFxuICBEaXNjb3JkR3VpbGRXaWRnZXRTZXR0aW5ncyxcbiAgRGlzY29yZEludml0ZSxcbiAgRGlzY29yZExpc3RBcmNoaXZlZFRocmVhZHMsXG4gIERpc2NvcmRQcnVuZWRDb3VudCxcbiAgRGlzY29yZFNlYXJjaEd1aWxkTWVzc2FnZXMsXG4gIERpc2NvcmRTZWFyY2hHdWlsZE1lc3NhZ2VzSW5kZXhpbmcsXG4gIERpc2NvcmRUYXJnZXRVc2Vyc0pvYlN0YXR1cyxcbiAgRGlzY29yZFRva2VuRXhjaGFuZ2UsXG4gIERpc2NvcmRUb2tlblJldm9jYXRpb24sXG4gIERpc2NvcmRWYW5pdHlVcmwsXG4gIEVkaXRBcHBsaWNhdGlvbixcbiAgRWRpdEF1dG9Nb2RlcmF0aW9uUnVsZU9wdGlvbnMsXG4gIEVkaXRDaGFubmVsUGVybWlzc2lvbk92ZXJyaWRlc09wdGlvbnMsXG4gIEVkaXRHdWlsZE9uYm9hcmRpbmcsXG4gIEVkaXRHdWlsZFJvbGUsXG4gIEVkaXRHdWlsZFN0aWNrZXJPcHRpb25zLFxuICBFZGl0TWVzc2FnZSxcbiAgRWRpdE93blZvaWNlU3RhdGUsXG4gIEVkaXRTY2hlZHVsZWRFdmVudCxcbiAgRWRpdFVzZXJWb2ljZVN0YXRlLFxuICBFZGl0V2ViaG9va01lc3NhZ2VPcHRpb25zLFxuICBFeGVjdXRlV2ViaG9vayxcbiAgR2V0QXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbk9wdGlvbnMsXG4gIEdldEJhbnMsXG4gIEdldENoYW5uZWxQaW5zT3B0aW9ucyxcbiAgR2V0RW50aXRsZW1lbnRzLFxuICBHZXRHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmRzT3B0aW9ucyxcbiAgR2V0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRzT3B0aW9ucyxcbiAgR2V0R3VpbGRBdWRpdExvZyxcbiAgR2V0R3VpbGRQcnVuZUNvdW50UXVlcnksXG4gIEdldEludml0ZSxcbiAgR2V0TG9iYnlNZXNzYWdlcyxcbiAgR2V0TWVzc2FnZXNPcHRpb25zLFxuICBHZXRQb2xsQW5zd2VyVm90ZXMsXG4gIEdldFJlYWN0aW9ucyxcbiAgR2V0U2NoZWR1bGVkRXZlbnRzLFxuICBHZXRTY2hlZHVsZWRFdmVudFVzZXJzLFxuICBHZXRUaHJlYWRNZW1iZXIsXG4gIEdldFVzZXJHdWlsZHMsXG4gIEdldFdlYmhvb2tNZXNzYWdlT3B0aW9ucyxcbiAgSW50ZXJhY3Rpb25DYWxsYmFja0RhdGEsXG4gIEludGVyYWN0aW9uQ2FsbGJhY2tPcHRpb25zLFxuICBJbnRlcmFjdGlvblJlc3BvbnNlLFxuICBMaW5rQ2hhbm5lbFRvTG9iYnksXG4gIExpc3RBcmNoaXZlZFRocmVhZHMsXG4gIExpc3RHdWlsZE1lbWJlcnMsXG4gIExpc3RTa3VTdWJzY3JpcHRpb25zT3B0aW9ucyxcbiAgTGlzdFRocmVhZE1lbWJlcnMsXG4gIE1vZGlmeUFwcGxpY2F0aW9uRW1vamksXG4gIE1vZGlmeUNoYW5uZWwsXG4gIE1vZGlmeUN1cnJlbnRNZW1iZXIsXG4gIE1vZGlmeUd1aWxkLFxuICBNb2RpZnlHdWlsZENoYW5uZWxQb3NpdGlvbnMsXG4gIE1vZGlmeUd1aWxkRW1vamksXG4gIE1vZGlmeUd1aWxkSW5jaWRlbnRBY3Rpb25zLFxuICBNb2RpZnlHdWlsZE1lbWJlcixcbiAgTW9kaWZ5R3VpbGRTb3VuZGJvYXJkU291bmQsXG4gIE1vZGlmeUd1aWxkVGVtcGxhdGUsXG4gIE1vZGlmeUd1aWxkV2VsY29tZVNjcmVlbixcbiAgTW9kaWZ5TG9iYnksXG4gIE1vZGlmeVJvbGVQb3NpdGlvbnMsXG4gIE1vZGlmeVdlYmhvb2ssXG4gIFNlYXJjaEd1aWxkTWVzc2FnZXNPcHRpb25zLFxuICBTZWFyY2hNZW1iZXJzLFxuICBTZW5kTG9iYnlNZXNzYWdlLFxuICBTZW5kU291bmRib2FyZFNvdW5kLFxuICBTdGFydFRocmVhZFdpdGhNZXNzYWdlLFxuICBTdGFydFRocmVhZFdpdGhvdXRNZXNzYWdlLFxuICBVcHNlcnRHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25zLFxuICBVcHNlcnRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZE9wdGlvbnMsXG59IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJztcbmltcG9ydCB7IGNhbWVsaXplIH0gZnJvbSAnQGRpc2NvcmRlbm8vdXRpbHMnO1xuaW1wb3J0IHR5cGUgeyBCb3QgfSBmcm9tICcuL2JvdC5qcyc7XG5pbXBvcnQgdHlwZSB7IERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3IsIFNldHVwRGVzaXJlZFByb3BzLCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcyB9IGZyb20gJy4vZGVzaXJlZFByb3BlcnRpZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBUaHJlYWRNZW1iZXJUcmFuc2Zvcm1lckV4dHJhIH0gZnJvbSAnLi90cmFuc2Zvcm1lcnMvdGhyZWFkTWVtYmVyLmpzJztcbmltcG9ydCB0eXBlIHtcbiAgQXBwbGljYXRpb24sXG4gIEFwcGxpY2F0aW9uQ29tbWFuZCxcbiAgQXV0b01vZGVyYXRpb25SdWxlLFxuICBDaGFubmVsLFxuICBFbW9qaSxcbiAgRW50aXRsZW1lbnQsXG4gIEdldEdhdGV3YXlCb3QsXG4gIEd1aWxkLFxuICBHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zLFxuICBHdWlsZE9uYm9hcmRpbmcsXG4gIEd1aWxkV2lkZ2V0LFxuICBHdWlsZFdpZGdldFNldHRpbmdzLFxuICBJbmNpZGVudHNEYXRhLFxuICBJbnRlZ3JhdGlvbixcbiAgSW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlLFxuICBJbnZpdGUsXG4gIExvYmJ5LFxuICBMb2JieUludml0ZSxcbiAgTG9iYnlNZW1iZXIsXG4gIExvYmJ5TWVzc2FnZSxcbiAgTWVtYmVyLFxuICBNZXNzYWdlLFxuICBNZXNzYWdlUGluLFxuICBSb2xlLFxuICBTY2hlZHVsZWRFdmVudCxcbiAgU2t1LFxuICBTb3VuZGJvYXJkU291bmQsXG4gIFN0YWdlSW5zdGFuY2UsXG4gIFN0aWNrZXIsXG4gIFN0aWNrZXJQYWNrLFxuICBTdWJzY3JpcHRpb24sXG4gIFRlbXBsYXRlLFxuICBUaHJlYWRNZW1iZXIsXG4gIFVzZXIsXG4gIFZvaWNlUmVnaW9uLFxuICBWb2ljZVN0YXRlLFxuICBXZWJob29rLFxuICBXZWxjb21lU2NyZWVuLFxufSBmcm9tICcuL3RyYW5zZm9ybWVycy90eXBlcy5qcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVCb3RIZWxwZXJzPFRQcm9wcyBleHRlbmRzIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBUQmVoYXZpb3IgZXh0ZW5kcyBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPihcbiAgYm90OiBCb3Q8VFByb3BzLCBUQmVoYXZpb3I+LFxuKTogQm90SGVscGVyczxUUHJvcHMsIFRCZWhhdmlvcj4ge1xuICByZXR1cm4ge1xuICAgIGNyZWF0ZUF1dG9tb2RSdWxlOiBhc3luYyAoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5hdXRvTW9kZXJhdGlvblJ1bGUoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5jcmVhdGVBdXRvbW9kUnVsZShndWlsZElkLCBvcHRpb25zLCByZWFzb24pKTtcbiAgICB9LFxuICAgIGNyZWF0ZUNoYW5uZWw6IGFzeW5jIChndWlsZElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmNoYW5uZWwoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5jcmVhdGVDaGFubmVsKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbiksIHsgZ3VpbGRJZCB9KTtcbiAgICB9LFxuICAgIGNyZWF0ZUVtb2ppOiBhc3luYyAoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5lbW9qaShib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmNyZWF0ZUVtb2ppKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikpO1xuICAgIH0sXG4gICAgY3JlYXRlQXBwbGljYXRpb25FbW9qaTogYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmVtb2ppKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuY3JlYXRlQXBwbGljYXRpb25FbW9qaShvcHRpb25zKSk7XG4gICAgfSxcbiAgICBjcmVhdGVGb3J1bVRocmVhZDogYXN5bmMgKGNoYW5uZWxJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jaGFubmVsKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuY3JlYXRlRm9ydW1UaHJlYWQoY2hhbm5lbElkLCBvcHRpb25zLCByZWFzb24pKTtcbiAgICB9LFxuICAgIGNyZWF0ZUdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZDogYXN5bmMgKGNvbW1hbmQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmFwcGxpY2F0aW9uQ29tbWFuZChib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmNyZWF0ZUdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZChjb21tYW5kLCBvcHRpb25zKSk7XG4gICAgfSxcbiAgICBjcmVhdGVHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZDogYXN5bmMgKGNvbW1hbmQsIGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmFwcGxpY2F0aW9uQ29tbWFuZChib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmNyZWF0ZUd1aWxkQXBwbGljYXRpb25Db21tYW5kKGNvbW1hbmQsIGd1aWxkSWQsIG9wdGlvbnMpKTtcbiAgICB9LFxuICAgIGNyZWF0ZUd1aWxkU3RpY2tlcjogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuc3RpY2tlcihib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmNyZWF0ZUd1aWxkU3RpY2tlcihndWlsZElkLCBvcHRpb25zLCByZWFzb24pKTtcbiAgICB9LFxuICAgIGNyZWF0ZUd1aWxkVGVtcGxhdGU6IGFzeW5jIChndWlsZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy50ZW1wbGF0ZShib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmNyZWF0ZUd1aWxkVGVtcGxhdGUoZ3VpbGRJZCwgb3B0aW9ucykpO1xuICAgIH0sXG4gICAgY3JlYXRlSW52aXRlOiBhc3luYyAoY2hhbm5lbElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5jcmVhdGVJbnZpdGUoY2hhbm5lbElkLCBvcHRpb25zLCByZWFzb24pO1xuICAgIH0sXG4gICAgZ2V0R3VpbGRSb2xlTWVtYmVyQ291bnRzOiBhc3luYyAoZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldEd1aWxkUm9sZU1lbWJlckNvdW50cyhndWlsZElkKTtcbiAgICB9LFxuICAgIGNyZWF0ZVJvbGU6IGFzeW5jIChndWlsZElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnJvbGUoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5jcmVhdGVSb2xlKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbiksIHsgZ3VpbGRJZCB9KTtcbiAgICB9LFxuICAgIGNyZWF0ZVNjaGVkdWxlZEV2ZW50OiBhc3luYyAoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5zY2hlZHVsZWRFdmVudChib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmNyZWF0ZVNjaGVkdWxlZEV2ZW50KGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikpO1xuICAgIH0sXG4gICAgY3JlYXRlU3RhZ2VJbnN0YW5jZTogYXN5bmMgKG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuc3RhZ2VJbnN0YW5jZShib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmNyZWF0ZVN0YWdlSW5zdGFuY2Uob3B0aW9ucywgcmVhc29uKSk7XG4gICAgfSxcbiAgICBjcmVhdGVXZWJob29rOiBhc3luYyAoY2hhbm5lbElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLndlYmhvb2soYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5jcmVhdGVXZWJob29rKGNoYW5uZWxJZCwgb3B0aW9ucywgcmVhc29uKSk7XG4gICAgfSxcbiAgICBlZGl0QXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnM6IGFzeW5jIChndWlsZElkLCBjb21tYW5kSWQsIGJlYXJlclRva2VuLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5ndWlsZEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zKFxuICAgICAgICBib3QsXG4gICAgICAgIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmVkaXRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9ucyhndWlsZElkLCBjb21tYW5kSWQsIGJlYXJlclRva2VuLCBvcHRpb25zKSxcbiAgICAgICk7XG4gICAgfSxcbiAgICBlZGl0QXV0b21vZFJ1bGU6IGFzeW5jIChndWlsZElkLCBydWxlSWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuYXV0b01vZGVyYXRpb25SdWxlKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZWRpdEF1dG9tb2RSdWxlKGd1aWxkSWQsIHJ1bGVJZCwgb3B0aW9ucywgcmVhc29uKSk7XG4gICAgfSxcbiAgICBlZGl0Qm90UHJvZmlsZTogYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnVzZXIoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5lZGl0Qm90UHJvZmlsZShvcHRpb25zKSk7XG4gICAgfSxcbiAgICBlZGl0Q2hhbm5lbDogYXN5bmMgKGNoYW5uZWxJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jaGFubmVsKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZWRpdENoYW5uZWwoY2hhbm5lbElkLCBvcHRpb25zLCByZWFzb24pKTtcbiAgICB9LFxuICAgIGVkaXRFbW9qaTogYXN5bmMgKGd1aWxkSWQsIGlkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmVtb2ppKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZWRpdEVtb2ppKGd1aWxkSWQsIGlkLCBvcHRpb25zLCByZWFzb24pKTtcbiAgICB9LFxuICAgIGVkaXRBcHBsaWNhdGlvbkVtb2ppOiBhc3luYyAoaWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmVtb2ppKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZWRpdEFwcGxpY2F0aW9uRW1vamkoaWQsIG9wdGlvbnMpKTtcbiAgICB9LFxuICAgIGVkaXRGb2xsb3d1cE1lc3NhZ2U6IGFzeW5jICh0b2tlbiwgbWVzc2FnZUlkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5tZXNzYWdlKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZWRpdEZvbGxvd3VwTWVzc2FnZSh0b2tlbiwgbWVzc2FnZUlkLCBvcHRpb25zKSk7XG4gICAgfSxcbiAgICBlZGl0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kOiBhc3luYyAoY29tbWFuZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5hcHBsaWNhdGlvbkNvbW1hbmQoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5lZGl0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kKGNvbW1hbmRJZCwgb3B0aW9ucykpO1xuICAgIH0sXG4gICAgZWRpdEd1aWxkOiBhc3luYyAoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5ndWlsZChib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmVkaXRHdWlsZChndWlsZElkLCBvcHRpb25zLCByZWFzb24pKTtcbiAgICB9LFxuICAgIGVkaXRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZDogYXN5bmMgKGNvbW1hbmRJZCwgZ3VpbGRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuYXBwbGljYXRpb25Db21tYW5kKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZWRpdEd1aWxkQXBwbGljYXRpb25Db21tYW5kKGNvbW1hbmRJZCwgZ3VpbGRJZCwgb3B0aW9ucykpO1xuICAgIH0sXG4gICAgZWRpdEd1aWxkU3RpY2tlcjogYXN5bmMgKGd1aWxkSWQsIHN0aWNrZXJJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5zdGlja2VyKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZWRpdEd1aWxkU3RpY2tlcihndWlsZElkLCBzdGlja2VySWQsIG9wdGlvbnMsIHJlYXNvbikpO1xuICAgIH0sXG4gICAgZWRpdEd1aWxkVGVtcGxhdGU6IGFzeW5jIChndWlsZElkLCB0ZW1wbGF0ZUNvZGUsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnRlbXBsYXRlKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZWRpdEd1aWxkVGVtcGxhdGUoZ3VpbGRJZCwgdGVtcGxhdGVDb2RlLCBvcHRpb25zKSk7XG4gICAgfSxcbiAgICBlZGl0TWVzc2FnZTogYXN5bmMgKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5tZXNzYWdlKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZWRpdE1lc3NhZ2UoY2hhbm5lbElkLCBtZXNzYWdlSWQsIG9wdGlvbnMpKTtcbiAgICB9LFxuICAgIGVkaXRPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2U6IGFzeW5jICh0b2tlbiwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmVkaXRPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2UodG9rZW4sIG9wdGlvbnMpKTtcbiAgICB9LFxuICAgIGVkaXRSb2xlOiBhc3luYyAoZ3VpbGRJZCwgcm9sZUlkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnJvbGUoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5lZGl0Um9sZShndWlsZElkLCByb2xlSWQsIG9wdGlvbnMsIHJlYXNvbiksIHsgZ3VpbGRJZCB9KTtcbiAgICB9LFxuICAgIGVkaXRSb2xlUG9zaXRpb25zOiBhc3luYyAoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LnNuYWtlLmVkaXRSb2xlUG9zaXRpb25zKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikpLm1hcCgocm9sZSkgPT4gYm90LnRyYW5zZm9ybWVycy5yb2xlKGJvdCwgcm9sZSwgeyBndWlsZElkIH0pKTtcbiAgICB9LFxuICAgIGVkaXRTY2hlZHVsZWRFdmVudDogYXN5bmMgKGd1aWxkSWQsIGV2ZW50SWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuc2NoZWR1bGVkRXZlbnQoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5lZGl0U2NoZWR1bGVkRXZlbnQoZ3VpbGRJZCwgZXZlbnRJZCwgb3B0aW9ucywgcmVhc29uKSk7XG4gICAgfSxcbiAgICBlZGl0U3RhZ2VJbnN0YW5jZTogYXN5bmMgKGNoYW5uZWxJZCwgdG9waWMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuc3RhZ2VJbnN0YW5jZShib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmVkaXRTdGFnZUluc3RhbmNlKGNoYW5uZWxJZCwgdG9waWMsIHJlYXNvbikpO1xuICAgIH0sXG4gICAgZWRpdFdlYmhvb2s6IGFzeW5jICh3ZWJob29rSWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMud2ViaG9vayhib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmVkaXRXZWJob29rKHdlYmhvb2tJZCwgb3B0aW9ucywgcmVhc29uKSk7XG4gICAgfSxcbiAgICBlZGl0V2ViaG9va01lc3NhZ2U6IGFzeW5jICh3ZWJob29rSWQsIHRva2VuLCBtZXNzYWdlSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLm1lc3NhZ2UoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5lZGl0V2ViaG9va01lc3NhZ2Uod2ViaG9va0lkLCB0b2tlbiwgbWVzc2FnZUlkLCBvcHRpb25zKSk7XG4gICAgfSxcbiAgICBlZGl0V2ViaG9va1dpdGhUb2tlbjogYXN5bmMgKHdlYmhvb2tJZCwgdG9rZW4sIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLndlYmhvb2soYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5lZGl0V2ViaG9va1dpdGhUb2tlbih3ZWJob29rSWQsIHRva2VuLCBvcHRpb25zKSk7XG4gICAgfSxcbiAgICBlZGl0V2VsY29tZVNjcmVlbjogYXN5bmMgKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMud2VsY29tZVNjcmVlbihib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmVkaXRXZWxjb21lU2NyZWVuKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikpO1xuICAgIH0sXG4gICAgZWRpdFdpZGdldFNldHRpbmdzOiBhc3luYyAoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5ndWlsZFdpZGdldFNldHRpbmdzKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZWRpdFdpZGdldFNldHRpbmdzKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikpO1xuICAgIH0sXG4gICAgZXhlY3V0ZVdlYmhvb2s6IGFzeW5jICh3ZWJob29rSWQsIHRva2VuLCBvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBib3QucmVzdC5zbmFrZS5leGVjdXRlV2ViaG9vayh3ZWJob29rSWQsIHRva2VuLCBvcHRpb25zKTtcbiAgICAgIGlmICghcmVzdWx0KSByZXR1cm47XG5cbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLm1lc3NhZ2UoYm90LCByZXN1bHQpO1xuICAgIH0sXG4gICAgZm9sbG93QW5ub3VuY2VtZW50OiBhc3luYyAoc291cmNlQ2hhbm5lbElkLCB0YXJnZXRDaGFubmVsSWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5mb2xsb3dBbm5vdW5jZW1lbnQoc291cmNlQ2hhbm5lbElkLCB0YXJnZXRDaGFubmVsSWQpO1xuICAgIH0sXG4gICAgZ2V0QWN0aXZlVGhyZWFkczogYXN5bmMgKGd1aWxkSWQpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldEFjdGl2ZVRocmVhZHMoZ3VpbGRJZCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0aHJlYWRzOiByZXN1bHQudGhyZWFkcy5tYXAoKHRocmVhZCkgPT4gYm90LnRyYW5zZm9ybWVycy5jaGFubmVsKGJvdCwgdGhyZWFkLCB7IGd1aWxkSWQgfSkpLFxuICAgICAgICBtZW1iZXJzOiByZXN1bHQubWVtYmVycy5tYXAoKG1lbWJlcikgPT4gYm90LnRyYW5zZm9ybWVycy50aHJlYWRNZW1iZXIoYm90LCBtZW1iZXIsIHsgZ3VpbGRJZCB9KSksXG4gICAgICB9O1xuICAgIH0sXG4gICAgZ2V0QXBwbGljYXRpb25JbmZvOiBhc3luYyAoKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5hcHBsaWNhdGlvbihib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldEFwcGxpY2F0aW9uSW5mbygpKTtcbiAgICB9LFxuICAgIGVkaXRBcHBsaWNhdGlvbkluZm86IGFzeW5jIChib2R5KSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5hcHBsaWNhdGlvbihib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmVkaXRBcHBsaWNhdGlvbkluZm8oYm9keSkpO1xuICAgIH0sXG4gICAgZ2V0Q3VycmVudEF1dGhlbnRpY2F0aW9uSW5mbzogYXN5bmMgKGJlYXJlclRva2VuKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZ2V0Q3VycmVudEF1dGhlbnRpY2F0aW9uSW5mbyhiZWFyZXJUb2tlbik7XG4gICAgfSxcbiAgICBleGNoYW5nZVRva2VuOiBhc3luYyAoY2xpZW50SWQsIGNsaWVudFNlY3JldCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmV4Y2hhbmdlVG9rZW4oY2xpZW50SWQsIGNsaWVudFNlY3JldCwgb3B0aW9ucyk7XG4gICAgfSxcbiAgICByZXZva2VUb2tlbjogYXN5bmMgKGNsaWVudElkLCBjbGllbnRTZWNyZXQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5zbmFrZS5yZXZva2VUb2tlbihjbGllbnRJZCwgY2xpZW50U2VjcmV0LCBvcHRpb25zKTtcbiAgICB9LFxuICAgIGdldEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb246IGFzeW5jIChndWlsZElkLCBjb21tYW5kSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmd1aWxkQXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnMoXG4gICAgICAgIGJvdCxcbiAgICAgICAgYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0QXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbihndWlsZElkLCBjb21tYW5kSWQsIG9wdGlvbnMpLFxuICAgICAgKTtcbiAgICB9LFxuICAgIGdldEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zOiBhc3luYyAoZ3VpbGRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9ucyhndWlsZElkLCBvcHRpb25zKSkubWFwKChyZXMpID0+XG4gICAgICAgIGJvdC50cmFuc2Zvcm1lcnMuZ3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9ucyhib3QsIHJlcyksXG4gICAgICApO1xuICAgIH0sXG4gICAgZ2V0QXVkaXRMb2c6IGFzeW5jIChndWlsZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZ2V0QXVkaXRMb2coZ3VpbGRJZCwgb3B0aW9ucyk7XG4gICAgfSxcbiAgICBnZXRBdXRvbW9kUnVsZTogYXN5bmMgKGd1aWxkSWQsIHJ1bGVJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuYXV0b01vZGVyYXRpb25SdWxlKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0QXV0b21vZFJ1bGUoZ3VpbGRJZCwgcnVsZUlkKSk7XG4gICAgfSxcbiAgICBnZXRBdXRvbW9kUnVsZXM6IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldEF1dG9tb2RSdWxlcyhndWlsZElkKSkubWFwKChyZXMpID0+IGJvdC50cmFuc2Zvcm1lcnMuYXV0b01vZGVyYXRpb25SdWxlKGJvdCwgcmVzKSk7XG4gICAgfSxcbiAgICBnZXRBdmFpbGFibGVWb2ljZVJlZ2lvbnM6IGFzeW5jICgpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0QXZhaWxhYmxlVm9pY2VSZWdpb25zKCkpLm1hcCgocmVzKSA9PiBib3QudHJhbnNmb3JtZXJzLnZvaWNlUmVnaW9uKGJvdCwgcmVzKSk7XG4gICAgfSxcbiAgICBnZXRCYW46IGFzeW5jIChndWlsZElkLCB1c2VySWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5nZXRCYW4oZ3VpbGRJZCwgdXNlcklkKTtcbiAgICB9LFxuICAgIGdldEJhbnM6IGFzeW5jIChndWlsZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZ2V0QmFucyhndWlsZElkLCBvcHRpb25zKTtcbiAgICB9LFxuICAgIGdldENoYW5uZWw6IGFzeW5jIChjaGFubmVsSWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmNoYW5uZWwoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRDaGFubmVsKGNoYW5uZWxJZCkpO1xuICAgIH0sXG4gICAgZ2V0Q2hhbm5lbEludml0ZXM6IGFzeW5jIChjaGFubmVsSWQpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0Q2hhbm5lbEludml0ZXMoY2hhbm5lbElkKSkubWFwKChyZXMpID0+IGJvdC50cmFuc2Zvcm1lcnMuaW52aXRlKGJvdCwgcmVzKSk7XG4gICAgfSxcbiAgICBnZXRDaGFubmVsczogYXN5bmMgKGd1aWxkSWQpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0Q2hhbm5lbHMoZ3VpbGRJZCkpLm1hcCgocmVzKSA9PiBib3QudHJhbnNmb3JtZXJzLmNoYW5uZWwoYm90LCByZXMsIHsgZ3VpbGRJZCB9KSk7XG4gICAgfSxcbiAgICBnZXRDaGFubmVsV2ViaG9va3M6IGFzeW5jIChjaGFubmVsSWQpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0Q2hhbm5lbFdlYmhvb2tzKGNoYW5uZWxJZCkpLm1hcCgocmVzKSA9PiBib3QudHJhbnNmb3JtZXJzLndlYmhvb2soYm90LCByZXMpKTtcbiAgICB9LFxuICAgIGdldERtQ2hhbm5lbDogYXN5bmMgKHVzZXJJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY2hhbm5lbChib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldERtQ2hhbm5lbCh1c2VySWQpKTtcbiAgICB9LFxuICAgIGdldEdyb3VwRG1DaGFubmVsOiBhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY2hhbm5lbChib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldEdyb3VwRG1DaGFubmVsKG9wdGlvbnMpKTtcbiAgICB9LFxuICAgIGdldEVtb2ppOiBhc3luYyAoZ3VpbGRJZCwgZW1vamlJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuZW1vamkoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRFbW9qaShndWlsZElkLCBlbW9qaUlkKSk7XG4gICAgfSxcbiAgICBnZXRBcHBsaWNhdGlvbkVtb2ppOiBhc3luYyAoZW1vamlJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuZW1vamkoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRBcHBsaWNhdGlvbkVtb2ppKGVtb2ppSWQpKTtcbiAgICB9LFxuICAgIGdldEVtb2ppczogYXN5bmMgKGd1aWxkSWQpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0RW1vamlzKGd1aWxkSWQpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy5lbW9qaShib3QsIHJlcykpO1xuICAgIH0sXG4gICAgZ2V0QXBwbGljYXRpb25FbW9qaXM6IGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldEFwcGxpY2F0aW9uRW1vamlzKCk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGl0ZW1zOiByZXMuaXRlbXMubWFwKChpdGVtKSA9PiBib3QudHJhbnNmb3JtZXJzLmVtb2ppKGJvdCwgaXRlbSkpLFxuICAgICAgfTtcbiAgICB9LFxuICAgIGdldEZvbGxvd3VwTWVzc2FnZTogYXN5bmMgKHRva2VuLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLm1lc3NhZ2UoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRGb2xsb3d1cE1lc3NhZ2UodG9rZW4sIG1lc3NhZ2VJZCkpO1xuICAgIH0sXG4gICAgZ2V0R2F0ZXdheUJvdDogYXN5bmMgKCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuZ2F0ZXdheUJvdChib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldEdhdGV3YXlCb3QoKSk7XG4gICAgfSxcbiAgICBnZXRHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmQ6IGFzeW5jIChjb21tYW5kSWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmFwcGxpY2F0aW9uQ29tbWFuZChib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldEdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZChjb21tYW5kSWQpKTtcbiAgICB9LFxuICAgIGdldEdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZHM6IGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldEdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZHMob3B0aW9ucykpLm1hcCgocmVzKSA9PiBib3QudHJhbnNmb3JtZXJzLmFwcGxpY2F0aW9uQ29tbWFuZChib3QsIHJlcykpO1xuICAgIH0sXG4gICAgZ2V0R3VpbGQ6IGFzeW5jIChndWlsZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5ndWlsZChib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldEd1aWxkKGd1aWxkSWQsIG9wdGlvbnMpKTtcbiAgICB9LFxuICAgIGdldEd1aWxkczogYXN5bmMgKGJlYXJlclRva2VuLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldEd1aWxkcyhiZWFyZXJUb2tlbiwgb3B0aW9ucykpLm1hcCgocmVzKSA9PiBib3QudHJhbnNmb3JtZXJzLmd1aWxkKGJvdCwgcmVzLCB7IHBhcnRpYWw6IHRydWUgfSkpO1xuICAgIH0sXG4gICAgZ2V0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmQ6IGFzeW5jIChjb21tYW5kSWQsIGd1aWxkSWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmFwcGxpY2F0aW9uQ29tbWFuZChib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldEd1aWxkQXBwbGljYXRpb25Db21tYW5kKGNvbW1hbmRJZCwgZ3VpbGRJZCkpO1xuICAgIH0sXG4gICAgZ2V0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRzOiBhc3luYyAoZ3VpbGRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZHMoZ3VpbGRJZCwgb3B0aW9ucykpLm1hcCgocmVzKSA9PiBib3QudHJhbnNmb3JtZXJzLmFwcGxpY2F0aW9uQ29tbWFuZChib3QsIHJlcykpO1xuICAgIH0sXG4gICAgZ2V0R3VpbGRQcmV2aWV3OiBhc3luYyAoZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmdldEd1aWxkUHJldmlldyhndWlsZElkKTtcbiAgICB9LFxuICAgIGdldEd1aWxkU3RpY2tlcjogYXN5bmMgKGd1aWxkSWQsIHN0aWNrZXJJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuc3RpY2tlcihib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldEd1aWxkU3RpY2tlcihndWlsZElkLCBzdGlja2VySWQpKTtcbiAgICB9LFxuICAgIGdldEd1aWxkU3RpY2tlcnM6IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldEd1aWxkU3RpY2tlcnMoZ3VpbGRJZCkpLm1hcCgocmVzKSA9PiBib3QudHJhbnNmb3JtZXJzLnN0aWNrZXIoYm90LCByZXMpKTtcbiAgICB9LFxuICAgIGdldEd1aWxkVGVtcGxhdGU6IGFzeW5jICh0ZW1wbGF0ZUNvZGUpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnRlbXBsYXRlKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0R3VpbGRUZW1wbGF0ZSh0ZW1wbGF0ZUNvZGUpKTtcbiAgICB9LFxuICAgIGdldEd1aWxkVGVtcGxhdGVzOiBhc3luYyAoZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRHdWlsZFRlbXBsYXRlcyhndWlsZElkKSkubWFwKChyZXMpID0+IGJvdC50cmFuc2Zvcm1lcnMudGVtcGxhdGUoYm90LCByZXMpKTtcbiAgICB9LFxuICAgIGdldEd1aWxkV2ViaG9va3M6IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldEd1aWxkV2ViaG9va3MoZ3VpbGRJZCkpLm1hcCgocmVzKSA9PiBib3QudHJhbnNmb3JtZXJzLndlYmhvb2soYm90LCByZXMpKTtcbiAgICB9LFxuICAgIGdldEludGVncmF0aW9uczogYXN5bmMgKGd1aWxkSWQpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0SW50ZWdyYXRpb25zKGd1aWxkSWQpKS5tYXAoKHJlcykgPT5cbiAgICAgICAgYm90LnRyYW5zZm9ybWVycy5pbnRlZ3JhdGlvbihib3QsIHsgLi4ucmVzLCBndWlsZF9pZDogZ3VpbGRJZC50b1N0cmluZygpIH0pLFxuICAgICAgKTtcbiAgICB9LFxuICAgIGdldEludml0ZTogYXN5bmMgKGludml0ZUNvZGUsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmludml0ZShib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldEludml0ZShpbnZpdGVDb2RlLCBvcHRpb25zKSk7XG4gICAgfSxcbiAgICBnZXRJbnZpdGVzOiBhc3luYyAoZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRJbnZpdGVzKGd1aWxkSWQpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy5pbnZpdGUoYm90LCByZXMpKTtcbiAgICB9LFxuICAgIGdldE1lc3NhZ2U6IGFzeW5jIChjaGFubmVsSWQsIG1lc3NhZ2VJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldE1lc3NhZ2UoY2hhbm5lbElkLCBtZXNzYWdlSWQpKTtcbiAgICB9LFxuICAgIGdldE1lc3NhZ2VzOiBhc3luYyAoY2hhbm5lbElkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldE1lc3NhZ2VzKGNoYW5uZWxJZCwgb3B0aW9ucykpLm1hcCgocmVzKSA9PiBib3QudHJhbnNmb3JtZXJzLm1lc3NhZ2UoYm90LCByZXMpKTtcbiAgICB9LFxuICAgIGdldFN0aWNrZXJQYWNrOiBhc3luYyAoc3RpY2tlclBhY2tJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuc3RpY2tlclBhY2soYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRTdGlja2VyUGFjayhzdGlja2VyUGFja0lkKSk7XG4gICAgfSxcbiAgICBnZXRTdGlja2VyUGFja3M6IGFzeW5jICgpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0U3RpY2tlclBhY2tzKCkpLm1hcCgocmVzKSA9PiBib3QudHJhbnNmb3JtZXJzLnN0aWNrZXJQYWNrKGJvdCwgcmVzKSk7XG4gICAgfSxcbiAgICBnZXRPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2U6IGFzeW5jICh0b2tlbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldE9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZSh0b2tlbikpO1xuICAgIH0sXG4gICAgZ2V0Q2hhbm5lbFBpbnM6IGFzeW5jIChjaGFubmVsSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldENoYW5uZWxQaW5zKGNoYW5uZWxJZCwgb3B0aW9ucyk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGhhc01vcmU6IHJlcy5oYXNfbW9yZSxcbiAgICAgICAgaXRlbXM6IHJlcy5pdGVtcy5tYXAoKGl0ZW0pID0+IGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZVBpbihib3QsIGl0ZW0pKSxcbiAgICAgIH07XG4gICAgfSxcbiAgICBnZXRQaW5uZWRNZXNzYWdlczogYXN5bmMgKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRQaW5uZWRNZXNzYWdlcyhjaGFubmVsSWQpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy5tZXNzYWdlKGJvdCwgcmVzKSk7XG4gICAgfSxcbiAgICBnZXRQcml2YXRlQXJjaGl2ZWRUaHJlYWRzOiBhc3luYyAoY2hhbm5lbElkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QuZ2V0UHJpdmF0ZUFyY2hpdmVkVGhyZWFkcyhjaGFubmVsSWQsIG9wdGlvbnMpO1xuICAgIH0sXG4gICAgZ2V0UHJpdmF0ZUpvaW5lZEFyY2hpdmVkVGhyZWFkczogYXN5bmMgKGNoYW5uZWxJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmdldFByaXZhdGVKb2luZWRBcmNoaXZlZFRocmVhZHMoY2hhbm5lbElkLCBvcHRpb25zKTtcbiAgICB9LFxuICAgIGdldFBydW5lQ291bnQ6IGFzeW5jIChndWlsZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0UHJ1bmVDb3VudChndWlsZElkLCBvcHRpb25zKTtcbiAgICB9LFxuICAgIGdldFB1YmxpY0FyY2hpdmVkVGhyZWFkczogYXN5bmMgKGNoYW5uZWxJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmdldFB1YmxpY0FyY2hpdmVkVGhyZWFkcyhjaGFubmVsSWQsIG9wdGlvbnMpO1xuICAgIH0sXG4gICAgZ2V0Um9sZXM6IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldFJvbGVzKGd1aWxkSWQpKS5tYXAoKHJvbGUpID0+IGJvdC50cmFuc2Zvcm1lcnMucm9sZShib3QsIHJvbGUsIHsgZ3VpbGRJZCB9KSk7XG4gICAgfSxcbiAgICBnZXRSb2xlOiBhc3luYyAoZ3VpbGRJZCwgcm9sZUlkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5yb2xlKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0Um9sZShndWlsZElkLCByb2xlSWQpLCB7IGd1aWxkSWQgfSk7XG4gICAgfSxcbiAgICBnZXRTY2hlZHVsZWRFdmVudDogYXN5bmMgKGd1aWxkSWQsIGV2ZW50SWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnNjaGVkdWxlZEV2ZW50KGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0U2NoZWR1bGVkRXZlbnQoZ3VpbGRJZCwgZXZlbnRJZCwgb3B0aW9ucykpO1xuICAgIH0sXG4gICAgZ2V0U2NoZWR1bGVkRXZlbnRzOiBhc3luYyAoZ3VpbGRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRTY2hlZHVsZWRFdmVudHMoZ3VpbGRJZCwgb3B0aW9ucykpLm1hcCgocmVzKSA9PiBib3QudHJhbnNmb3JtZXJzLnNjaGVkdWxlZEV2ZW50KGJvdCwgcmVzKSk7XG4gICAgfSxcbiAgICBnZXRTY2hlZHVsZWRFdmVudFVzZXJzOiBhc3luYyAoZ3VpbGRJZCwgZXZlbnRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRTY2hlZHVsZWRFdmVudFVzZXJzKGd1aWxkSWQsIGV2ZW50SWQsIG9wdGlvbnMpKS5tYXAoKHUpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB1c2VyOiBib3QudHJhbnNmb3JtZXJzLnVzZXIoYm90LCB1LnVzZXIpLFxuICAgICAgICAgIG1lbWJlcjogdS5tZW1iZXIgJiYgYm90LnRyYW5zZm9ybWVycy5tZW1iZXIoYm90LCB1Lm1lbWJlciwgeyBndWlsZElkLCB1c2VySWQ6IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHUudXNlci5pZCkgfSksXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGdldFNlc3Npb25JbmZvOiBhc3luYyAoKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5nYXRld2F5Qm90KGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0U2Vzc2lvbkluZm8oKSk7XG4gICAgfSxcbiAgICBnZXRTdGFnZUluc3RhbmNlOiBhc3luYyAoY2hhbm5lbElkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5zdGFnZUluc3RhbmNlKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0U3RhZ2VJbnN0YW5jZShjaGFubmVsSWQpKTtcbiAgICB9LFxuICAgIGdldE93blZvaWNlU3RhdGU6IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy52b2ljZVN0YXRlKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0T3duVm9pY2VTdGF0ZShndWlsZElkKSwgeyBndWlsZElkIH0pO1xuICAgIH0sXG4gICAgZ2V0VXNlclZvaWNlU3RhdGU6IGFzeW5jIChndWlsZElkLCB1c2VySWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnZvaWNlU3RhdGUoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRVc2VyVm9pY2VTdGF0ZShndWlsZElkLCB1c2VySWQpLCB7IGd1aWxkSWQgfSk7XG4gICAgfSxcbiAgICBnZXRTdGlja2VyOiBhc3luYyAoc3RpY2tlcklkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5zdGlja2VyKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0U3RpY2tlcihzdGlja2VySWQpKTtcbiAgICB9LFxuICAgIGdldFRocmVhZE1lbWJlcjogYXN5bmMgKGNoYW5uZWxJZCwgdXNlcklkLCBvcHRpb25zLCBleHRyYSkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMudGhyZWFkTWVtYmVyKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0VGhyZWFkTWVtYmVyKGNoYW5uZWxJZCwgdXNlcklkLCBvcHRpb25zKSwgZXh0cmEpO1xuICAgIH0sXG4gICAgZ2V0VGhyZWFkTWVtYmVyczogYXN5bmMgKGNoYW5uZWxJZCwgb3B0aW9ucywgZXh0cmEpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0VGhyZWFkTWVtYmVycyhjaGFubmVsSWQsIG9wdGlvbnMpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy50aHJlYWRNZW1iZXIoYm90LCByZXMsIGV4dHJhKSk7XG4gICAgfSxcbiAgICBnZXRSZWFjdGlvbnM6IGFzeW5jIChjaGFubmVsSWQsIG1lc3NhZ2VJZCwgcmVhY3Rpb24sIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0UmVhY3Rpb25zKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCByZWFjdGlvbiwgb3B0aW9ucykpLm1hcCgocmVzKSA9PiBib3QudHJhbnNmb3JtZXJzLnVzZXIoYm90LCByZXMpKTtcbiAgICB9LFxuICAgIGdldFVzZXI6IGFzeW5jIChpZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMudXNlcihib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldFVzZXIoaWQpKTtcbiAgICB9LFxuICAgIGdldEN1cnJlbnRVc2VyOiBhc3luYyAoYmVhcmVyVG9rZW4pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnVzZXIoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRDdXJyZW50VXNlcihiZWFyZXJUb2tlbikpO1xuICAgIH0sXG4gICAgZ2V0VXNlckNvbm5lY3Rpb25zOiBhc3luYyAoYmVhcmVyVG9rZW4pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5nZXRVc2VyQ29ubmVjdGlvbnMoYmVhcmVyVG9rZW4pO1xuICAgIH0sXG4gICAgZ2V0VXNlckFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb246IGFzeW5jIChiZWFyZXJUb2tlbiwgYXBwbGljYXRpb25JZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmdldFVzZXJBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uKGJlYXJlclRva2VuLCBhcHBsaWNhdGlvbklkKTtcbiAgICB9LFxuICAgIGdldFZhbml0eVVybDogYXN5bmMgKGd1aWxkSWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5nZXRWYW5pdHlVcmwoZ3VpbGRJZCk7XG4gICAgfSxcbiAgICBnZXRWb2ljZVJlZ2lvbnM6IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldFZvaWNlUmVnaW9ucyhndWlsZElkKSkubWFwKChyZXMpID0+IGJvdC50cmFuc2Zvcm1lcnMudm9pY2VSZWdpb24oYm90LCByZXMpKTtcbiAgICB9LFxuICAgIGdldFdlYmhvb2s6IGFzeW5jICh3ZWJob29rSWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLndlYmhvb2soYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRXZWJob29rKHdlYmhvb2tJZCkpO1xuICAgIH0sXG4gICAgZ2V0V2ViaG9va01lc3NhZ2U6IGFzeW5jICh3ZWJob29rSWQsIHRva2VuLCBtZXNzYWdlSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLm1lc3NhZ2UoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRXZWJob29rTWVzc2FnZSh3ZWJob29rSWQsIHRva2VuLCBtZXNzYWdlSWQsIG9wdGlvbnMpKTtcbiAgICB9LFxuICAgIGdldFdlYmhvb2tXaXRoVG9rZW46IGFzeW5jICh3ZWJob29rSWQsIHRva2VuKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy53ZWJob29rKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0V2ViaG9va1dpdGhUb2tlbih3ZWJob29rSWQsIHRva2VuKSk7XG4gICAgfSxcbiAgICBnZXRXZWxjb21lU2NyZWVuOiBhc3luYyAoZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMud2VsY29tZVNjcmVlbihib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldFdlbGNvbWVTY3JlZW4oZ3VpbGRJZCkpO1xuICAgIH0sXG4gICAgZ2V0V2lkZ2V0OiBhc3luYyAoZ3VpbGRJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuZ3VpbGRXaWRnZXQoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRXaWRnZXQoZ3VpbGRJZCkpO1xuICAgIH0sXG4gICAgZ2V0V2lkZ2V0U2V0dGluZ3M6IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5ndWlsZFdpZGdldFNldHRpbmdzKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0V2lkZ2V0U2V0dGluZ3MoZ3VpbGRJZCkpO1xuICAgIH0sXG4gICAgcHVibGlzaE1lc3NhZ2U6IGFzeW5jIChjaGFubmVsSWQsIG1lc3NhZ2VJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLnB1Ymxpc2hNZXNzYWdlKGNoYW5uZWxJZCwgbWVzc2FnZUlkKSk7XG4gICAgfSxcbiAgICBzZWFyY2hHdWlsZE1lc3NhZ2VzOiBhc3luYyAoZ3VpbGRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYm90LnJlc3Quc25ha2Uuc2VhcmNoR3VpbGRNZXNzYWdlcyhndWlsZElkLCBvcHRpb25zKTtcbiAgICAgIGlmICgnY29kZScgaW4gcmVzdWx0KSByZXR1cm4gY2FtZWxpemUocmVzdWx0KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC8vIFdlIHdvdWxkIHdhc3RlIHRpbWUgYW5kIG1lbW9yeSBjYW1lbGl6aW5nIHRoZSBlbnRpcmUgcmVzdWx0IG9iamVjdCwgc28gd2Ugb25seSBjYW1lbGl6ZSB0aGUgcGFydHMgd2UgbmVlZCB0by4gVGhlIHJlc3Qgb2YgdGhlIGRhdGEgaXMgY29udmVydGVkIGJlbG93XG4gICAgICAgIC4uLmNhbWVsaXplKHsgLi4ucmVzdWx0LCBtZXNzYWdlczogdW5kZWZpbmVkLCB0aHJlYWRzOiB1bmRlZmluZWQsIG1lbWJlcnM6IHVuZGVmaW5lZCB9KSxcbiAgICAgICAgbWVzc2FnZXM6IHJlc3VsdC5tZXNzYWdlcy5tYXAoKG1lc3NhZ2VzKSA9PiBtZXNzYWdlcy5tYXAoKG1lc3NhZ2UpID0+IGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIG1lc3NhZ2UpKSksXG4gICAgICAgIHRocmVhZHM6IHJlc3VsdC50aHJlYWRzPy5tYXAoKHRocmVhZCkgPT4gYm90LnRyYW5zZm9ybWVycy5jaGFubmVsKGJvdCwgdGhyZWFkLCB7IGd1aWxkSWQgfSkpLFxuICAgICAgICBtZW1iZXJzOiByZXN1bHQubWVtYmVycz8ubWFwKChtZW1iZXIpID0+IGJvdC50cmFuc2Zvcm1lcnMudGhyZWFkTWVtYmVyKGJvdCwgbWVtYmVyLCB7IGd1aWxkSWQgfSkpLFxuICAgICAgfTtcbiAgICB9LFxuICAgIHNlbmRNZXNzYWdlOiBhc3luYyAoY2hhbm5lbElkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5tZXNzYWdlKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2Uuc2VuZE1lc3NhZ2UoY2hhbm5lbElkLCBvcHRpb25zKSk7XG4gICAgfSxcbiAgICBzZW5kRm9sbG93dXBNZXNzYWdlOiBhc3luYyAodG9rZW4sIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLm1lc3NhZ2UoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5zZW5kRm9sbG93dXBNZXNzYWdlKHRva2VuLCBvcHRpb25zKSk7XG4gICAgfSxcbiAgICBzdGFydFRocmVhZFdpdGhNZXNzYWdlOiBhc3luYyAoY2hhbm5lbElkLCBtZXNzYWdlSWQsIG9wdGlvbnMsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY2hhbm5lbChib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLnN0YXJ0VGhyZWFkV2l0aE1lc3NhZ2UoY2hhbm5lbElkLCBtZXNzYWdlSWQsIG9wdGlvbnMsIHJlYXNvbikpO1xuICAgIH0sXG4gICAgc3RhcnRUaHJlYWRXaXRob3V0TWVzc2FnZTogYXN5bmMgKGNoYW5uZWxJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jaGFubmVsKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2Uuc3RhcnRUaHJlYWRXaXRob3V0TWVzc2FnZShjaGFubmVsSWQsIG9wdGlvbnMsIHJlYXNvbikpO1xuICAgIH0sXG4gICAgZ2V0UG9sbEFuc3dlclZvdGVyczogYXN5bmMgKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCBhbnN3ZXJJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0UG9sbEFuc3dlclZvdGVycyhjaGFubmVsSWQsIG1lc3NhZ2VJZCwgYW5zd2VySWQsIG9wdGlvbnMpO1xuXG4gICAgICByZXR1cm4geyB1c2VyczogcmVzLnVzZXJzLm1hcCgodXNlcikgPT4gYm90LnRyYW5zZm9ybWVycy51c2VyKGJvdCwgdXNlcikpIH07XG4gICAgfSxcbiAgICBlbmRQb2xsOiBhc3luYyAoY2hhbm5lbElkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLm1lc3NhZ2UoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5lbmRQb2xsKGNoYW5uZWxJZCwgbWVzc2FnZUlkKSk7XG4gICAgfSxcbiAgICBzeW5jR3VpbGRUZW1wbGF0ZTogYXN5bmMgKGd1aWxkSWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnRlbXBsYXRlKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2Uuc3luY0d1aWxkVGVtcGxhdGUoZ3VpbGRJZCkpO1xuICAgIH0sXG4gICAgdXBzZXJ0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kczogYXN5bmMgKGNvbW1hbmRzLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LnNuYWtlLnVwc2VydEdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZHMoY29tbWFuZHMsIG9wdGlvbnMpKS5tYXAoKHJlcykgPT4gYm90LnRyYW5zZm9ybWVycy5hcHBsaWNhdGlvbkNvbW1hbmQoYm90LCByZXMpKTtcbiAgICB9LFxuICAgIHVwc2VydEd1aWxkQXBwbGljYXRpb25Db21tYW5kczogYXN5bmMgKGd1aWxkSWQsIGNvbW1hbmRzLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LnNuYWtlLnVwc2VydEd1aWxkQXBwbGljYXRpb25Db21tYW5kcyhndWlsZElkLCBjb21tYW5kcywgb3B0aW9ucykpLm1hcCgocmVzKSA9PlxuICAgICAgICBib3QudHJhbnNmb3JtZXJzLmFwcGxpY2F0aW9uQ29tbWFuZChib3QsIHJlcyksXG4gICAgICApO1xuICAgIH0sXG4gICAgZWRpdEN1cnJlbnRNZW1iZXI6IGFzeW5jIChndWlsZElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLm1lbWJlcihib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmVkaXRDdXJyZW50TWVtYmVyKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbiksIHsgZ3VpbGRJZCwgdXNlcklkOiBib3QuaWQgfSk7XG4gICAgfSxcbiAgICBlZGl0TWVtYmVyOiBhc3luYyAoZ3VpbGRJZCwgdXNlcklkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLm1lbWJlcihib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmVkaXRNZW1iZXIoZ3VpbGRJZCwgdXNlcklkLCBvcHRpb25zLCByZWFzb24pLCB7IGd1aWxkSWQsIHVzZXJJZCB9KTtcbiAgICB9LFxuICAgIGdldEN1cnJlbnRNZW1iZXI6IGFzeW5jIChndWlsZElkLCBiZWFyZXJUb2tlbikgPT4ge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0Q3VycmVudE1lbWJlcihndWlsZElkLCBiZWFyZXJUb2tlbik7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5tZW1iZXIoYm90LCByZXMsIHsgZ3VpbGRJZCwgdXNlcklkOiBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShyZXMudXNlci5pZCkgfSk7XG4gICAgfSxcbiAgICBnZXRNZW1iZXI6IGFzeW5jIChndWlsZElkLCB1c2VySWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLm1lbWJlcihib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldE1lbWJlcihndWlsZElkLCB1c2VySWQpLCB7IGd1aWxkSWQsIHVzZXJJZCB9KTtcbiAgICB9LFxuICAgIGdldE1lbWJlcnM6IGFzeW5jIChndWlsZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gKGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldE1lbWJlcnMoZ3VpbGRJZCwgb3B0aW9ucykpLm1hcCgocmVzKSA9PlxuICAgICAgICBib3QudHJhbnNmb3JtZXJzLm1lbWJlcihib3QsIHJlcywgeyBndWlsZElkLCB1c2VySWQ6IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHJlcy51c2VyLmlkKSB9KSxcbiAgICAgICk7XG4gICAgfSxcbiAgICBwcnVuZU1lbWJlcnM6IGFzeW5jIChndWlsZElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5zbmFrZS5wcnVuZU1lbWJlcnMoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKTtcbiAgICB9LFxuICAgIHNlYXJjaE1lbWJlcnM6IGFzeW5jIChndWlsZElkLCBxdWVyeSwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5zbmFrZS5zZWFyY2hNZW1iZXJzKGd1aWxkSWQsIHF1ZXJ5LCBvcHRpb25zKSkubWFwKChyZXMpID0+XG4gICAgICAgIGJvdC50cmFuc2Zvcm1lcnMubWVtYmVyKGJvdCwgcmVzLCB7IGd1aWxkSWQsIHVzZXJJZDogYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocmVzLnVzZXIuaWQpIH0pLFxuICAgICAgKTtcbiAgICB9LFxuICAgIGJ1bGtCYW5NZW1iZXJzOiBhc3luYyAoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBib3QucmVzdC5idWxrQmFuTWVtYmVycyhndWlsZElkLCBvcHRpb25zLCByZWFzb24pO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBiYW5uZWRVc2VyczogcmVzLmJhbm5lZFVzZXJzLm1hcCgoeCkgPT4gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UoeCkpLFxuICAgICAgICBmYWlsZWRVc2VyczogcmVzLmZhaWxlZFVzZXJzLm1hcCgoeCkgPT4gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UoeCkpLFxuICAgICAgfTtcbiAgICB9LFxuICAgIGdldEFwcGxpY2F0aW9uQWN0aXZpdHlJbnN0YW5jZTogYXN5bmMgKGFwcGxpY2F0aW9uSWQsIGluc3RhbmNlSWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5nZXRBcHBsaWNhdGlvbkFjdGl2aXR5SW5zdGFuY2UoYXBwbGljYXRpb25JZCwgaW5zdGFuY2VJZCk7XG4gICAgfSxcbiAgICBsaXN0QXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbnNNZXRhZGF0YVJlY29yZHM6IGFzeW5jIChhcHBsaWNhdGlvbklkKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QubGlzdEFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb25zTWV0YWRhdGFSZWNvcmRzKGFwcGxpY2F0aW9uSWQpO1xuICAgIH0sXG4gICAgdXBkYXRlQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbnNNZXRhZGF0YVJlY29yZHM6IGFzeW5jIChhcHBsaWNhdGlvbklkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3QudXBkYXRlQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbnNNZXRhZGF0YVJlY29yZHMoYXBwbGljYXRpb25JZCwgb3B0aW9ucyk7XG4gICAgfSxcbiAgICBjcmVhdGVMb2JieTogYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmxvYmJ5KGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuY3JlYXRlTG9iYnkob3B0aW9ucykpO1xuICAgIH0sXG4gICAgY3JlYXRlT3JKb2luTG9iYnk6IGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5sb2JieShib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmNyZWF0ZU9ySm9pbkxvYmJ5KG9wdGlvbnMpKTtcbiAgICB9LFxuICAgIGdldExvYmJ5OiBhc3luYyAobG9iYnlJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubG9iYnkoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRMb2JieShsb2JieUlkKSk7XG4gICAgfSxcbiAgICBtb2RpZnlMb2JieTogYXN5bmMgKGxvYmJ5SWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmxvYmJ5KGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UubW9kaWZ5TG9iYnkobG9iYnlJZCwgb3B0aW9ucykpO1xuICAgIH0sXG4gICAgYWRkTWVtYmVyVG9Mb2JieTogYXN5bmMgKGxvYmJ5SWQsIHVzZXJJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubG9iYnlNZW1iZXIoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5hZGRNZW1iZXJUb0xvYmJ5KGxvYmJ5SWQsIHVzZXJJZCwgb3B0aW9ucykpO1xuICAgIH0sXG4gICAgYnVsa1VwZGF0ZUxvYmJ5TWVtYmVyczogYXN5bmMgKGxvYmJ5SWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3Quc25ha2UuYnVsa1VwZGF0ZUxvYmJ5TWVtYmVycyhsb2JieUlkLCBvcHRpb25zKSkubWFwKChyZXMpID0+IGJvdC50cmFuc2Zvcm1lcnMubG9iYnlNZW1iZXIoYm90LCByZXMpKTtcbiAgICB9LFxuICAgIGxpbmtDaGFubmVsVG9Mb2JieTogYXN5bmMgKGxvYmJ5SWQsIGJlYXJlclRva2VuLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5sb2JieShib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmxpbmtDaGFubmVsVG9Mb2JieShsb2JieUlkLCBiZWFyZXJUb2tlbiwgb3B0aW9ucykpO1xuICAgIH0sXG4gICAgdW5saW5rQ2hhbm5lbFRvTG9iYnk6IGFzeW5jIChsb2JieUlkLCBiZWFyZXJUb2tlbikgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubG9iYnkoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS51bmxpbmtDaGFubmVsVG9Mb2JieShsb2JieUlkLCBiZWFyZXJUb2tlbikpO1xuICAgIH0sXG4gICAgdXBkYXRlTG9iYnlNZXNzYWdlTW9kZXJhdGlvbk1ldGFkYXRhOiBhc3luYyAobG9iYnlJZCwgbWVzc2FnZUlkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2UudXBkYXRlTG9iYnlNZXNzYWdlTW9kZXJhdGlvbk1ldGFkYXRhKGxvYmJ5SWQsIG1lc3NhZ2VJZCwgb3B0aW9ucyk7XG4gICAgfSxcbiAgICBzZW5kTG9iYnlNZXNzYWdlOiBhc3luYyAoYmVhcmVyVG9rZW4sIGxvYmJ5SWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmxvYmJ5TWVzc2FnZShib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLnNlbmRMb2JieU1lc3NhZ2UoYmVhcmVyVG9rZW4sIGxvYmJ5SWQsIG9wdGlvbnMpKTtcbiAgICB9LFxuICAgIGdldExvYmJ5TWVzc2FnZXM6IGFzeW5jIChiZWFyZXJUb2tlbiwgbG9iYnlJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5zbmFrZS5nZXRMb2JieU1lc3NhZ2VzKGJlYXJlclRva2VuLCBsb2JieUlkLCBvcHRpb25zKSkubWFwKChyZXMpID0+IGJvdC50cmFuc2Zvcm1lcnMubG9iYnlNZXNzYWdlKGJvdCwgcmVzKSk7XG4gICAgfSxcbiAgICBjcmVhdGVMb2JieUNoYW5uZWxJbnZpdGVGb3JTZWxmOiBhc3luYyAoYmVhcmVyVG9rZW4sIGxvYmJ5SWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmxvYmJ5SW52aXRlKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuY3JlYXRlTG9iYnlDaGFubmVsSW52aXRlRm9yU2VsZihiZWFyZXJUb2tlbiwgbG9iYnlJZCkpO1xuICAgIH0sXG4gICAgY3JlYXRlTG9iYnlDaGFubmVsSW52aXRlRm9yVXNlcjogYXN5bmMgKGxvYmJ5SWQsIHVzZXJJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMubG9iYnlJbnZpdGUoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5jcmVhdGVMb2JieUNoYW5uZWxJbnZpdGVGb3JVc2VyKGxvYmJ5SWQsIHVzZXJJZCkpO1xuICAgIH0sXG4gICAgZ2V0VGFyZ2V0VXNlcnM6IGFzeW5jIChpbnZpdGVDb2RlKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0VGFyZ2V0VXNlcnMoaW52aXRlQ29kZSk7XG4gICAgfSxcbiAgICB1cGRhdGVUYXJnZXRVc2VyczogYXN5bmMgKGludml0ZUNvZGUsIHRhcmdldFVzZXJzRmlsZSkgPT4ge1xuICAgICAgYXdhaXQgYm90LnJlc3Quc25ha2UudXBkYXRlVGFyZ2V0VXNlcnMoaW52aXRlQ29kZSwgdGFyZ2V0VXNlcnNGaWxlKTtcbiAgICB9LFxuICAgIGdldFRhcmdldFVzZXJzSm9iU3RhdHVzOiBhc3luYyAoaW52aXRlQ29kZSkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmdldFRhcmdldFVzZXJzSm9iU3RhdHVzKGludml0ZUNvZGUpO1xuICAgIH0sXG4gICAgYWRkUmVhY3Rpb246IGFzeW5jIChjaGFubmVsSWQsIG1lc3NhZ2VJZCwgcmVhY3Rpb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5zbmFrZS5hZGRSZWFjdGlvbihjaGFubmVsSWQsIG1lc3NhZ2VJZCwgcmVhY3Rpb24pO1xuICAgIH0sXG4gICAgYWRkUmVhY3Rpb25zOiBhc3luYyAoY2hhbm5lbElkLCBtZXNzYWdlSWQsIHJlYWN0aW9ucywgb3JkZXJlZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmFkZFJlYWN0aW9ucyhjaGFubmVsSWQsIG1lc3NhZ2VJZCwgcmVhY3Rpb25zLCBvcmRlcmVkKTtcbiAgICB9LFxuICAgIGFkZFJvbGU6IGFzeW5jIChndWlsZElkLCB1c2VySWQsIHJvbGVJZCwgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2UuYWRkUm9sZShndWlsZElkLCB1c2VySWQsIHJvbGVJZCwgcmVhc29uKTtcbiAgICB9LFxuICAgIGFkZFRocmVhZE1lbWJlcjogYXN5bmMgKGNoYW5uZWxJZCwgdXNlcklkKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2UuYWRkVGhyZWFkTWVtYmVyKGNoYW5uZWxJZCwgdXNlcklkKTtcbiAgICB9LFxuICAgIGFkZERtUmVjaXBpZW50OiBhc3luYyAoY2hhbm5lbElkLCB1c2VySWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5zbmFrZS5hZGREbVJlY2lwaWVudChjaGFubmVsSWQsIHVzZXJJZCwgb3B0aW9ucyk7XG4gICAgfSxcbiAgICBhZGRHdWlsZE1lbWJlcjogYXN5bmMgKGd1aWxkSWQsIHVzZXJJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmFkZEd1aWxkTWVtYmVyKGd1aWxkSWQsIHVzZXJJZCwgb3B0aW9ucyk7XG4gICAgfSxcbiAgICBkZWxldGVBdXRvbW9kUnVsZTogYXN5bmMgKGd1aWxkSWQsIHJ1bGVJZCwgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2UuZGVsZXRlQXV0b21vZFJ1bGUoZ3VpbGRJZCwgcnVsZUlkLCByZWFzb24pO1xuICAgIH0sXG4gICAgZGVsZXRlQ2hhbm5lbDogYXN5bmMgKGNoYW5uZWxJZCwgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2UuZGVsZXRlQ2hhbm5lbChjaGFubmVsSWQsIHJlYXNvbik7XG4gICAgfSxcbiAgICBkZWxldGVDaGFubmVsUGVybWlzc2lvbk92ZXJyaWRlOiBhc3luYyAoY2hhbm5lbElkLCBvdmVyd3JpdGVJZCwgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2UuZGVsZXRlQ2hhbm5lbFBlcm1pc3Npb25PdmVycmlkZShjaGFubmVsSWQsIG92ZXJ3cml0ZUlkLCByZWFzb24pO1xuICAgIH0sXG4gICAgZGVsZXRlRW1vamk6IGFzeW5jIChndWlsZElkLCBpZCwgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2UuZGVsZXRlRW1vamkoZ3VpbGRJZCwgaWQsIHJlYXNvbik7XG4gICAgfSxcbiAgICBkZWxldGVBcHBsaWNhdGlvbkVtb2ppOiBhc3luYyAoaWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5zbmFrZS5kZWxldGVBcHBsaWNhdGlvbkVtb2ppKGlkKTtcbiAgICB9LFxuICAgIGRlbGV0ZUZvbGxvd3VwTWVzc2FnZTogYXN5bmMgKHRva2VuLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5zbmFrZS5kZWxldGVGb2xsb3d1cE1lc3NhZ2UodG9rZW4sIG1lc3NhZ2VJZCk7XG4gICAgfSxcbiAgICBkZWxldGVHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmQ6IGFzeW5jIChjb21tYW5kSWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5zbmFrZS5kZWxldGVHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmQoY29tbWFuZElkKTtcbiAgICB9LFxuICAgIGRlbGV0ZUd1aWxkQXBwbGljYXRpb25Db21tYW5kOiBhc3luYyAoY29tbWFuZElkLCBndWlsZElkKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2UuZGVsZXRlR3VpbGRBcHBsaWNhdGlvbkNvbW1hbmQoY29tbWFuZElkLCBndWlsZElkKTtcbiAgICB9LFxuICAgIGRlbGV0ZUd1aWxkU3RpY2tlcjogYXN5bmMgKGd1aWxkSWQsIHN0aWNrZXJJZCwgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2UuZGVsZXRlR3VpbGRTdGlja2VyKGd1aWxkSWQsIHN0aWNrZXJJZCwgcmVhc29uKTtcbiAgICB9LFxuICAgIGRlbGV0ZUd1aWxkVGVtcGxhdGU6IGFzeW5jIChndWlsZElkLCB0ZW1wbGF0ZUNvZGUpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5zbmFrZS5kZWxldGVHdWlsZFRlbXBsYXRlKGd1aWxkSWQsIHRlbXBsYXRlQ29kZSk7XG4gICAgfSxcbiAgICBkZWxldGVJbnRlZ3JhdGlvbjogYXN5bmMgKGd1aWxkSWQsIGludGVncmF0aW9uSWQsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmRlbGV0ZUludGVncmF0aW9uKGd1aWxkSWQsIGludGVncmF0aW9uSWQsIHJlYXNvbik7XG4gICAgfSxcbiAgICBkZWxldGVJbnZpdGU6IGFzeW5jIChpbnZpdGVDb2RlLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5zbmFrZS5kZWxldGVJbnZpdGUoaW52aXRlQ29kZSwgcmVhc29uKTtcbiAgICB9LFxuICAgIGRlbGV0ZU1lc3NhZ2U6IGFzeW5jIChjaGFubmVsSWQsIG1lc3NhZ2VJZCwgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2UuZGVsZXRlTWVzc2FnZShjaGFubmVsSWQsIG1lc3NhZ2VJZCwgcmVhc29uKTtcbiAgICB9LFxuICAgIGRlbGV0ZU1lc3NhZ2VzOiBhc3luYyAoY2hhbm5lbElkLCBtZXNzYWdlSWRzLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5zbmFrZS5kZWxldGVNZXNzYWdlcyhjaGFubmVsSWQsIG1lc3NhZ2VJZHMsIHJlYXNvbik7XG4gICAgfSxcbiAgICBkZWxldGVPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2U6IGFzeW5jICh0b2tlbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmRlbGV0ZU9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZSh0b2tlbik7XG4gICAgfSxcbiAgICBkZWxldGVPd25SZWFjdGlvbjogYXN5bmMgKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCByZWFjdGlvbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmRlbGV0ZU93blJlYWN0aW9uKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCByZWFjdGlvbik7XG4gICAgfSxcbiAgICBkZWxldGVSZWFjdGlvbnNBbGw6IGFzeW5jIChjaGFubmVsSWQsIG1lc3NhZ2VJZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmRlbGV0ZVJlYWN0aW9uc0FsbChjaGFubmVsSWQsIG1lc3NhZ2VJZCk7XG4gICAgfSxcbiAgICBkZWxldGVSZWFjdGlvbnNFbW9qaTogYXN5bmMgKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCByZWFjdGlvbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmRlbGV0ZVJlYWN0aW9uc0Vtb2ppKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCByZWFjdGlvbik7XG4gICAgfSxcbiAgICBkZWxldGVSb2xlOiBhc3luYyAoZ3VpbGRJZCwgcm9sZUlkLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5zbmFrZS5kZWxldGVSb2xlKGd1aWxkSWQsIHJvbGVJZCwgcmVhc29uKTtcbiAgICB9LFxuICAgIGRlbGV0ZVNjaGVkdWxlZEV2ZW50OiBhc3luYyAoZ3VpbGRJZCwgZXZlbnRJZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmRlbGV0ZVNjaGVkdWxlZEV2ZW50KGd1aWxkSWQsIGV2ZW50SWQpO1xuICAgIH0sXG4gICAgZGVsZXRlU3RhZ2VJbnN0YW5jZTogYXN5bmMgKGNoYW5uZWxJZCwgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2UuZGVsZXRlU3RhZ2VJbnN0YW5jZShjaGFubmVsSWQsIHJlYXNvbik7XG4gICAgfSxcbiAgICBkZWxldGVVc2VyUmVhY3Rpb246IGFzeW5jIChjaGFubmVsSWQsIG1lc3NhZ2VJZCwgdXNlcklkLCByZWFjdGlvbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmRlbGV0ZVVzZXJSZWFjdGlvbihjaGFubmVsSWQsIG1lc3NhZ2VJZCwgdXNlcklkLCByZWFjdGlvbik7XG4gICAgfSxcbiAgICBkZWxldGVXZWJob29rOiBhc3luYyAod2ViaG9va0lkLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5zbmFrZS5kZWxldGVXZWJob29rKHdlYmhvb2tJZCwgcmVhc29uKTtcbiAgICB9LFxuICAgIGRlbGV0ZVdlYmhvb2tNZXNzYWdlOiBhc3luYyAod2ViaG9va0lkLCB0b2tlbiwgbWVzc2FnZUlkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2UuZGVsZXRlV2ViaG9va01lc3NhZ2Uod2ViaG9va0lkLCB0b2tlbiwgbWVzc2FnZUlkLCBvcHRpb25zKTtcbiAgICB9LFxuICAgIGRlbGV0ZVdlYmhvb2tXaXRoVG9rZW46IGFzeW5jICh3ZWJob29rSWQsIHRva2VuKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2UuZGVsZXRlV2ViaG9va1dpdGhUb2tlbih3ZWJob29rSWQsIHRva2VuKTtcbiAgICB9LFxuICAgIGVkaXRDaGFubmVsUGVybWlzc2lvbk92ZXJyaWRlczogYXN5bmMgKGNoYW5uZWxJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2UuZWRpdENoYW5uZWxQZXJtaXNzaW9uT3ZlcnJpZGVzKGNoYW5uZWxJZCwgb3B0aW9ucywgcmVhc29uKTtcbiAgICB9LFxuICAgIGVkaXRDaGFubmVsUG9zaXRpb25zOiBhc3luYyAoZ3VpbGRJZCwgY2hhbm5lbFBvc2l0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmVkaXRDaGFubmVsUG9zaXRpb25zKGd1aWxkSWQsIGNoYW5uZWxQb3NpdGlvbnMpO1xuICAgIH0sXG4gICAgZWRpdE93blZvaWNlU3RhdGU6IGFzeW5jIChndWlsZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2UuZWRpdE93blZvaWNlU3RhdGUoZ3VpbGRJZCwgb3B0aW9ucyk7XG4gICAgfSxcbiAgICBlZGl0VXNlclZvaWNlU3RhdGU6IGFzeW5jIChndWlsZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2UuZWRpdFVzZXJWb2ljZVN0YXRlKGd1aWxkSWQsIG9wdGlvbnMpO1xuICAgIH0sXG4gICAgZWRpdFVzZXJBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uOiBhc3luYyAoYmVhcmVyVG9rZW4sIGFwcGxpY2F0aW9uSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5lZGl0VXNlckFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb24oYmVhcmVyVG9rZW4sIGFwcGxpY2F0aW9uSWQsIG9wdGlvbnMpO1xuICAgIH0sXG4gICAgZGVsZXRlQ3VycmVudFVzZXJBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uOiBhc3luYyAoYmVhcmVyVG9rZW4sIGFwcGxpY2F0aW9uSWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5zbmFrZS5kZWxldGVDdXJyZW50VXNlckFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb24oYmVhcmVyVG9rZW4sIGFwcGxpY2F0aW9uSWQpO1xuICAgIH0sXG4gICAgam9pblRocmVhZDogYXN5bmMgKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmpvaW5UaHJlYWQoY2hhbm5lbElkKTtcbiAgICB9LFxuICAgIGxlYXZlR3VpbGQ6IGFzeW5jIChndWlsZElkKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2UubGVhdmVHdWlsZChndWlsZElkKTtcbiAgICB9LFxuICAgIGxlYXZlVGhyZWFkOiBhc3luYyAoY2hhbm5lbElkKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2UubGVhdmVUaHJlYWQoY2hhbm5lbElkKTtcbiAgICB9LFxuICAgIHJlbW92ZVJvbGU6IGFzeW5jIChndWlsZElkLCB1c2VySWQsIHJvbGVJZCwgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2UucmVtb3ZlUm9sZShndWlsZElkLCB1c2VySWQsIHJvbGVJZCwgcmVhc29uKTtcbiAgICB9LFxuICAgIHJlbW92ZVRocmVhZE1lbWJlcjogYXN5bmMgKGNoYW5uZWxJZCwgdXNlcklkKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2UucmVtb3ZlVGhyZWFkTWVtYmVyKGNoYW5uZWxJZCwgdXNlcklkKTtcbiAgICB9LFxuICAgIHJlbW92ZURtUmVjaXBpZW50OiBhc3luYyAoY2hhbm5lbElkLCB1c2VySWQpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBib3QucmVzdC5zbmFrZS5yZW1vdmVEbVJlY2lwaWVudChjaGFubmVsSWQsIHVzZXJJZCk7XG4gICAgfSxcbiAgICBzZW5kSW50ZXJhY3Rpb25SZXNwb25zZTogYXN5bmMgKGludGVyYWN0aW9uSWQsIHRva2VuLCBvcHRpb25zLCBwYXJhbXMpID0+IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYm90LnJlc3Quc25ha2Uuc2VuZEludGVyYWN0aW9uUmVzcG9uc2UoaW50ZXJhY3Rpb25JZCwgdG9rZW4sIG9wdGlvbnMsIHBhcmFtcyk7XG5cbiAgICAgIGlmICghcmVzcG9uc2UpIHJldHVybjtcblxuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuaW50ZXJhY3Rpb25DYWxsYmFja1Jlc3BvbnNlKGJvdCwgcmVzcG9uc2UpO1xuICAgIH0sXG4gICAgdHJpZ2dlclR5cGluZ0luZGljYXRvcjogYXN5bmMgKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LnNuYWtlLnRyaWdnZXJUeXBpbmdJbmRpY2F0b3IoY2hhbm5lbElkKTtcbiAgICB9LFxuICAgIGJhbk1lbWJlcjogYXN5bmMgKGd1aWxkSWQsIHVzZXJJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2UuYmFuTWVtYmVyKGd1aWxkSWQsIHVzZXJJZCwgb3B0aW9ucywgcmVhc29uKTtcbiAgICB9LFxuXG4gICAga2lja01lbWJlcjogYXN5bmMgKGd1aWxkSWQsIHVzZXJJZCwgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2Uua2lja01lbWJlcihndWlsZElkLCB1c2VySWQsIHJlYXNvbik7XG4gICAgfSxcbiAgICBwaW5NZXNzYWdlOiBhc3luYyAoY2hhbm5lbElkLCBtZXNzYWdlSWQsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LnNuYWtlLnBpbk1lc3NhZ2UoY2hhbm5lbElkLCBtZXNzYWdlSWQsIHJlYXNvbik7XG4gICAgfSxcbiAgICB1bmJhbk1lbWJlcjogYXN5bmMgKGd1aWxkSWQsIHVzZXJJZCwgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LnJlc3Quc25ha2UudW5iYW5NZW1iZXIoZ3VpbGRJZCwgdXNlcklkLCByZWFzb24pO1xuICAgIH0sXG4gICAgdW5waW5NZXNzYWdlOiBhc3luYyAoY2hhbm5lbElkLCBtZXNzYWdlSWQsIHJlYXNvbikgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LnNuYWtlLnVucGluTWVzc2FnZShjaGFubmVsSWQsIG1lc3NhZ2VJZCwgcmVhc29uKTtcbiAgICB9LFxuICAgIGdldEd1aWxkT25ib2FyZGluZzogYXN5bmMgKGd1aWxkSWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmd1aWxkT25ib2FyZGluZyhib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldEd1aWxkT25ib2FyZGluZyhndWlsZElkKSk7XG4gICAgfSxcbiAgICBlZGl0R3VpbGRPbmJvYXJkaW5nOiBhc3luYyAoZ3VpbGRJZCwgb3B0aW9ucywgcmVhc29uKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5ndWlsZE9uYm9hcmRpbmcoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5lZGl0R3VpbGRPbmJvYXJkaW5nKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikpO1xuICAgIH0sXG4gICAgbW9kaWZ5R3VpbGRJbmNpZGVudEFjdGlvbnM6IGFzeW5jIChndWlsZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5pbmNpZGVudHNEYXRhKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UubW9kaWZ5R3VpbGRJbmNpZGVudEFjdGlvbnMoZ3VpbGRJZCwgb3B0aW9ucykpO1xuICAgIH0sXG4gICAgbGlzdEVudGl0bGVtZW50czogYXN5bmMgKGFwcGxpY2F0aW9uSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3Quc25ha2UubGlzdEVudGl0bGVtZW50cyhhcHBsaWNhdGlvbklkLCBvcHRpb25zKSkubWFwKChlbnRpdGxlbWVudCkgPT4gYm90LnRyYW5zZm9ybWVycy5lbnRpdGxlbWVudChib3QsIGVudGl0bGVtZW50KSk7XG4gICAgfSxcbiAgICBnZXRFbnRpdGxlbWVudDogYXN5bmMgKGFwcGxpY2F0aW9uSWQsIGVudGl0bGVtZW50SWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmVudGl0bGVtZW50KGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0RW50aXRsZW1lbnQoYXBwbGljYXRpb25JZCwgZW50aXRsZW1lbnRJZCkpO1xuICAgIH0sXG4gICAgY3JlYXRlVGVzdEVudGl0bGVtZW50OiBhc3luYyAoYXBwbGljYXRpb25JZCwgYm9keSkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuZW50aXRsZW1lbnQoYm90LCBhd2FpdCBib3QucmVzdC5zbmFrZS5jcmVhdGVUZXN0RW50aXRsZW1lbnQoYXBwbGljYXRpb25JZCwgYm9keSksIHsgcGFydGlhbDogdHJ1ZSB9KTtcbiAgICB9LFxuICAgIGRlbGV0ZVRlc3RFbnRpdGxlbWVudDogYXN5bmMgKGFwcGxpY2F0aW9uSWQsIGVudGl0bGVtZW50SWQpID0+IHtcbiAgICAgIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmRlbGV0ZVRlc3RFbnRpdGxlbWVudChhcHBsaWNhdGlvbklkLCBlbnRpdGxlbWVudElkKTtcbiAgICB9LFxuICAgIGNvbnN1bWVFbnRpdGxlbWVudDogYXN5bmMgKGFwcGxpY2F0aW9uSWQsIGVudGl0bGVtZW50SWQpID0+IHtcbiAgICAgIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmNvbnN1bWVFbnRpdGxlbWVudChhcHBsaWNhdGlvbklkLCBlbnRpdGxlbWVudElkKTtcbiAgICB9LFxuICAgIGxpc3RTa3VzOiBhc3luYyAoYXBwbGljYXRpb25JZCkgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5zbmFrZS5saXN0U2t1cyhhcHBsaWNhdGlvbklkKSkubWFwKChza3UpID0+IGJvdC50cmFuc2Zvcm1lcnMuc2t1KGJvdCwgc2t1KSk7XG4gICAgfSxcbiAgICBnZXRTdWJzY3JpcHRpb246IGFzeW5jIChza3VJZCwgc3Vic2NyaXB0aW9uSWQpID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnN1YnNjcmlwdGlvbihib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmdldFN1YnNjcmlwdGlvbihza3VJZCwgc3Vic2NyaXB0aW9uSWQpKTtcbiAgICB9LFxuICAgIGxpc3RTdWJzY3JpcHRpb25zOiBhc3luYyAoc2t1SWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiAoYXdhaXQgYm90LnJlc3Quc25ha2UubGlzdFN1YnNjcmlwdGlvbnMoc2t1SWQsIG9wdGlvbnMpKS5tYXAoKHN1YnNjcmlwdGlvbikgPT4gYm90LnRyYW5zZm9ybWVycy5zdWJzY3JpcHRpb24oYm90LCBzdWJzY3JpcHRpb24pKTtcbiAgICB9LFxuICAgIHNlbmRTb3VuZGJvYXJkU291bmQ6IGFzeW5jIChjaGFubmVsSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgIGF3YWl0IGJvdC5yZXN0LnNuYWtlLnNlbmRTb3VuZGJvYXJkU291bmQoY2hhbm5lbElkLCBvcHRpb25zKTtcbiAgICB9LFxuICAgIGxpc3REZWZhdWx0U291bmRib2FyZFNvdW5kczogYXN5bmMgKCkgPT4ge1xuICAgICAgcmV0dXJuIChhd2FpdCBib3QucmVzdC5zbmFrZS5saXN0RGVmYXVsdFNvdW5kYm9hcmRTb3VuZHMoKSkubWFwKChzb3VuZCkgPT4gYm90LnRyYW5zZm9ybWVycy5zb3VuZGJvYXJkU291bmQoYm90LCBzb3VuZCkpO1xuICAgIH0sXG4gICAgbGlzdEd1aWxkU291bmRib2FyZFNvdW5kczogYXN5bmMgKGd1aWxkSWQpID0+IHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGJvdC5yZXN0LnNuYWtlLmxpc3RHdWlsZFNvdW5kYm9hcmRTb3VuZHMoZ3VpbGRJZCk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGl0ZW1zOiByZXMuaXRlbXMubWFwKChzb3VuZCkgPT4gYm90LnRyYW5zZm9ybWVycy5zb3VuZGJvYXJkU291bmQoYm90LCBzb3VuZCkpLFxuICAgICAgfTtcbiAgICB9LFxuICAgIGdldEd1aWxkU291bmRib2FyZFNvdW5kOiBhc3luYyAoZ3VpbGRJZCwgc291bmRJZCkgPT4ge1xuICAgICAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuc291bmRib2FyZFNvdW5kKGJvdCwgYXdhaXQgYm90LnJlc3Quc25ha2UuZ2V0R3VpbGRTb3VuZGJvYXJkU291bmQoZ3VpbGRJZCwgc291bmRJZCkpO1xuICAgIH0sXG4gICAgY3JlYXRlR3VpbGRTb3VuZGJvYXJkU291bmQ6IGFzeW5jIChndWlsZElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnNvdW5kYm9hcmRTb3VuZChib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmNyZWF0ZUd1aWxkU291bmRib2FyZFNvdW5kKGd1aWxkSWQsIG9wdGlvbnMsIHJlYXNvbikpO1xuICAgIH0sXG4gICAgbW9kaWZ5R3VpbGRTb3VuZGJvYXJkU291bmQ6IGFzeW5jIChndWlsZElkLCBzb3VuZElkLCBvcHRpb25zLCByZWFzb24pID0+IHtcbiAgICAgIHJldHVybiBib3QudHJhbnNmb3JtZXJzLnNvdW5kYm9hcmRTb3VuZChib3QsIGF3YWl0IGJvdC5yZXN0LnNuYWtlLm1vZGlmeUd1aWxkU291bmRib2FyZFNvdW5kKGd1aWxkSWQsIHNvdW5kSWQsIG9wdGlvbnMsIHJlYXNvbikpO1xuICAgIH0sXG4gICAgZGVsZXRlR3VpbGRTb3VuZGJvYXJkU291bmQ6IGFzeW5jIChndWlsZElkLCBzb3VuZElkLCByZWFzb24pID0+IHtcbiAgICAgIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmRlbGV0ZUd1aWxkU291bmRib2FyZFNvdW5kKGd1aWxkSWQsIHNvdW5kSWQsIHJlYXNvbik7XG4gICAgfSxcbiAgICBkZWxldGVMb2JieTogYXN5bmMgKGxvYmJ5SWQpID0+IHtcbiAgICAgIGF3YWl0IGJvdC5yZXN0LnNuYWtlLmRlbGV0ZUxvYmJ5KGxvYmJ5SWQpO1xuICAgIH0sXG4gICAgcmVtb3ZlTWVtYmVyRnJvbUxvYmJ5OiBhc3luYyAobG9iYnlJZCwgdXNlcklkKSA9PiB7XG4gICAgICBhd2FpdCBib3QucmVzdC5zbmFrZS5yZW1vdmVNZW1iZXJGcm9tTG9iYnkobG9iYnlJZCwgdXNlcklkKTtcbiAgICB9LFxuICAgIGxlYXZlTG9iYnk6IGFzeW5jIChsb2JieUlkLCBiZWFyZXJUb2tlbikgPT4ge1xuICAgICAgYXdhaXQgYm90LnJlc3Quc25ha2UubGVhdmVMb2JieShsb2JieUlkLCBiZWFyZXJUb2tlbik7XG4gICAgfSxcbiAgICAvLyBUaGUgc2F0aXNmaWVzIHdpdGggdGhlIHJlY29yZCBpcyB1c2VkIHRvIGVuc3VyZSB0aGF0IGFsbCBSZXN0ZW5kcG9pbnRzIGhhdmUgYSBtYXRjaGluZyBoZWxwZXIuIEl0IGNhbid0IGJlIGRvbmUgaW4gQm90SGVscGVycyBpdHNlbGYgYXMgdHlwZXMgZG9uJ3Qgc3VwcG9ydCB0aGF0LlxuICB9IHNhdGlzZmllcyBCb3RIZWxwZXJzPFRQcm9wcywgVEJlaGF2aW9yPiBzYXRpc2ZpZXMgUmVjb3JkPGtleW9mIFJlc3RFbmRwb2ludHMsIHVua25vd24+O1xufVxuXG5leHBvcnQgdHlwZSBCb3RIZWxwZXJzPFRQcm9wcyBleHRlbmRzIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBUQmVoYXZpb3IgZXh0ZW5kcyBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPiA9IHtcbiAgY3JlYXRlQXV0b21vZFJ1bGU6IChcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogQ3JlYXRlQXV0b01vZGVyYXRpb25SdWxlT3B0aW9ucyxcbiAgICByZWFzb24/OiBzdHJpbmcsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxBdXRvTW9kZXJhdGlvblJ1bGUsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGNyZWF0ZUNoYW5uZWw6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IENyZWF0ZUd1aWxkQ2hhbm5lbCwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPENoYW5uZWwsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGNyZWF0ZUVtb2ppOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBDcmVhdGVHdWlsZEVtb2ppLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8RW1vamksIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGNyZWF0ZUFwcGxpY2F0aW9uRW1vamk6IChvcHRpb25zOiBDcmVhdGVBcHBsaWNhdGlvbkVtb2ppKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEVtb2ppLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBjcmVhdGVGb3J1bVRocmVhZDogKFxuICAgIGNoYW5uZWxJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IENyZWF0ZUZvcnVtUG9zdFdpdGhNZXNzYWdlLFxuICAgIHJlYXNvbj86IHN0cmluZyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPENoYW5uZWwsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGNyZWF0ZUdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZDogKFxuICAgIGNvbW1hbmQ6IENyZWF0ZUFwcGxpY2F0aW9uQ29tbWFuZCxcbiAgICBvcHRpb25zPzogQ3JlYXRlR2xvYmFsQXBwbGljYXRpb25Db21tYW5kT3B0aW9ucyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEFwcGxpY2F0aW9uQ29tbWFuZCwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgY3JlYXRlR3VpbGRBcHBsaWNhdGlvbkNvbW1hbmQ6IChcbiAgICBjb21tYW5kOiBDcmVhdGVBcHBsaWNhdGlvbkNvbW1hbmQsXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM/OiBDcmVhdGVHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZE9wdGlvbnMsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxBcHBsaWNhdGlvbkNvbW1hbmQsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGNyZWF0ZUd1aWxkU3RpY2tlcjogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zOiBDcmVhdGVHdWlsZFN0aWNrZXJPcHRpb25zLFxuICAgIHJlYXNvbj86IHN0cmluZyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFN0aWNrZXIsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGNyZWF0ZUd1aWxkVGVtcGxhdGU6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IENyZWF0ZVRlbXBsYXRlKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFRlbXBsYXRlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBjcmVhdGVJbnZpdGU6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IENyZWF0ZUNoYW5uZWxJbnZpdGUsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkSW52aXRlPj47XG4gIGdldEd1aWxkUm9sZU1lbWJlckNvdW50czogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBudW1iZXI+PjtcbiAgY3JlYXRlUm9sZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQ3JlYXRlR3VpbGRSb2xlLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8Um9sZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgY3JlYXRlU2NoZWR1bGVkRXZlbnQ6IChcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogQ3JlYXRlU2NoZWR1bGVkRXZlbnQsXG4gICAgcmVhc29uPzogc3RyaW5nLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8U2NoZWR1bGVkRXZlbnQsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGNyZWF0ZVN0YWdlSW5zdGFuY2U6IChvcHRpb25zOiBDcmVhdGVTdGFnZUluc3RhbmNlLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8U3RhZ2VJbnN0YW5jZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgY3JlYXRlV2ViaG9vazogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBDcmVhdGVXZWJob29rLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8V2ViaG9vaywgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZWRpdEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIGNvbW1hbmRJZDogQmlnU3RyaW5nLFxuICAgIGJlYXJlclRva2VuOiBzdHJpbmcsXG4gICAgb3B0aW9uczogQ2FtZWxpemU8RGlzY29yZEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zPltdLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9ucywgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZWRpdEF1dG9tb2RSdWxlOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIHJ1bGVJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IFBhcnRpYWw8RWRpdEF1dG9Nb2RlcmF0aW9uUnVsZU9wdGlvbnM+LFxuICAgIHJlYXNvbj86IHN0cmluZyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEF1dG9Nb2RlcmF0aW9uUnVsZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZWRpdEJvdFByb2ZpbGU6IChvcHRpb25zOiB7XG4gICAgdXNlcm5hbWU/OiBzdHJpbmc7XG4gICAgYm90QXZhdGFyVVJMPzogc3RyaW5nIHwgbnVsbDtcbiAgICBib3RCYW5uZXJVUkw/OiBzdHJpbmcgfCBudWxsO1xuICB9KSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFVzZXIsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGVkaXRDaGFubmVsOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IE1vZGlmeUNoYW5uZWwsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxDaGFubmVsLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBlZGl0RW1vamk6IChndWlsZElkOiBCaWdTdHJpbmcsIGlkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IE1vZGlmeUd1aWxkRW1vamksIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxFbW9qaSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZWRpdEFwcGxpY2F0aW9uRW1vamk6IChpZDogQmlnU3RyaW5nLCBvcHRpb25zOiBNb2RpZnlBcHBsaWNhdGlvbkVtb2ppKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEVtb2ppLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBlZGl0Rm9sbG93dXBNZXNzYWdlOiAoXG4gICAgdG9rZW46IHN0cmluZyxcbiAgICBtZXNzYWdlSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zOiBJbnRlcmFjdGlvbkNhbGxiYWNrRGF0YSxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPE1lc3NhZ2UsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGVkaXRHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmQ6IChcbiAgICBjb21tYW5kSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zOiBDcmVhdGVBcHBsaWNhdGlvbkNvbW1hbmQsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxBcHBsaWNhdGlvbkNvbW1hbmQsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGVkaXRHdWlsZDogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogTW9kaWZ5R3VpbGQsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxHdWlsZCwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZWRpdEd1aWxkQXBwbGljYXRpb25Db21tYW5kOiAoXG4gICAgY29tbWFuZElkOiBCaWdTdHJpbmcsXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IENyZWF0ZUFwcGxpY2F0aW9uQ29tbWFuZCxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEFwcGxpY2F0aW9uQ29tbWFuZCwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZWRpdEd1aWxkU3RpY2tlcjogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBzdGlja2VySWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zOiBBdExlYXN0T25lPEVkaXRHdWlsZFN0aWNrZXJPcHRpb25zPixcbiAgICByZWFzb24/OiBzdHJpbmcsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxTdGlja2VyLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBlZGl0R3VpbGRUZW1wbGF0ZTogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICB0ZW1wbGF0ZUNvZGU6IHN0cmluZyxcbiAgICBvcHRpb25zOiBNb2RpZnlHdWlsZFRlbXBsYXRlLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8VGVtcGxhdGUsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGVkaXRNZXNzYWdlOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBFZGl0TWVzc2FnZSkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxNZXNzYWdlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBlZGl0T3JpZ2luYWxJbnRlcmFjdGlvblJlc3BvbnNlOiAodG9rZW46IHN0cmluZywgb3B0aW9uczogSW50ZXJhY3Rpb25DYWxsYmFja0RhdGEpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TWVzc2FnZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZWRpdFJvbGU6IChndWlsZElkOiBCaWdTdHJpbmcsIHJvbGVJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBFZGl0R3VpbGRSb2xlLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8Um9sZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZWRpdFJvbGVQb3NpdGlvbnM6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IE1vZGlmeVJvbGVQb3NpdGlvbnNbXSwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFJvbGUsIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgZWRpdFNjaGVkdWxlZEV2ZW50OiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIGV2ZW50SWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zOiBQYXJ0aWFsPEVkaXRTY2hlZHVsZWRFdmVudD4sXG4gICAgcmVhc29uPzogc3RyaW5nLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8U2NoZWR1bGVkRXZlbnQsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGVkaXRTdGFnZUluc3RhbmNlOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIHRvcGljOiBzdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxTdGFnZUluc3RhbmNlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBlZGl0V2ViaG9vazogKHdlYmhvb2tJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBNb2RpZnlXZWJob29rLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8V2ViaG9vaywgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZWRpdFdlYmhvb2tNZXNzYWdlOiAoXG4gICAgd2ViaG9va0lkOiBCaWdTdHJpbmcsXG4gICAgdG9rZW46IHN0cmluZyxcbiAgICBtZXNzYWdlSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zOiBFZGl0V2ViaG9va01lc3NhZ2VPcHRpb25zLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TWVzc2FnZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZWRpdFdlYmhvb2tXaXRoVG9rZW46IChcbiAgICB3ZWJob29rSWQ6IEJpZ1N0cmluZyxcbiAgICB0b2tlbjogc3RyaW5nLFxuICAgIG9wdGlvbnM6IE9taXQ8TW9kaWZ5V2ViaG9vaywgJ2NoYW5uZWxJZCc+LFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8V2ViaG9vaywgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZWRpdFdlbGNvbWVTY3JlZW46IChcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogTW9kaWZ5R3VpbGRXZWxjb21lU2NyZWVuLFxuICAgIHJlYXNvbj86IHN0cmluZyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFdlbGNvbWVTY3JlZW4sIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGVkaXRXaWRnZXRTZXR0aW5nczogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zOiBDYW1lbGl6ZTxEaXNjb3JkR3VpbGRXaWRnZXRTZXR0aW5ncz4sXG4gICAgcmVhc29uPzogc3RyaW5nLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8R3VpbGRXaWRnZXRTZXR0aW5ncywgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZWRpdFVzZXJBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uOiAoXG4gICAgYmVhcmVyVG9rZW46IHN0cmluZyxcbiAgICBhcHBsaWNhdGlvbklkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogQ2FtZWxpemU8RGlzY29yZEFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb24+LFxuICApID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb24+PjtcbiAgZGVsZXRlQ3VycmVudFVzZXJBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uOiAoYmVhcmVyVG9rZW46IHN0cmluZywgYXBwbGljYXRpb25JZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBleGVjdXRlV2ViaG9vazogKFxuICAgIHdlYmhvb2tJZDogQmlnU3RyaW5nLFxuICAgIHRva2VuOiBzdHJpbmcsXG4gICAgb3B0aW9uczogRXhlY3V0ZVdlYmhvb2ssXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxNZXNzYWdlLCBUUHJvcHMsIFRCZWhhdmlvcj4gfCB1bmRlZmluZWQ+O1xuICBmb2xsb3dBbm5vdW5jZW1lbnQ6IChzb3VyY2VDaGFubmVsSWQ6IEJpZ1N0cmluZywgdGFyZ2V0Q2hhbm5lbElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEZvbGxvd2VkQ2hhbm5lbD4+O1xuICBnZXRBY3RpdmVUaHJlYWRzOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICApID0+IFByb21pc2U8eyB0aHJlYWRzOiBTZXR1cERlc2lyZWRQcm9wczxDaGFubmVsLCBUUHJvcHMsIFRCZWhhdmlvcj5bXTsgbWVtYmVyczogU2V0dXBEZXNpcmVkUHJvcHM8VGhyZWFkTWVtYmVyLCBUUHJvcHMsIFRCZWhhdmlvcj5bXSB9PjtcbiAgZ2V0QXBwbGljYXRpb25JbmZvOiAoKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEFwcGxpY2F0aW9uLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBlZGl0QXBwbGljYXRpb25JbmZvOiAoYm9keTogRWRpdEFwcGxpY2F0aW9uKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEFwcGxpY2F0aW9uLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRDdXJyZW50QXV0aGVudGljYXRpb25JbmZvOiAoYmVhcmVyVG9rZW46IHN0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkQ3VycmVudEF1dGhvcml6YXRpb24+PjtcbiAgZXhjaGFuZ2VUb2tlbjogKFxuICAgIGNsaWVudElkOiBCaWdTdHJpbmcsXG4gICAgY2xpZW50U2VjcmV0OiBzdHJpbmcsXG4gICAgb3B0aW9uczogQ2FtZWxpemU8RGlzY29yZFRva2VuRXhjaGFuZ2U+LFxuICApID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEFjY2Vzc1Rva2VuUmVzcG9uc2U+PjtcbiAgcmV2b2tlVG9rZW46IChjbGllbnRJZDogQmlnU3RyaW5nLCBjbGllbnRTZWNyZXQ6IHN0cmluZywgb3B0aW9uczogQ2FtZWxpemU8RGlzY29yZFRva2VuUmV2b2NhdGlvbj4pID0+IFByb21pc2U8dm9pZD47XG4gIGdldEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb246IChcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgY29tbWFuZElkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9ucz86IEdldEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25PcHRpb25zLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9ucywgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0QXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnM6IChcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9ucz86IEdldEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25PcHRpb25zLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9ucywgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBnZXRBdWRpdExvZzogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IEdldEd1aWxkQXVkaXRMb2cpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEF1ZGl0TG9nPj47XG4gIGdldEF1dG9tb2RSdWxlOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBydWxlSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxBdXRvTW9kZXJhdGlvblJ1bGUsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldEF1dG9tb2RSdWxlczogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxBdXRvTW9kZXJhdGlvblJ1bGUsIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgZ2V0QXZhaWxhYmxlVm9pY2VSZWdpb25zOiAoKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFZvaWNlUmVnaW9uLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGdldEJhbjogKGd1aWxkSWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEJhbj4+O1xuICBnZXRCYW5zOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogR2V0QmFucykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkQmFuPltdPjtcbiAgZ2V0Q2hhbm5lbDogKGNoYW5uZWxJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPENoYW5uZWwsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldENoYW5uZWxJbnZpdGVzOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8SW52aXRlLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGdldENoYW5uZWxzOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPENoYW5uZWwsIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgZ2V0Q2hhbm5lbFdlYmhvb2tzOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8V2ViaG9vaywgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBnZXREbUNoYW5uZWw6ICh1c2VySWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxDaGFubmVsLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRHcm91cERtQ2hhbm5lbDogKG9wdGlvbnM6IENyZWF0ZUdyb3VwRG1PcHRpb25zKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPENoYW5uZWwsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldEVtb2ppOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBlbW9qaUlkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8RW1vamksIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldEFwcGxpY2F0aW9uRW1vamk6IChlbW9qaUlkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8RW1vamksIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldEVtb2ppczogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxFbW9qaSwgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBnZXRBcHBsaWNhdGlvbkVtb2ppczogKCkgPT4gUHJvbWlzZTx7IGl0ZW1zOiBTZXR1cERlc2lyZWRQcm9wczxFbW9qaSwgVFByb3BzLCBUQmVoYXZpb3I+W10gfT47XG4gIGdldEZvbGxvd3VwTWVzc2FnZTogKHRva2VuOiBzdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPE1lc3NhZ2UsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldEdhdGV3YXlCb3Q6ICgpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8R2V0R2F0ZXdheUJvdCwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kOiAoY29tbWFuZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8QXBwbGljYXRpb25Db21tYW5kLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmRzOiAoXG4gICAgb3B0aW9ucz86IEdldEdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZHNPcHRpb25zLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8QXBwbGljYXRpb25Db21tYW5kLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGdldEd1aWxkOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogeyBjb3VudHM/OiBib29sZWFuIH0pID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8R3VpbGQsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldEd1aWxkczogKGJlYXJlclRva2VuOiBzdHJpbmcsIG9wdGlvbnM/OiBHZXRVc2VyR3VpbGRzKSA9PiBQcm9taXNlPFBhcnRpYWw8U2V0dXBEZXNpcmVkUHJvcHM8R3VpbGQsIFRQcm9wcywgVEJlaGF2aW9yPj5bXT47XG4gIGdldEd1aWxkQXBwbGljYXRpb25Db21tYW5kOiAoY29tbWFuZElkOiBCaWdTdHJpbmcsIGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxBcHBsaWNhdGlvbkNvbW1hbmQsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldEd1aWxkQXBwbGljYXRpb25Db21tYW5kczogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zPzogR2V0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRzT3B0aW9ucyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEFwcGxpY2F0aW9uQ29tbWFuZCwgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBnZXRHdWlsZFByZXZpZXc6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEd1aWxkUHJldmlldz4+O1xuICBnZXRHdWlsZFN0aWNrZXI6IChndWlsZElkOiBCaWdTdHJpbmcsIHN0aWNrZXJJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFN0aWNrZXIsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldEd1aWxkU3RpY2tlcnM6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8U3RpY2tlciwgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBnZXRHdWlsZFRlbXBsYXRlOiAodGVtcGxhdGVDb2RlOiBzdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8VGVtcGxhdGUsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldEd1aWxkVGVtcGxhdGVzOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFRlbXBsYXRlLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGdldEd1aWxkV2ViaG9va3M6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8V2ViaG9vaywgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBnZXRJbnRlZ3JhdGlvbnM6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8SW50ZWdyYXRpb24sIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgZ2V0SW52aXRlOiAoaW52aXRlQ29kZTogc3RyaW5nLCBvcHRpb25zPzogR2V0SW52aXRlKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEludml0ZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0SW52aXRlczogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxJbnZpdGUsIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgZ2V0TWVzc2FnZTogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxNZXNzYWdlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRNZXNzYWdlczogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogR2V0TWVzc2FnZXNPcHRpb25zKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPE1lc3NhZ2UsIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgc2VhcmNoR3VpbGRNZXNzYWdlczogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zPzogU2VhcmNoR3VpbGRNZXNzYWdlc09wdGlvbnMsXG4gICkgPT4gUHJvbWlzZTxcbiAgICB8IENhbWVsaXplPERpc2NvcmRTZWFyY2hHdWlsZE1lc3NhZ2VzSW5kZXhpbmc+XG4gICAgfCAoT21pdDxDYW1lbGl6ZTxEaXNjb3JkU2VhcmNoR3VpbGRNZXNzYWdlcz4sICdtZXNzYWdlcycgfCAndGhyZWFkcycgfCAnbWVtYmVycyc+ICYge1xuICAgICAgICBtZXNzYWdlczogU2V0dXBEZXNpcmVkUHJvcHM8TWVzc2FnZSwgVFByb3BzLCBUQmVoYXZpb3I+W11bXTtcbiAgICAgICAgdGhyZWFkcz86IFNldHVwRGVzaXJlZFByb3BzPENoYW5uZWwsIFRQcm9wcywgVEJlaGF2aW9yPltdO1xuICAgICAgICBtZW1iZXJzPzogU2V0dXBEZXNpcmVkUHJvcHM8VGhyZWFkTWVtYmVyLCBUUHJvcHMsIFRCZWhhdmlvcj5bXTtcbiAgICAgIH0pXG4gID47XG4gIGdldFN0aWNrZXJQYWNrOiAoc3RpY2tlclBhY2tJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFN0aWNrZXJQYWNrLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRTdGlja2VyUGFja3M6ICgpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8U3RpY2tlclBhY2ssIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgZ2V0T3JpZ2luYWxJbnRlcmFjdGlvblJlc3BvbnNlOiAodG9rZW46IHN0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxNZXNzYWdlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRDaGFubmVsUGluczogKFxuICAgIGNoYW5uZWxJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM/OiBHZXRDaGFubmVsUGluc09wdGlvbnMsXG4gICkgPT4gUHJvbWlzZTx7IGl0ZW1zOiBTZXR1cERlc2lyZWRQcm9wczxNZXNzYWdlUGluLCBUUHJvcHMsIFRCZWhhdmlvcj5bXTsgaGFzTW9yZTogYm9vbGVhbiB9PjtcbiAgLyoqIEBkZXByZWNhdGVkIFVzZSB7QGxpbmsgQm90SGVscGVycy5nZXRDaGFubmVsUGluc30gaW5zdGVhZCAqL1xuICBnZXRQaW5uZWRNZXNzYWdlczogKGNoYW5uZWxJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPE1lc3NhZ2UsIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgZ2V0UHJpdmF0ZUFyY2hpdmVkVGhyZWFkczogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogTGlzdEFyY2hpdmVkVGhyZWFkcykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTGlzdEFyY2hpdmVkVGhyZWFkcz4+O1xuICBnZXRQcml2YXRlSm9pbmVkQXJjaGl2ZWRUaHJlYWRzOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBMaXN0QXJjaGl2ZWRUaHJlYWRzKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRMaXN0QXJjaGl2ZWRUaHJlYWRzPj47XG4gIGdldFBydW5lQ291bnQ6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBHZXRHdWlsZFBydW5lQ291bnRRdWVyeSkgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkUHJ1bmVkQ291bnQ+PjtcbiAgZ2V0UHVibGljQXJjaGl2ZWRUaHJlYWRzOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBMaXN0QXJjaGl2ZWRUaHJlYWRzKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRMaXN0QXJjaGl2ZWRUaHJlYWRzPj47XG4gIGdldFJvbGVzOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFJvbGUsIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgZ2V0Um9sZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgcm9sZUlkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8Um9sZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0U2NoZWR1bGVkRXZlbnQ6IChcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgZXZlbnRJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM/OiB7IHdpdGhVc2VyQ291bnQ/OiBib29sZWFuIH0sXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxTY2hlZHVsZWRFdmVudCwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0U2NoZWR1bGVkRXZlbnRzOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogR2V0U2NoZWR1bGVkRXZlbnRzKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFNjaGVkdWxlZEV2ZW50LCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGdldFNjaGVkdWxlZEV2ZW50VXNlcnM6IChcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgZXZlbnRJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM/OiBHZXRTY2hlZHVsZWRFdmVudFVzZXJzLFxuICApID0+IFByb21pc2U8QXJyYXk8eyB1c2VyOiBTZXR1cERlc2lyZWRQcm9wczxVc2VyLCBUUHJvcHMsIFRCZWhhdmlvcj47IG1lbWJlcj86IFNldHVwRGVzaXJlZFByb3BzPE1lbWJlciwgVFByb3BzLCBUQmVoYXZpb3I+IH0+PjtcbiAgZ2V0U2Vzc2lvbkluZm86ICgpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8R2V0R2F0ZXdheUJvdCwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0U3RhZ2VJbnN0YW5jZTogKGNoYW5uZWxJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFN0YWdlSW5zdGFuY2UsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldE93blZvaWNlU3RhdGU6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8Vm9pY2VTdGF0ZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0VXNlclZvaWNlU3RhdGU6IChndWlsZElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFZvaWNlU3RhdGUsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldFN0aWNrZXI6IChzdGlja2VySWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxTdGlja2VyLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRUaHJlYWRNZW1iZXI6IChcbiAgICBjaGFubmVsSWQ6IEJpZ1N0cmluZyxcbiAgICB1c2VySWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zPzogR2V0VGhyZWFkTWVtYmVyLFxuICAgIGV4dHJhPzogVGhyZWFkTWVtYmVyVHJhbnNmb3JtZXJFeHRyYSxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFRocmVhZE1lbWJlciwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0VGhyZWFkTWVtYmVyczogKFxuICAgIGNoYW5uZWxJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM/OiBMaXN0VGhyZWFkTWVtYmVycyxcbiAgICBleHRyYT86IFRocmVhZE1lbWJlclRyYW5zZm9ybWVyRXh0cmEsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxUaHJlYWRNZW1iZXIsIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgZ2V0UmVhY3Rpb25zOiAoXG4gICAgY2hhbm5lbElkOiBCaWdTdHJpbmcsXG4gICAgbWVzc2FnZUlkOiBCaWdTdHJpbmcsXG4gICAgcmVhY3Rpb246IHN0cmluZyxcbiAgICBvcHRpb25zPzogR2V0UmVhY3Rpb25zLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8VXNlciwgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBnZXRVc2VyOiAoaWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxVc2VyLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRDdXJyZW50VXNlcjogKGJlYXJlclRva2VuOiBzdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8VXNlciwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0VXNlckNvbm5lY3Rpb25zOiAoYmVhcmVyVG9rZW46IHN0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkQ29ubmVjdGlvbj5bXT47XG4gIGdldFVzZXJBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uOiAoYmVhcmVyVG9rZW46IHN0cmluZywgYXBwbGljYXRpb25JZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uPj47XG4gIGdldFZhbml0eVVybDogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkVmFuaXR5VXJsPj47XG4gIGdldFZvaWNlUmVnaW9uczogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxWb2ljZVJlZ2lvbiwgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBnZXRXZWJob29rOiAod2ViaG9va0lkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8V2ViaG9vaywgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0V2ViaG9va01lc3NhZ2U6IChcbiAgICB3ZWJob29rSWQ6IEJpZ1N0cmluZyxcbiAgICB0b2tlbjogc3RyaW5nLFxuICAgIG1lc3NhZ2VJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM/OiBHZXRXZWJob29rTWVzc2FnZU9wdGlvbnMsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxNZXNzYWdlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRXZWJob29rV2l0aFRva2VuOiAod2ViaG9va0lkOiBCaWdTdHJpbmcsIHRva2VuOiBzdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8V2ViaG9vaywgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0V2VsY29tZVNjcmVlbjogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxXZWxjb21lU2NyZWVuLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRXaWRnZXQ6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8R3VpbGRXaWRnZXQsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldFdpZGdldFNldHRpbmdzOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEd1aWxkV2lkZ2V0U2V0dGluZ3MsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIHB1Ymxpc2hNZXNzYWdlOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPE1lc3NhZ2UsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIHNlbmRNZXNzYWdlOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IENyZWF0ZU1lc3NhZ2VPcHRpb25zKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPE1lc3NhZ2UsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIHNlbmRGb2xsb3d1cE1lc3NhZ2U6ICh0b2tlbjogc3RyaW5nLCBvcHRpb25zOiBJbnRlcmFjdGlvbkNhbGxiYWNrRGF0YSkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxNZXNzYWdlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBzdGFydFRocmVhZFdpdGhNZXNzYWdlOiAoXG4gICAgY2hhbm5lbElkOiBCaWdTdHJpbmcsXG4gICAgbWVzc2FnZUlkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogU3RhcnRUaHJlYWRXaXRoTWVzc2FnZSxcbiAgICByZWFzb24/OiBzdHJpbmcsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxDaGFubmVsLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBzdGFydFRocmVhZFdpdGhvdXRNZXNzYWdlOiAoXG4gICAgY2hhbm5lbElkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogU3RhcnRUaHJlYWRXaXRob3V0TWVzc2FnZSxcbiAgICByZWFzb24/OiBzdHJpbmcsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxDaGFubmVsLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRQb2xsQW5zd2VyVm90ZXJzOiAoXG4gICAgY2hhbm5lbElkOiBCaWdTdHJpbmcsXG4gICAgbWVzc2FnZUlkOiBCaWdTdHJpbmcsXG4gICAgYW5zd2VySWQ6IG51bWJlcixcbiAgICBvcHRpb25zPzogR2V0UG9sbEFuc3dlclZvdGVzLFxuICApID0+IFByb21pc2U8eyB1c2VyczogU2V0dXBEZXNpcmVkUHJvcHM8VXNlciwgVFByb3BzLCBUQmVoYXZpb3I+W10gfT47XG4gIGVuZFBvbGw6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TWVzc2FnZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgc3luY0d1aWxkVGVtcGxhdGU6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8VGVtcGxhdGUsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIHVwc2VydEdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZHM6IChcbiAgICBjb21tYW5kczogQ3JlYXRlQXBwbGljYXRpb25Db21tYW5kW10sXG4gICAgb3B0aW9ucz86IFVwc2VydEdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZE9wdGlvbnMsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxBcHBsaWNhdGlvbkNvbW1hbmQsIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgdXBzZXJ0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRzOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIGNvbW1hbmRzOiBDcmVhdGVBcHBsaWNhdGlvbkNvbW1hbmRbXSxcbiAgICBvcHRpb25zPzogVXBzZXJ0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25zLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8QXBwbGljYXRpb25Db21tYW5kLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGVkaXRDdXJyZW50TWVtYmVyOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBNb2RpZnlDdXJyZW50TWVtYmVyLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TWVtYmVyLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBlZGl0TWVtYmVyOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIHVzZXJJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IE1vZGlmeUd1aWxkTWVtYmVyLFxuICAgIHJlYXNvbj86IHN0cmluZyxcbiAgKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPE1lbWJlciwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgZ2V0Q3VycmVudE1lbWJlcjogKGd1aWxkSWQ6IEJpZ1N0cmluZywgYmVhcmVyVG9rZW46IHN0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxNZW1iZXIsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGdldE1lbWJlcjogKGd1aWxkSWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TWVtYmVyLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRNZW1iZXJzOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBMaXN0R3VpbGRNZW1iZXJzKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPE1lbWJlciwgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBwcnVuZU1lbWJlcnM6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IEJlZ2luR3VpbGRQcnVuZSwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHsgcHJ1bmVkOiBudW1iZXIgfCBudWxsIH0+O1xuICBzZWFyY2hNZW1iZXJzOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIHF1ZXJ5OiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IE9taXQ8U2VhcmNoTWVtYmVycywgJ3F1ZXJ5Jz4sXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxNZW1iZXIsIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgYnVsa0Jhbk1lbWJlcnM6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IENyZWF0ZUd1aWxkQnVsa0JhbiwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHsgYmFubmVkVXNlcnM6IGJpZ2ludFtdOyBmYWlsZWRVc2VyczogYmlnaW50W10gfT47XG4gIGdldEFwcGxpY2F0aW9uQWN0aXZpdHlJbnN0YW5jZTogKGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZywgaW5zdGFuY2VJZDogc3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRBY3Rpdml0eUluc3RhbmNlPj47XG4gIGxpc3RBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uc01ldGFkYXRhUmVjb3JkczogKGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbk1ldGFkYXRhPltdPjtcbiAgdXBkYXRlQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbnNNZXRhZGF0YVJlY29yZHM6IChcbiAgICBhcHBsaWNhdGlvbklkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogQ2FtZWxpemU8RGlzY29yZEFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb25NZXRhZGF0YT5bXSxcbiAgKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uTWV0YWRhdGE+W10+O1xuICBjcmVhdGVMb2JieTogKG9wdGlvbnM6IENyZWF0ZUxvYmJ5KSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPExvYmJ5LCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBjcmVhdGVPckpvaW5Mb2JieTogKG9wdGlvbnM6IENyZWF0ZU9ySm9pbkxvYmJ5KSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPExvYmJ5LCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRMb2JieTogKGxvYmJ5SWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxMb2JieSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgbW9kaWZ5TG9iYnk6IChsb2JieUlkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IE1vZGlmeUxvYmJ5KSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPExvYmJ5LCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBhZGRNZW1iZXJUb0xvYmJ5OiAobG9iYnlJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQWRkTG9iYnlNZW1iZXIpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TG9iYnlNZW1iZXIsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGJ1bGtVcGRhdGVMb2JieU1lbWJlcnM6IChsb2JieUlkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IEJ1bGtVcGRhdGVMb2JieU1lbWJlcltdKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPExvYmJ5TWVtYmVyLCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGxpbmtDaGFubmVsVG9Mb2JieTogKGxvYmJ5SWQ6IEJpZ1N0cmluZywgYmVhcmVyVG9rZW46IHN0cmluZywgb3B0aW9uczogTGlua0NoYW5uZWxUb0xvYmJ5KSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPExvYmJ5LCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICB1bmxpbmtDaGFubmVsVG9Mb2JieTogKGxvYmJ5SWQ6IEJpZ1N0cmluZywgYmVhcmVyVG9rZW46IHN0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxMb2JieSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgdXBkYXRlTG9iYnlNZXNzYWdlTW9kZXJhdGlvbk1ldGFkYXRhOiAobG9iYnlJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPikgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZ2V0VGFyZ2V0VXNlcnM6IChpbnZpdGVDb2RlOiBzdHJpbmcpID0+IFByb21pc2U8c3RyaW5nPjtcbiAgdXBkYXRlVGFyZ2V0VXNlcnM6IChpbnZpdGVDb2RlOiBzdHJpbmcsIHRhcmdldFVzZXJzRmlsZTogQmxvYikgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZ2V0VGFyZ2V0VXNlcnNKb2JTdGF0dXM6IChpbnZpdGVDb2RlOiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFRhcmdldFVzZXJzSm9iU3RhdHVzPj47XG4gIHNlbmRMb2JieU1lc3NhZ2U6IChcbiAgICBiZWFyZXJUb2tlbjogc3RyaW5nLFxuICAgIGxvYmJ5SWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zOiBTZW5kTG9iYnlNZXNzYWdlLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TG9iYnlNZXNzYWdlLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBnZXRMb2JieU1lc3NhZ2VzOiAoXG4gICAgYmVhcmVyVG9rZW46IHN0cmluZyxcbiAgICBsb2JieUlkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9ucz86IEdldExvYmJ5TWVzc2FnZXMsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxMb2JieU1lc3NhZ2UsIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgY3JlYXRlTG9iYnlDaGFubmVsSW52aXRlRm9yU2VsZjogKGJlYXJlclRva2VuOiBzdHJpbmcsIGxvYmJ5SWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxMb2JieUludml0ZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgY3JlYXRlTG9iYnlDaGFubmVsSW52aXRlRm9yVXNlcjogKGxvYmJ5SWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8TG9iYnlJbnZpdGUsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGFkZFJlYWN0aW9uOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nLCByZWFjdGlvbjogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBhZGRSZWFjdGlvbnM6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcsIHJlYWN0aW9uczogc3RyaW5nW10sIG9yZGVyZWQ/OiBib29sZWFuKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBhZGRSb2xlOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZywgcm9sZUlkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgYWRkVGhyZWFkTWVtYmVyOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBhZGREbVJlY2lwaWVudDogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQWRkRG1SZWNpcGllbnRPcHRpb25zKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBhZGRHdWlsZE1lbWJlcjogKGd1aWxkSWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IEFkZEd1aWxkTWVtYmVyT3B0aW9ucykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlQXV0b21vZFJ1bGU6IChndWlsZElkOiBCaWdTdHJpbmcsIHJ1bGVJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGRlbGV0ZUNoYW5uZWw6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVDaGFubmVsUGVybWlzc2lvbk92ZXJyaWRlOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG92ZXJ3cml0ZUlkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlRW1vamk6IChndWlsZElkOiBCaWdTdHJpbmcsIGlkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlQXBwbGljYXRpb25FbW9qaTogKGlkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGRlbGV0ZUZvbGxvd3VwTWVzc2FnZTogKHRva2VuOiBzdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmQ6IChjb21tYW5kSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlR3VpbGRBcHBsaWNhdGlvbkNvbW1hbmQ6IChjb21tYW5kSWQ6IEJpZ1N0cmluZywgZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVHdWlsZFN0aWNrZXI6IChndWlsZElkOiBCaWdTdHJpbmcsIHN0aWNrZXJJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGRlbGV0ZUd1aWxkVGVtcGxhdGU6IChndWlsZElkOiBCaWdTdHJpbmcsIHRlbXBsYXRlQ29kZTogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVJbnRlZ3JhdGlvbjogKGd1aWxkSWQ6IEJpZ1N0cmluZywgaW50ZWdyYXRpb25JZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGRlbGV0ZUludml0ZTogKGludml0ZUNvZGU6IHN0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVNZXNzYWdlOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGRlbGV0ZU1lc3NhZ2VzOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZHM6IEJpZ1N0cmluZ1tdLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGRlbGV0ZU9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZTogKHRva2VuOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGRlbGV0ZU93blJlYWN0aW9uOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nLCByZWFjdGlvbjogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVSZWFjdGlvbnNBbGw6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGRlbGV0ZVJlYWN0aW9uc0Vtb2ppOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nLCByZWFjdGlvbjogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVSb2xlOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCByb2xlSWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVTY2hlZHVsZWRFdmVudDogKGd1aWxkSWQ6IEJpZ1N0cmluZywgZXZlbnRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVTdGFnZUluc3RhbmNlOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlVXNlclJlYWN0aW9uOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZywgcmVhY3Rpb246IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlV2ViaG9vazogKHdlYmhvb2tJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGRlbGV0ZVdlYmhvb2tNZXNzYWdlOiAod2ViaG9va0lkOiBCaWdTdHJpbmcsIHRva2VuOiBzdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogRGVsZXRlV2ViaG9va01lc3NhZ2VPcHRpb25zKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVXZWJob29rV2l0aFRva2VuOiAod2ViaG9va0lkOiBCaWdTdHJpbmcsIHRva2VuOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGVkaXRDaGFubmVsUGVybWlzc2lvbk92ZXJyaWRlczogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBFZGl0Q2hhbm5lbFBlcm1pc3Npb25PdmVycmlkZXNPcHRpb25zLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGVkaXRDaGFubmVsUG9zaXRpb25zOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBjaGFubmVsUG9zaXRpb25zOiBNb2RpZnlHdWlsZENoYW5uZWxQb3NpdGlvbnNbXSkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZWRpdE93blZvaWNlU3RhdGU6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IEVkaXRPd25Wb2ljZVN0YXRlKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBlZGl0VXNlclZvaWNlU3RhdGU6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IEVkaXRVc2VyVm9pY2VTdGF0ZSkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgam9pblRocmVhZDogKGNoYW5uZWxJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBsZWF2ZUd1aWxkOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBsZWF2ZVRocmVhZDogKGNoYW5uZWxJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICByZW1vdmVSb2xlOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZywgcm9sZUlkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgcmVtb3ZlVGhyZWFkTWVtYmVyOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICByZW1vdmVEbVJlY2lwaWVudDogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgc2VuZEludGVyYWN0aW9uUmVzcG9uc2U6IChcbiAgICBpbnRlcmFjdGlvbklkOiBCaWdTdHJpbmcsXG4gICAgdG9rZW46IHN0cmluZyxcbiAgICBvcHRpb25zOiBJbnRlcmFjdGlvblJlc3BvbnNlLFxuICAgIHBhcmFtcz86IEludGVyYWN0aW9uQ2FsbGJhY2tPcHRpb25zLFxuICApID0+IFByb21pc2U8dm9pZCB8IFNldHVwRGVzaXJlZFByb3BzPEludGVyYWN0aW9uQ2FsbGJhY2tSZXNwb25zZSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgdHJpZ2dlclR5cGluZ0luZGljYXRvcjogKGNoYW5uZWxJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBiYW5NZW1iZXI6IChndWlsZElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogQ3JlYXRlR3VpbGRCYW4sIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAga2lja01lbWJlcjogKGd1aWxkSWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgcGluTWVzc2FnZTogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICB1bmJhbk1lbWJlcjogKGd1aWxkSWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgdW5waW5NZXNzYWdlOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGdldEd1aWxkT25ib2FyZGluZzogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxHdWlsZE9uYm9hcmRpbmcsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGVkaXRHdWlsZE9uYm9hcmRpbmc6IChcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogRWRpdEd1aWxkT25ib2FyZGluZyxcbiAgICByZWFzb24/OiBzdHJpbmcsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxHdWlsZE9uYm9hcmRpbmcsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIG1vZGlmeUd1aWxkSW5jaWRlbnRBY3Rpb25zOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IE1vZGlmeUd1aWxkSW5jaWRlbnRBY3Rpb25zLFxuICApID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8SW5jaWRlbnRzRGF0YSwgVFByb3BzLCBUQmVoYXZpb3I+PjtcbiAgbGlzdEVudGl0bGVtZW50czogKGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IEdldEVudGl0bGVtZW50cykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxFbnRpdGxlbWVudCwgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBnZXRFbnRpdGxlbWVudDogKGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZywgZW50aXRsZW1lbnRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPEVudGl0bGVtZW50LCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBjcmVhdGVUZXN0RW50aXRsZW1lbnQ6IChcbiAgICBhcHBsaWNhdGlvbklkOiBCaWdTdHJpbmcsXG4gICAgYm9keTogQ3JlYXRlVGVzdEVudGl0bGVtZW50LFxuICApID0+IFByb21pc2U8UGFydGlhbDxTZXR1cERlc2lyZWRQcm9wczxFbnRpdGxlbWVudCwgVFByb3BzLCBUQmVoYXZpb3I+Pj47XG4gIGRlbGV0ZVRlc3RFbnRpdGxlbWVudDogKGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZywgZW50aXRsZW1lbnRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBjb25zdW1lRW50aXRsZW1lbnQ6IChhcHBsaWNhdGlvbklkOiBCaWdTdHJpbmcsIGVudGl0bGVtZW50SWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgbGlzdFNrdXM6IChhcHBsaWNhdGlvbklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8U2t1LCBUUHJvcHMsIFRCZWhhdmlvcj5bXT47XG4gIGxpc3RTdWJzY3JpcHRpb25zOiAoc2t1SWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IExpc3RTa3VTdWJzY3JpcHRpb25zT3B0aW9ucykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxTdWJzY3JpcHRpb24sIFRQcm9wcywgVEJlaGF2aW9yPltdPjtcbiAgZ2V0U3Vic2NyaXB0aW9uOiAoc2t1SWQ6IEJpZ1N0cmluZywgc3Vic2NyaXB0aW9uSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxTdWJzY3JpcHRpb24sIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIHNlbmRTb3VuZGJvYXJkU291bmQ6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogU2VuZFNvdW5kYm9hcmRTb3VuZCkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgbGlzdERlZmF1bHRTb3VuZGJvYXJkU291bmRzOiAoKSA9PiBQcm9taXNlPFNldHVwRGVzaXJlZFByb3BzPFNvdW5kYm9hcmRTb3VuZCwgVFByb3BzLCBUQmVoYXZpb3I+W10+O1xuICBsaXN0R3VpbGRTb3VuZGJvYXJkU291bmRzOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHsgaXRlbXM6IFNldHVwRGVzaXJlZFByb3BzPFNvdW5kYm9hcmRTb3VuZCwgVFByb3BzLCBUQmVoYXZpb3I+W10gfT47XG4gIGdldEd1aWxkU291bmRib2FyZFNvdW5kOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBzb3VuZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8U2V0dXBEZXNpcmVkUHJvcHM8U291bmRib2FyZFNvdW5kLCBUUHJvcHMsIFRCZWhhdmlvcj4+O1xuICBjcmVhdGVHdWlsZFNvdW5kYm9hcmRTb3VuZDogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zOiBDcmVhdGVHdWlsZFNvdW5kYm9hcmRTb3VuZCxcbiAgICByZWFzb24/OiBzdHJpbmcsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxTb3VuZGJvYXJkU291bmQsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIG1vZGlmeUd1aWxkU291bmRib2FyZFNvdW5kOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIHNvdW5kSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zOiBNb2RpZnlHdWlsZFNvdW5kYm9hcmRTb3VuZCxcbiAgICByZWFzb24/OiBzdHJpbmcsXG4gICkgPT4gUHJvbWlzZTxTZXR1cERlc2lyZWRQcm9wczxTb3VuZGJvYXJkU291bmQsIFRQcm9wcywgVEJlaGF2aW9yPj47XG4gIGRlbGV0ZUd1aWxkU291bmRib2FyZFNvdW5kOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBzb3VuZElkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlTG9iYnk6IChsb2JieUlkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIHJlbW92ZU1lbWJlckZyb21Mb2JieTogKGxvYmJ5SWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGxlYXZlTG9iYnk6IChsb2JieUlkOiBCaWdTdHJpbmcsIGJlYXJlclRva2VuOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG59O1xuIl0sIm5hbWVzIjpbImNhbWVsaXplIiwiY3JlYXRlQm90SGVscGVycyIsImJvdCIsImNyZWF0ZUF1dG9tb2RSdWxlIiwiZ3VpbGRJZCIsIm9wdGlvbnMiLCJyZWFzb24iLCJ0cmFuc2Zvcm1lcnMiLCJhdXRvTW9kZXJhdGlvblJ1bGUiLCJyZXN0Iiwic25ha2UiLCJjcmVhdGVDaGFubmVsIiwiY2hhbm5lbCIsImNyZWF0ZUVtb2ppIiwiZW1vamkiLCJjcmVhdGVBcHBsaWNhdGlvbkVtb2ppIiwiY3JlYXRlRm9ydW1UaHJlYWQiLCJjaGFubmVsSWQiLCJjcmVhdGVHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmQiLCJjb21tYW5kIiwiYXBwbGljYXRpb25Db21tYW5kIiwiY3JlYXRlR3VpbGRBcHBsaWNhdGlvbkNvbW1hbmQiLCJjcmVhdGVHdWlsZFN0aWNrZXIiLCJzdGlja2VyIiwiY3JlYXRlR3VpbGRUZW1wbGF0ZSIsInRlbXBsYXRlIiwiY3JlYXRlSW52aXRlIiwiZ2V0R3VpbGRSb2xlTWVtYmVyQ291bnRzIiwiY3JlYXRlUm9sZSIsInJvbGUiLCJjcmVhdGVTY2hlZHVsZWRFdmVudCIsInNjaGVkdWxlZEV2ZW50IiwiY3JlYXRlU3RhZ2VJbnN0YW5jZSIsInN0YWdlSW5zdGFuY2UiLCJjcmVhdGVXZWJob29rIiwid2ViaG9vayIsImVkaXRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9ucyIsImNvbW1hbmRJZCIsImJlYXJlclRva2VuIiwiZ3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9ucyIsImVkaXRBdXRvbW9kUnVsZSIsInJ1bGVJZCIsImVkaXRCb3RQcm9maWxlIiwidXNlciIsImVkaXRDaGFubmVsIiwiZWRpdEVtb2ppIiwiaWQiLCJlZGl0QXBwbGljYXRpb25FbW9qaSIsImVkaXRGb2xsb3d1cE1lc3NhZ2UiLCJ0b2tlbiIsIm1lc3NhZ2VJZCIsIm1lc3NhZ2UiLCJlZGl0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kIiwiZWRpdEd1aWxkIiwiZ3VpbGQiLCJlZGl0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmQiLCJlZGl0R3VpbGRTdGlja2VyIiwic3RpY2tlcklkIiwiZWRpdEd1aWxkVGVtcGxhdGUiLCJ0ZW1wbGF0ZUNvZGUiLCJlZGl0TWVzc2FnZSIsImVkaXRPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2UiLCJlZGl0Um9sZSIsInJvbGVJZCIsImVkaXRSb2xlUG9zaXRpb25zIiwibWFwIiwiZWRpdFNjaGVkdWxlZEV2ZW50IiwiZXZlbnRJZCIsImVkaXRTdGFnZUluc3RhbmNlIiwidG9waWMiLCJlZGl0V2ViaG9vayIsIndlYmhvb2tJZCIsImVkaXRXZWJob29rTWVzc2FnZSIsImVkaXRXZWJob29rV2l0aFRva2VuIiwiZWRpdFdlbGNvbWVTY3JlZW4iLCJ3ZWxjb21lU2NyZWVuIiwiZWRpdFdpZGdldFNldHRpbmdzIiwiZ3VpbGRXaWRnZXRTZXR0aW5ncyIsImV4ZWN1dGVXZWJob29rIiwicmVzdWx0IiwiZm9sbG93QW5ub3VuY2VtZW50Iiwic291cmNlQ2hhbm5lbElkIiwidGFyZ2V0Q2hhbm5lbElkIiwiZ2V0QWN0aXZlVGhyZWFkcyIsInRocmVhZHMiLCJ0aHJlYWQiLCJtZW1iZXJzIiwibWVtYmVyIiwidGhyZWFkTWVtYmVyIiwiZ2V0QXBwbGljYXRpb25JbmZvIiwiYXBwbGljYXRpb24iLCJlZGl0QXBwbGljYXRpb25JbmZvIiwiYm9keSIsImdldEN1cnJlbnRBdXRoZW50aWNhdGlvbkluZm8iLCJleGNoYW5nZVRva2VuIiwiY2xpZW50SWQiLCJjbGllbnRTZWNyZXQiLCJyZXZva2VUb2tlbiIsImdldEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb24iLCJnZXRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9ucyIsInJlcyIsImdldEF1ZGl0TG9nIiwiZ2V0QXV0b21vZFJ1bGUiLCJnZXRBdXRvbW9kUnVsZXMiLCJnZXRBdmFpbGFibGVWb2ljZVJlZ2lvbnMiLCJ2b2ljZVJlZ2lvbiIsImdldEJhbiIsInVzZXJJZCIsImdldEJhbnMiLCJnZXRDaGFubmVsIiwiZ2V0Q2hhbm5lbEludml0ZXMiLCJpbnZpdGUiLCJnZXRDaGFubmVscyIsImdldENoYW5uZWxXZWJob29rcyIsImdldERtQ2hhbm5lbCIsImdldEdyb3VwRG1DaGFubmVsIiwiZ2V0RW1vamkiLCJlbW9qaUlkIiwiZ2V0QXBwbGljYXRpb25FbW9qaSIsImdldEVtb2ppcyIsImdldEFwcGxpY2F0aW9uRW1vamlzIiwiaXRlbXMiLCJpdGVtIiwiZ2V0Rm9sbG93dXBNZXNzYWdlIiwiZ2V0R2F0ZXdheUJvdCIsImdhdGV3YXlCb3QiLCJnZXRHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmQiLCJnZXRHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmRzIiwiZ2V0R3VpbGQiLCJnZXRHdWlsZHMiLCJwYXJ0aWFsIiwiZ2V0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmQiLCJnZXRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZHMiLCJnZXRHdWlsZFByZXZpZXciLCJnZXRHdWlsZFN0aWNrZXIiLCJnZXRHdWlsZFN0aWNrZXJzIiwiZ2V0R3VpbGRUZW1wbGF0ZSIsImdldEd1aWxkVGVtcGxhdGVzIiwiZ2V0R3VpbGRXZWJob29rcyIsImdldEludGVncmF0aW9ucyIsImludGVncmF0aW9uIiwiZ3VpbGRfaWQiLCJ0b1N0cmluZyIsImdldEludml0ZSIsImludml0ZUNvZGUiLCJnZXRJbnZpdGVzIiwiZ2V0TWVzc2FnZSIsImdldE1lc3NhZ2VzIiwiZ2V0U3RpY2tlclBhY2siLCJzdGlja2VyUGFja0lkIiwic3RpY2tlclBhY2siLCJnZXRTdGlja2VyUGFja3MiLCJnZXRPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2UiLCJnZXRDaGFubmVsUGlucyIsImhhc01vcmUiLCJoYXNfbW9yZSIsIm1lc3NhZ2VQaW4iLCJnZXRQaW5uZWRNZXNzYWdlcyIsImdldFByaXZhdGVBcmNoaXZlZFRocmVhZHMiLCJnZXRQcml2YXRlSm9pbmVkQXJjaGl2ZWRUaHJlYWRzIiwiZ2V0UHJ1bmVDb3VudCIsImdldFB1YmxpY0FyY2hpdmVkVGhyZWFkcyIsImdldFJvbGVzIiwiZ2V0Um9sZSIsImdldFNjaGVkdWxlZEV2ZW50IiwiZ2V0U2NoZWR1bGVkRXZlbnRzIiwiZ2V0U2NoZWR1bGVkRXZlbnRVc2VycyIsInUiLCJzbm93Zmxha2UiLCJnZXRTZXNzaW9uSW5mbyIsImdldFN0YWdlSW5zdGFuY2UiLCJnZXRPd25Wb2ljZVN0YXRlIiwidm9pY2VTdGF0ZSIsImdldFVzZXJWb2ljZVN0YXRlIiwiZ2V0U3RpY2tlciIsImdldFRocmVhZE1lbWJlciIsImV4dHJhIiwiZ2V0VGhyZWFkTWVtYmVycyIsImdldFJlYWN0aW9ucyIsInJlYWN0aW9uIiwiZ2V0VXNlciIsImdldEN1cnJlbnRVc2VyIiwiZ2V0VXNlckNvbm5lY3Rpb25zIiwiZ2V0VXNlckFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb24iLCJhcHBsaWNhdGlvbklkIiwiZ2V0VmFuaXR5VXJsIiwiZ2V0Vm9pY2VSZWdpb25zIiwiZ2V0V2ViaG9vayIsImdldFdlYmhvb2tNZXNzYWdlIiwiZ2V0V2ViaG9va1dpdGhUb2tlbiIsImdldFdlbGNvbWVTY3JlZW4iLCJnZXRXaWRnZXQiLCJndWlsZFdpZGdldCIsImdldFdpZGdldFNldHRpbmdzIiwicHVibGlzaE1lc3NhZ2UiLCJzZWFyY2hHdWlsZE1lc3NhZ2VzIiwibWVzc2FnZXMiLCJ1bmRlZmluZWQiLCJzZW5kTWVzc2FnZSIsInNlbmRGb2xsb3d1cE1lc3NhZ2UiLCJzdGFydFRocmVhZFdpdGhNZXNzYWdlIiwic3RhcnRUaHJlYWRXaXRob3V0TWVzc2FnZSIsImdldFBvbGxBbnN3ZXJWb3RlcnMiLCJhbnN3ZXJJZCIsInVzZXJzIiwiZW5kUG9sbCIsInN5bmNHdWlsZFRlbXBsYXRlIiwidXBzZXJ0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kcyIsImNvbW1hbmRzIiwidXBzZXJ0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRzIiwiZWRpdEN1cnJlbnRNZW1iZXIiLCJlZGl0TWVtYmVyIiwiZ2V0Q3VycmVudE1lbWJlciIsImdldE1lbWJlciIsImdldE1lbWJlcnMiLCJwcnVuZU1lbWJlcnMiLCJzZWFyY2hNZW1iZXJzIiwicXVlcnkiLCJidWxrQmFuTWVtYmVycyIsImJhbm5lZFVzZXJzIiwieCIsImZhaWxlZFVzZXJzIiwiZ2V0QXBwbGljYXRpb25BY3Rpdml0eUluc3RhbmNlIiwiaW5zdGFuY2VJZCIsImxpc3RBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uc01ldGFkYXRhUmVjb3JkcyIsInVwZGF0ZUFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb25zTWV0YWRhdGFSZWNvcmRzIiwiY3JlYXRlTG9iYnkiLCJsb2JieSIsImNyZWF0ZU9ySm9pbkxvYmJ5IiwiZ2V0TG9iYnkiLCJsb2JieUlkIiwibW9kaWZ5TG9iYnkiLCJhZGRNZW1iZXJUb0xvYmJ5IiwibG9iYnlNZW1iZXIiLCJidWxrVXBkYXRlTG9iYnlNZW1iZXJzIiwibGlua0NoYW5uZWxUb0xvYmJ5IiwidW5saW5rQ2hhbm5lbFRvTG9iYnkiLCJ1cGRhdGVMb2JieU1lc3NhZ2VNb2RlcmF0aW9uTWV0YWRhdGEiLCJzZW5kTG9iYnlNZXNzYWdlIiwibG9iYnlNZXNzYWdlIiwiZ2V0TG9iYnlNZXNzYWdlcyIsImNyZWF0ZUxvYmJ5Q2hhbm5lbEludml0ZUZvclNlbGYiLCJsb2JieUludml0ZSIsImNyZWF0ZUxvYmJ5Q2hhbm5lbEludml0ZUZvclVzZXIiLCJnZXRUYXJnZXRVc2VycyIsInVwZGF0ZVRhcmdldFVzZXJzIiwidGFyZ2V0VXNlcnNGaWxlIiwiZ2V0VGFyZ2V0VXNlcnNKb2JTdGF0dXMiLCJhZGRSZWFjdGlvbiIsImFkZFJlYWN0aW9ucyIsInJlYWN0aW9ucyIsIm9yZGVyZWQiLCJhZGRSb2xlIiwiYWRkVGhyZWFkTWVtYmVyIiwiYWRkRG1SZWNpcGllbnQiLCJhZGRHdWlsZE1lbWJlciIsImRlbGV0ZUF1dG9tb2RSdWxlIiwiZGVsZXRlQ2hhbm5lbCIsImRlbGV0ZUNoYW5uZWxQZXJtaXNzaW9uT3ZlcnJpZGUiLCJvdmVyd3JpdGVJZCIsImRlbGV0ZUVtb2ppIiwiZGVsZXRlQXBwbGljYXRpb25FbW9qaSIsImRlbGV0ZUZvbGxvd3VwTWVzc2FnZSIsImRlbGV0ZUdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZCIsImRlbGV0ZUd1aWxkQXBwbGljYXRpb25Db21tYW5kIiwiZGVsZXRlR3VpbGRTdGlja2VyIiwiZGVsZXRlR3VpbGRUZW1wbGF0ZSIsImRlbGV0ZUludGVncmF0aW9uIiwiaW50ZWdyYXRpb25JZCIsImRlbGV0ZUludml0ZSIsImRlbGV0ZU1lc3NhZ2UiLCJkZWxldGVNZXNzYWdlcyIsIm1lc3NhZ2VJZHMiLCJkZWxldGVPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2UiLCJkZWxldGVPd25SZWFjdGlvbiIsImRlbGV0ZVJlYWN0aW9uc0FsbCIsImRlbGV0ZVJlYWN0aW9uc0Vtb2ppIiwiZGVsZXRlUm9sZSIsImRlbGV0ZVNjaGVkdWxlZEV2ZW50IiwiZGVsZXRlU3RhZ2VJbnN0YW5jZSIsImRlbGV0ZVVzZXJSZWFjdGlvbiIsImRlbGV0ZVdlYmhvb2siLCJkZWxldGVXZWJob29rTWVzc2FnZSIsImRlbGV0ZVdlYmhvb2tXaXRoVG9rZW4iLCJlZGl0Q2hhbm5lbFBlcm1pc3Npb25PdmVycmlkZXMiLCJlZGl0Q2hhbm5lbFBvc2l0aW9ucyIsImNoYW5uZWxQb3NpdGlvbnMiLCJlZGl0T3duVm9pY2VTdGF0ZSIsImVkaXRVc2VyVm9pY2VTdGF0ZSIsImVkaXRVc2VyQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbiIsImRlbGV0ZUN1cnJlbnRVc2VyQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbiIsImpvaW5UaHJlYWQiLCJsZWF2ZUd1aWxkIiwibGVhdmVUaHJlYWQiLCJyZW1vdmVSb2xlIiwicmVtb3ZlVGhyZWFkTWVtYmVyIiwicmVtb3ZlRG1SZWNpcGllbnQiLCJzZW5kSW50ZXJhY3Rpb25SZXNwb25zZSIsImludGVyYWN0aW9uSWQiLCJwYXJhbXMiLCJyZXNwb25zZSIsImludGVyYWN0aW9uQ2FsbGJhY2tSZXNwb25zZSIsInRyaWdnZXJUeXBpbmdJbmRpY2F0b3IiLCJiYW5NZW1iZXIiLCJraWNrTWVtYmVyIiwicGluTWVzc2FnZSIsInVuYmFuTWVtYmVyIiwidW5waW5NZXNzYWdlIiwiZ2V0R3VpbGRPbmJvYXJkaW5nIiwiZ3VpbGRPbmJvYXJkaW5nIiwiZWRpdEd1aWxkT25ib2FyZGluZyIsIm1vZGlmeUd1aWxkSW5jaWRlbnRBY3Rpb25zIiwiaW5jaWRlbnRzRGF0YSIsImxpc3RFbnRpdGxlbWVudHMiLCJlbnRpdGxlbWVudCIsImdldEVudGl0bGVtZW50IiwiZW50aXRsZW1lbnRJZCIsImNyZWF0ZVRlc3RFbnRpdGxlbWVudCIsImRlbGV0ZVRlc3RFbnRpdGxlbWVudCIsImNvbnN1bWVFbnRpdGxlbWVudCIsImxpc3RTa3VzIiwic2t1IiwiZ2V0U3Vic2NyaXB0aW9uIiwic2t1SWQiLCJzdWJzY3JpcHRpb25JZCIsInN1YnNjcmlwdGlvbiIsImxpc3RTdWJzY3JpcHRpb25zIiwic2VuZFNvdW5kYm9hcmRTb3VuZCIsImxpc3REZWZhdWx0U291bmRib2FyZFNvdW5kcyIsInNvdW5kIiwic291bmRib2FyZFNvdW5kIiwibGlzdEd1aWxkU291bmRib2FyZFNvdW5kcyIsImdldEd1aWxkU291bmRib2FyZFNvdW5kIiwic291bmRJZCIsImNyZWF0ZUd1aWxkU291bmRib2FyZFNvdW5kIiwibW9kaWZ5R3VpbGRTb3VuZGJvYXJkU291bmQiLCJkZWxldGVHdWlsZFNvdW5kYm9hcmRTb3VuZCIsImRlbGV0ZUxvYmJ5IiwicmVtb3ZlTWVtYmVyRnJvbUxvYmJ5IiwibGVhdmVMb2JieSJdLCJtYXBwaW5ncyI6IkFBb0hBLFNBQVNBLFFBQVEsUUFBUSxvQkFBb0I7QUE2QzdDLE9BQU8sU0FBU0MsaUJBQ2RDLEdBQTJCO0lBRTNCLE9BQU87UUFDTEMsbUJBQW1CLE9BQU9DLFNBQVNDLFNBQVNDO1lBQzFDLE9BQU9KLElBQUlLLFlBQVksQ0FBQ0Msa0JBQWtCLENBQUNOLEtBQUssTUFBTUEsSUFBSU8sSUFBSSxDQUFDQyxLQUFLLENBQUNQLGlCQUFpQixDQUFDQyxTQUFTQyxTQUFTQztRQUMzRztRQUNBSyxlQUFlLE9BQU9Q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