tango-app-ui-store-ticket-infra 3.7.4 → 3.7.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,155 +1,16 @@
1
1
  import { Component, Input } from '@angular/core';
2
- import { Subject, takeUntil } from 'rxjs';
2
+ import { Subject, debounceTime, distinctUntilChanged, takeUntil } from 'rxjs';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "tango-app-ui-global";
5
- import * as i2 from "@angular/common";
6
- import * as i3 from "@angular/forms";
7
- import * as i4 from "tango-app-ui-shared";
5
+ import * as i2 from "../../services/tickets.service";
6
+ import * as i3 from "@angular/router";
7
+ import * as i4 from "@angular/common";
8
+ import * as i5 from "@angular/forms";
9
+ import * as i6 from "tango-app-ui-shared";
8
10
  // ===========================================================================
9
- // TEMPORARY MOCK DATA — design scaffolding only, no network calls are made.
10
- // Each constant is shaped like the response it stands in for, so a block can be
11
- // switched to live data on its own. Start with MOCK_TICKETS: infraV2List() is
12
- // already on tickets.service.ts and already scoped by storeIds.
11
+ // TEMPORARY MOCK DATA — the last block still to be replaced. The issue cards
12
+ // and the ticket list are live; only the picker's secondary reasons remain.
13
13
  // ===========================================================================
14
- /** /infra/v2/tickets/issues-distribution */
15
- const MOCK_ISSUE_CARDS = [
16
- { name: 'Internet Issues', count: 15 },
17
- { name: 'System Issues', count: 1 },
18
- { name: 'Camera Issues', count: 49 },
19
- { name: 'Application Issues', count: 0 },
20
- { name: 'Store Operation Issues', count: 2 },
21
- ];
22
- /** /infra/v2/tickets/list, with each parent's cycle children inlined. */
23
- const MOCK_TICKETS = [
24
- {
25
- ticketId: 'TE_INF_11-1220_20260907_ca451b',
26
- createdAt: '2026-09-07T12:05:00Z', issueClosedDate: '2026-09-07T20:35:00Z',
27
- status: 'closed', issueStatus: 'identified',
28
- primaryIssue: 'Camera Issues', secondaryIssue: 'shared power/cable failure',
29
- comments: 2,
30
- children: [
31
- {
32
- cycleId: 'cyc_11-1220_20260907_20_3d9d0c',
33
- streamsDown: 2,
34
- status: 'closed',
35
- expanded: true,
36
- entries: [
37
- { kind: 'raised', author: 'Tango', at: 'Sep 07, 2026 12:05 PM', text: 'We have not received data from your store. We are currently investigating the issue.' },
38
- {
39
- kind: 'analysis', author: 'Tango Watch', at: 'Sep 07, 2026 8:42 PM', text: '', escalated: true,
40
- rootCause: 'Both cameras offline — shared power/cable failure', issueCategory: 'Camera',
41
- analysis: {
42
- cause: "The camera stream b1321 (the store's video-recording stream) went silent while the rest of the app was healthy - video stopped at 19:35 IST and regular capture stopped at 21:00 IST, so no data uploaded during the 21:30-22:13 IST window. Trigger: a network-offline moment caused a video-upload failure (app log 2057), and the b1321 worker did not recover from it.",
43
- proof: "Tracker file for b1321: 68 files generated all pushed by 21:00 then no new files; video tracker last push 19:35. Peer streams kept generating and pushing through 22:00 IST (74-75 files each). The b1321 worker (PID 27224) is still running but has burned 5687s of CPU vs ~300s on peers - stuck in a loop, not doing work. App diary logs one 'Video File Upload Failed' event (log 2057) that aligns with the 19:35 stall.",
44
- fix: 'Remote-support restart the TangoEye Streamer app now to clear the stuck worker; queued files flush on restart. Engineering: video-upload path lacks retry resilience - one offline moment wedged the worker forever; peer image workers survived the same offline events.',
45
- notes: 'Separate co-existing FAIL: store WiFi flapping 51x today between STC-5G-0AFA (cloud-expected) and STC-5G-5BBE (log 1050); 38 offline events (log 2007) and 2 offline-side network changes (log 2050) - field-ops must fix the store WiFi router. Chronic: 22 Application Error 1000 crashes in 3 days on this PC (15 st-launch + 7 parent).',
46
- },
47
- showAnalysis: false,
48
- },
49
- { kind: 'raised', author: 'Tango', at: 'Sep 07, 2026 8:35 PM', text: 'Thank you for your assistance. We have received the data from your Store.' },
50
- ],
51
- },
52
- {
53
- cycleId: 'cyc_11-1220_20260907_12_8259da',
54
- streamsDown: 2,
55
- status: 'closed',
56
- expanded: false,
57
- entries: [
58
- { kind: 'raised', author: 'Tango', at: 'Sep 07, 2026 12:05 PM', text: 'We have not received data from your store. We are currently investigating the issue.' },
59
- {
60
- kind: 'analysis', author: 'Tango Watch', at: 'Sep 07, 2026 2:27 PM', text: '', escalated: true,
61
- rootCause: 'PC lost power during store hours', issueCategory: 'Operational',
62
- analysis: {
63
- cause: 'The recording PC lost mains power at 11:28 IST and stayed down until 12:03 IST, so both streams stopped together. No upload attempts were logged in the window, which rules out a network fault.',
64
- proof: 'Last heartbeat 11:27:46, next 12:03:11 - a clean 35 minute gap with no shutdown event beforehand, consistent with the socket being cut rather than a software stop. Both peer streams stopped in the same second.',
65
- fix: 'Store team to confirm the PC is on a protected socket. Engineering: no retry needed here, the app recovered on its own once power returned.',
66
- notes: 'Third power interruption at this store in 30 days, all during trading hours. Worth raising with field-ops rather than treating as an app issue.',
67
- },
68
- showAnalysis: false,
69
- },
70
- { kind: 'raised', author: 'Tango', at: 'Sep 07, 2026 3:20 PM', text: 'Thank you for your assistance. We have received the data from your Store.' },
71
- ],
72
- },
73
- ],
74
- },
75
- {
76
- ticketId: 'TE_INF_11-1220_20260906_bb2204',
77
- createdAt: '2026-09-06T09:15:00Z', issueClosedDate: '2026-09-06T09:50:00Z',
78
- status: 'closed', issueStatus: 'identified',
79
- primaryIssue: 'Internet Issues', secondaryIssue: 'ISP outage',
80
- comments: 1,
81
- children: [
82
- {
83
- cycleId: 'cyc_11-1220_20260906_09_7a11c4',
84
- streamsDown: 1,
85
- status: 'closed',
86
- expanded: true,
87
- entries: [
88
- { kind: 'raised', author: 'Tango', at: 'Sep 06, 2026 09:15 AM', text: 'We have not received data from your store. We are currently investigating the issue.' },
89
- {
90
- kind: 'analysis', author: 'Tango Watch', at: 'Sep 06, 2026 09:31 AM', text: '', escalated: true,
91
- rootCause: 'Store offline — ISP outage in the area', issueCategory: 'Network',
92
- analysis: {
93
- cause: 'The store lost its uplink at 09:15 IST. The app stayed healthy and kept generating files locally, but nothing could be pushed until the link returned at 09:48 IST.',
94
- proof: 'Four other stores on the same provider in this city reported the identical window. Local tracker files continued to increment throughout, and all queued files flushed within three minutes of the link returning.',
95
- fix: 'No action needed at the store - the backlog cleared on its own. Engineering: the offline queue behaved correctly here, no changes required.',
96
- notes: 'Provider-side outage, second one this quarter. If it recurs, worth asking the brand whether a failover connection is justified for this site.',
97
- },
98
- showAnalysis: false,
99
- },
100
- { kind: 'raised', author: 'Tango', at: 'Sep 06, 2026 09:50 AM', text: 'Thank you for your assistance. We have received the data from your Store.' },
101
- ],
102
- },
103
- ],
104
- },
105
- {
106
- ticketId: 'TE_INF_11-1220_20260922_66500b',
107
- createdAt: '2026-09-22T14:10:00Z', issueClosedDate: null,
108
- status: 'inprogress', issueStatus: 'identified',
109
- primaryIssue: 'Camera Issues', secondaryIssue: 'Camera angle changed',
110
- comments: 3,
111
- children: [
112
- {
113
- cycleId: 'cyc_11-1220_20260922_14_c48e21',
114
- streamsDown: 1,
115
- status: 'inprogress',
116
- expanded: true,
117
- entries: [
118
- { kind: 'raised', author: 'Tango', at: 'Sep 22, 2026 02:10 PM', text: 'We have not received data from your store. We are currently investigating the issue.' },
119
- {
120
- kind: 'analysis', author: 'Tango Watch', at: 'Sep 22, 2026 2:48 PM', text: '', escalated: true,
121
- rootCause: 'Camera 2 angle shifted away from the entrance', issueCategory: 'Camera',
122
- analysis: {
123
- cause: 'Camera 2 is still streaming, but the framing moved roughly 30 degrees left at 14:05 IST, so the entrance is out of shot and footfall counts have dropped to zero while the stream itself looks healthy.',
124
- proof: 'File counts are normal - 71 files in the last hour, in line with peers. The baseline image comparison fails from 14:05 onward, and the entrance mask no longer overlaps any tracked region.',
125
- fix: 'Store team to reseat the camera against the mounting mark and confirm against the baseline image. No app restart needed.',
126
- notes: 'Second angle change on this camera in six weeks. If it recurs, the bracket should be checked rather than the camera.',
127
- },
128
- showAnalysis: false,
129
- },
130
- ],
131
- },
132
- ],
133
- },
134
- {
135
- ticketId: 'TE_INF_11-1220_20260923_77812a',
136
- createdAt: '2026-09-23T07:45:00Z', issueClosedDate: null,
137
- status: 'open', issueStatus: 'notidentified',
138
- primaryIssue: '', secondaryIssue: '',
139
- comments: 0,
140
- children: [
141
- {
142
- cycleId: 'cyc_11-1220_20260923_07_5f20b8',
143
- streamsDown: 2,
144
- status: 'open',
145
- expanded: true,
146
- entries: [
147
- { kind: 'raised', author: 'Tango', at: 'Sep 23, 2026 07:45 AM', text: 'We have not received data from your store. We are currently investigating the issue.' },
148
- ],
149
- },
150
- ],
151
- },
152
- ];
153
14
  /** /infra/PrimaryReasons — the secondary reasons offered under each primary */
154
15
  const MOCK_SECONDARY_REASONS = {
155
16
  'Internet Issues': ['No internet connection', 'Intermittent connectivity', 'Low bandwidth'],
@@ -160,20 +21,42 @@ const MOCK_SECONDARY_REASONS = {
160
21
  };
161
22
  export class TicketInfraV2Component {
162
23
  gs;
24
+ ticketservice;
25
+ route;
163
26
  selectedTab;
164
27
  destroy$ = new Subject();
165
28
  headerFilter;
166
- ticketCard = MOCK_ISSUE_CARDS;
167
- ticketList = MOCK_TICKETS;
29
+ // Empty until the header filter arrives - the endpoint always returns every
30
+ // card, so nothing needs seeding here.
31
+ ticketCard = [];
32
+ ticketList = [];
168
33
  selectCard = 0;
169
- ticketInfo = MOCK_TICKETS[0];
34
+ ticketInfo = null;
35
+ // Both start true so the first paint is the shimmer rather than a page that
36
+ // looks like a store with no tickets. One flag per call, combined for the
37
+ // view: the cards and the list are a single block on screen.
38
+ cardsLoading = true;
39
+ listLoading = true;
40
+ get loading() { return this.cardsLoading || this.listLoading; }
41
+ // The detail pane reloads on its own when a card is clicked, so it shimmers
42
+ // separately - the left column must not flash on every selection.
43
+ detailLoading = false;
170
44
  // Issue identification, mirroring the V1 tab's flow.
171
45
  selectedIssue = '';
172
46
  secondaryIssues = [];
173
47
  hibernationDays = 0;
174
48
  comments = '';
175
- constructor(gs) {
49
+ /**
50
+ * Set when the summary page links straight to one ticket. Read from the route
51
+ * rather than taken as an @Input: the parent has no other use for it.
52
+ * Consumed on the first list load so a later filter change or a click on
53
+ * another card is not overridden by a stale query param.
54
+ */
55
+ requestedTicketId = '';
56
+ constructor(gs, ticketservice, route) {
176
57
  this.gs = gs;
58
+ this.ticketservice = ticketservice;
59
+ this.route = route;
177
60
  }
178
61
  // V1 also has a refreshticket branch here that omits the selectedIssue check,
179
62
  // which makes the picker and the chosen-issue block render together. There is
@@ -187,17 +70,130 @@ export class TicketInfraV2Component {
187
70
  }
188
71
  get showIssuePicker() { return this.canIdentify && this.selectedIssue === ''; }
189
72
  get showIssueDetail() { return this.canIdentify && this.selectedIssue !== ''; }
73
+ /**
74
+ * The cycle the store can still answer on: the newest child that is not
75
+ * closed. Children arrive newest first, so the first match is the live one.
76
+ * This replaces a positional "last child" test, which took the oldest cycle
77
+ * and so put the picker inside a closed one.
78
+ */
79
+ get identifyChild() {
80
+ return (this.ticketInfo?.children ?? []).find((c) => c.status !== 'closed') ?? null;
81
+ }
82
+ isIdentifyChild(child) {
83
+ return !!this.identifyChild && child === this.identifyChild;
84
+ }
85
+ // The header pushes several values while the page initialises, and arriving
86
+ // from the fleet table adds one more - that component calls
87
+ // dataRangeValue.next() just before navigating here. Without this guard every
88
+ // one of them refetched the cards, the list and the top card's detail. Same
89
+ // shape as the fleet Infra V2 tab, keyed on the scope this page actually uses.
190
90
  ngOnInit() {
191
- this.gs.dataRangeValue.pipe(takeUntil(this.destroy$)).subscribe((data) => {
91
+ this.requestedTicketId = this.route.snapshot.queryParams['ticketId'] || '';
92
+ this.gs.dataRangeValue.pipe(debounceTime(150), distinctUntilChanged((a, b) => JSON.stringify({ s: a?.store, c: a?.client, d: a?.date }) ===
93
+ JSON.stringify({ s: b?.store, c: b?.client, d: b?.date })), takeUntil(this.destroy$)).subscribe((data) => {
192
94
  if (data) {
193
95
  this.headerFilter = data;
96
+ const body = this.scopeBody();
97
+ if (body) {
98
+ this.getIssueCards(body);
99
+ this.getTicketList(body);
100
+ }
194
101
  }
195
102
  });
196
103
  }
104
+ // Both endpoints take the same store + date scope. Null when the header has
105
+ // not resolved a store yet, which is the case on the first emission.
106
+ scopeBody() {
107
+ const storeId = this.headerFilter?.store;
108
+ const clientId = this.headerFilter?.client;
109
+ // Nothing to fetch, so nothing to wait for - without this the page would
110
+ // shimmer for a header that never resolves a store.
111
+ if (!storeId || !clientId) {
112
+ this.cardsLoading = false;
113
+ this.listLoading = false;
114
+ return null;
115
+ }
116
+ return {
117
+ clientId: [clientId],
118
+ storeId: storeId,
119
+ fromDate: this.headerFilter?.date?.startDate,
120
+ toDate: this.headerFilter?.date?.endDate,
121
+ };
122
+ }
123
+ // The endpoint always answers with all five cards, so a failure is the only
124
+ // case that needs clearing - otherwise the previous store's numbers would sit
125
+ // under the new store's name.
126
+ getIssueCards(body) {
127
+ this.cardsLoading = true;
128
+ this.ticketservice.infraV2StoreIssueCards(body).pipe(takeUntil(this.destroy$)).subscribe({
129
+ // Cleared on failure too, or one bad response leaves the page shimmering.
130
+ next: (res) => {
131
+ this.ticketCard = res?.code === 200 ? (res?.data?.cards ?? []) : [];
132
+ this.cardsLoading = false;
133
+ },
134
+ error: () => { this.ticketCard = []; this.cardsLoading = false; },
135
+ });
136
+ }
137
+ getTicketList(body) {
138
+ this.listLoading = true;
139
+ this.ticketservice.infraV2StoreTicketList(body).pipe(takeUntil(this.destroy$)).subscribe({
140
+ next: (res) => {
141
+ this.setTickets(res?.code === 200 ? (res?.data?.tickets ?? []) : []);
142
+ this.listLoading = false;
143
+ },
144
+ error: () => { this.setTickets([]); this.listLoading = false; },
145
+ });
146
+ }
147
+ // List rows carry no children, so the first one is opened through the same
148
+ // path a click takes - one place that knows how to fetch a ticket.
149
+ setTickets(tickets) {
150
+ this.ticketList = tickets;
151
+ this.ticketInfo = null;
152
+ // A linked ticket opens instead of the newest, once. It falls back to the
153
+ // newest when the id is not in the list - a stale link, or a range that no
154
+ // longer contains it.
155
+ const linked = this.requestedTicketId
156
+ ? this.ticketList.findIndex((t) => t.ticketId === this.requestedTicketId)
157
+ : -1;
158
+ this.requestedTicketId = '';
159
+ if (this.ticketList.length) {
160
+ this.showTicket(linked >= 0 ? linked : 0);
161
+ }
162
+ else {
163
+ this.choosenIssue('');
164
+ }
165
+ }
197
166
  showTicket(index) {
198
167
  this.selectCard = index;
199
- this.ticketInfo = this.ticketList[index] ?? null;
200
168
  this.choosenIssue('');
169
+ const row = this.ticketList[index];
170
+ const body = this.scopeBody();
171
+ if (!row || !body) {
172
+ this.ticketInfo = null;
173
+ return;
174
+ }
175
+ this.detailLoading = true;
176
+ this.ticketservice.infraV2StoreTicketDetail({ ...body, ticketId: row.ticketId })
177
+ .pipe(takeUntil(this.destroy$)).subscribe({
178
+ next: (res) => {
179
+ const ticket = res?.code === 200 ? res?.data?.ticket : null;
180
+ this.ticketInfo = ticket ? this.withViewState(ticket) : null;
181
+ this.detailLoading = false;
182
+ },
183
+ error: () => { this.ticketInfo = null; this.detailLoading = false; },
184
+ });
185
+ }
186
+ // `expanded` and `showAnalysis` are view state the API does not send, so they
187
+ // are seeded here. The newest cycle opens by default; the rest stay collapsed.
188
+ withViewState(ticket) {
189
+ return {
190
+ ...ticket,
191
+ children: (ticket.children ?? []).map((child, i) => ({
192
+ ...child,
193
+ expanded: i === 0,
194
+ entries: (child.entries ?? []).map((entry) => ({ ...entry, showAnalysis: false })),
195
+ })),
196
+ };
201
197
  }
202
198
  // Rows open independently, so several can be expanded at once.
203
199
  toggleChild(child) { child.expanded = !child.expanded; }
@@ -206,10 +202,24 @@ export class TicketInfraV2Component {
206
202
  isTangoAuthor(author) {
207
203
  return author.toLowerCase().startsWith('tango');
208
204
  }
209
- /** Root cause identified on the most recent child - children run newest first. */
205
+ // The enum spells no_action with an underscore and stores Unreachable
206
+ // capitalised; only the display normalises them. Same treatment as the
207
+ // Agent Status columns on the tickets and summary tables.
208
+ agentLabel(entry) {
209
+ const raw = String(entry?.agentStatus ?? '').replace(/_/g, ' ');
210
+ return raw ? raw.charAt(0).toUpperCase() + raw.slice(1) : '';
211
+ }
212
+ // Amber keeps escalated looking like the alert it is; everything else is
213
+ // neutral, so the pill reports without shouting.
214
+ agentPillClass(entry) {
215
+ return entry?.escalated ? 'escalated-pill' : 'status-pill';
216
+ }
217
+ /**
218
+ * Root cause identified on the most recent child. Read straight off the row -
219
+ * the list no longer carries the timelines to dig through.
220
+ */
210
221
  recentRootCause(t) {
211
- const entries = t.children[0]?.entries ?? [];
212
- return entries.find((e) => e.kind === 'analysis' && !!e.rootCause)?.rootCause ?? '';
222
+ return t.rootCause ?? '';
213
223
  }
214
224
  // Wording is status-driven rather than stored text, matching the V1 tab. A
215
225
  // closed ticket shows what was actually found, falling back to the generic
@@ -218,7 +228,10 @@ export class TicketInfraV2Component {
218
228
  if (t.status === 'closed') {
219
229
  return this.recentRootCause(t) || 'Thank you for your assistance. We have received the data from your Store.';
220
230
  }
221
- if (t.issueStatus === 'notidentified') {
231
+ // issueStatus flips to 'identified' before the reasons are written, so the
232
+ // fields themselves decide whether there is anything to name. Without this
233
+ // the card reads "Store is currently encountering a which is ."
234
+ if (t.issueStatus === 'notidentified' || !t.primaryIssue || !t.secondaryIssue) {
222
235
  return 'We have not received data from your store. We are currently investigating the issue.';
223
236
  }
224
237
  return '';
@@ -260,8 +273,8 @@ export class TicketInfraV2Component {
260
273
  t.primaryIssue = this.selectedIssue;
261
274
  t.secondaryIssue = reasons.join(', ');
262
275
  t.comments = t.comments + 1;
263
- // The identification lands on the child the picker was shown under.
264
- const child = t.children[t.children.length - 1];
276
+ // The same child the form was shown under - the live one, not the oldest.
277
+ const child = this.identifyChild;
265
278
  if (child) {
266
279
  const parts = [`Issue identified as ${this.selectedIssue} - ${t.secondaryIssue}.`];
267
280
  if (this.hibernationDays > 0) {
@@ -278,13 +291,13 @@ export class TicketInfraV2Component {
278
291
  this.destroy$.next(true);
279
292
  this.destroy$.complete();
280
293
  }
281
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TicketInfraV2Component, deps: [{ token: i1.GlobalStateService }], target: i0.ɵɵFactoryTarget.Component });
282
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TicketInfraV2Component, selector: "lib-ticket-infra-v2", inputs: { selectedTab: "selectedTab" }, ngImport: i0, template: "<div class=\"card\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Infra Tickets v2</span>\r\n <span *ngIf=\"headerFilter?.date?.startDate === headerFilter?.date?.endDate\" class=\"text-sub mb-2\">An overview of all the tickets for till {{ headerFilter?.date?.endDate | customDateFormat }}</span>\r\n <span *ngIf=\"headerFilter?.date?.startDate !== headerFilter?.date?.endDate\" class=\"text-sub mb-2\">An overview of all the tickets for {{ headerFilter?.date?.startDate | customDateFormat }} - {{ headerFilter?.date?.endDate | customDateFormat }}</span>\r\n </h3>\r\n <!-- Filter and Export render inert: lib-filters needs real facets, and\r\n there is nothing to export while the data is mocked. -->\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M2.5 5H17.5M5 10H15M8.33333 15H11.6667\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2\">Filter</span>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2\">Export</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-body\">\r\n <div class=\"d-flex justify-content-between mb-7\">\r\n <div *ngFor=\"let issue of ticketCard\" class=\"issuecard\">\r\n <div><span class=\"title\">{{ issue.count }}</span></div>\r\n <span class=\"label fw-semibold\">{{ issue.name }}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"maincard-content\">\r\n <div class=\"row p-10\">\r\n\r\n <!-- Left: unchanged from the Tickets tab. -->\r\n <div class=\"col-sm-6 cursor-pointer\">\r\n <div *ngFor=\"let data of ticketList; let index = index\" class=\"issuecard w-100 mb-4\"\r\n (click)=\"showTicket(index)\" [ngClass]=\"selectCard === index ? 'active' : ''\">\r\n\r\n <div class=\"maincard-label fw-bold d-flex justify-content-between mb-5\">\r\n <span><img src=\"./assets/tango/Images/ticket.svg\"> {{ data.ticketId }}</span>\r\n <div class=\"contenttext d-flex justify-content-center align-items-center text-center fw-semibold px-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M10.6667 1.33398V4.00065M5.33333 1.33398V4.00065M2 6.66732H14M3.33333 2.66732H12.6667C13.403 2.66732 14 3.26427 14 4.00065V13.334C14 14.0704 13.403 14.6673 12.6667 14.6673H3.33333C2.59695 14.6673 2 14.0704 2 13.334V4.00065C2 3.26427 2.59695 2.66732 3.33333 2.66732Z\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"mx-1\">{{ data.createdAt | date: 'dd-MM-yyyy' }}</span>\r\n <span *ngIf=\"data.issueClosedDate\" class=\"contenttext fw-semibold pe-3\">- {{ data.issueClosedDate | date: 'dd-MM-yyyy' }}</span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"cardMessage(data)\" class=\"mb-5 contenttext fw-semibold\">{{ cardMessage(data) }}</div>\r\n <div *ngIf=\"!cardMessage(data)\" class=\"mb-5 contenttext fw-semibold\">\r\n Store is currently encountering a <span class=\"fw-bold-700\">{{ data.primaryIssue }}</span> which is\r\n <span class=\"fw-bold-700\">{{ data.secondaryIssue }}.</span>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-between\">\r\n <div class=\"profile d-flex align-items-centre justify-content-centre\">\r\n <img src=\"./assets/tango/Images/userProfile.svg\" alt=\"\">\r\n </div>\r\n <div class=\"d-flex justify-content-between\">\r\n <span class=\"contenttext fw-semibold px-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M14 10C14 10.3536 13.8595 10.6928 13.6095 10.9428C13.3594 11.1929 13.0203 11.3333 12.6667 11.3333H4.66667L2 14V3.33333C2 2.97971 2.14048 2.64057 2.39052 2.39052C2.64057 2.14048 2.97971 2 3.33333 2H12.6667C13.0203 2 13.3594 2.14048 13.6095 2.39052C13.8595 2.64057 14 2.97971 14 3.33333V10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"mx-1\">{{ data.comments }}</span> comments\r\n </span>\r\n <span [ngClass]=\"statusBadge(data.status)\">{{ data.status | titlecase }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Right: the selected parent, with its cycle children as an accordion -->\r\n <div *ngIf=\"ticketInfo\" class=\"col-sm-6\">\r\n <div class=\"maincard-label fw-bold d-flex justify-content-between align-items-center mb-5\">\r\n <span><img src=\"./assets/tango/Images/ticket.svg\"><span class=\"mx-2\">{{ ticketInfo.ticketId }}</span></span>\r\n </div>\r\n\r\n <!-- Cycle children. Rows open independently. -->\r\n <div *ngFor=\"let child of ticketInfo.children; let lastChild = last\" class=\"child-row mb-4\">\r\n <div class=\"child-head d-flex justify-content-between align-items-center cursor-pointer px-4 py-3\" (click)=\"toggleChild(child)\">\r\n <div class=\"d-flex align-items-center flex-wrap\">\r\n <span class=\"chevron me-3\" [class.open]=\"child.expanded\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\r\n <path d=\"M5 2.5L9.5 7L5 11.5\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span class=\"meta-pill cycle-id timingtext fw-semibold me-3\">{{ child.cycleId }}</span>\r\n <span class=\"streams-pill timingtext me-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 24 20\" fill=\"none\">\r\n <path d=\"M23 17C23 17.5304 22.7893 18.0391 22.4142 18.4142C22.0391 18.7893 21.5304 19 21 19H3C2.46957 19 1.96086 18.7893 1.58579 18.4142C1.21071 18.0391 1 17.5304 1 17V6C1 5.46957 1.21071 4.96086 1.58579 4.58579C1.96086 4.21071 2.46957 4 3 4H7L9 1H15L17 4H21C21.5304 4 22.0391 4.21071 22.4142 4.58579C22.7893 4.96086 23 5.46957 23 6V17Z\"\r\n stroke=\"#F04438\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"fw-bold mx-1\">{{ child.streamsDown }}</span> streams down\r\n </span>\r\n </div>\r\n <span [ngClass]=\"statusBadge(child.status)\" class=\"flex-shrink-0\">{{ child.status | titlecase }}</span>\r\n </div>\r\n\r\n <div *ngIf=\"child.expanded\" class=\"child-body px-5 py-5\">\r\n <div class=\"inner-card px-5 py-5\">\r\n <div *ngFor=\"let entry of child.entries; let last = last; let first = first\" class=\"d-flex\" [class.pt-5]=\"!first\">\r\n <div class=\"d-flex flex-column align-items-center me-4\">\r\n <span class=\"avatar\">\r\n <img *ngIf=\"isTangoAuthor(entry.author); else personIcon\" class=\"avatar-logo\" src=\"./assets/tango/Images/tangoEye-mark.svg\" alt=\"Tango\">\r\n <ng-template #personIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M13.3327 14V12.6667C13.3327 11.9594 13.0517 11.2811 12.5516 10.781C12.0515 10.281 11.3733 10 10.666 10H5.33268C4.62544 10 3.94716 10.281 3.44706 10.781C2.94697 11.2811 2.66602 11.9594 2.66602 12.6667V14M10.666 4.66667C10.666 6.13943 9.47211 7.33333 7.99935 7.33333C6.52659 7.33333 5.33268 6.13943 5.33268 4.66667C5.33268 3.19391 6.52659 2 7.99935 2C9.47211 2 10.666 3.19391 10.666 4.66667Z\"\r\n stroke=\"#009BF3\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </ng-template>\r\n </span>\r\n <div *ngIf=\"!last\" class=\"connector\"></div>\r\n </div>\r\n\r\n <div class=\"w-100 pb-2\">\r\n <div class=\"d-flex align-items-center flex-wrap\">\r\n <span class=\"maincard-label fw-bold\">{{ entry.author }}</span>\r\n <span *ngIf=\"entry.at\" class=\"timingtext mx-3\">{{ entry.at }}</span>\r\n <span *ngIf=\"entry.escalated\" class=\"escalated-pill timingtext fw-semibold ms-auto\"><span class=\"dot dot-amber me-2\"></span>ESCALATED</span>\r\n </div>\r\n\r\n <div *ngIf=\"entry.text\" class=\"contenttext fw-semibold mt-2\">{{ entry.text }}</div>\r\n\r\n <!-- Analysis entry: label/value pairs, then the expander -->\r\n <ng-container *ngIf=\"entry.kind === 'analysis'\">\r\n <div class=\"d-flex mt-3\">\r\n <span class=\"meta-label timingtext fw-semibold\">ISSUE CATEGORY</span>\r\n <span class=\"meta-value contenttext fw-semibold\">{{ entry.issueCategory }}</span>\r\n </div>\r\n <div class=\"d-flex mt-2\">\r\n <span class=\"meta-label timingtext fw-semibold\">ROOT CAUSE</span>\r\n <span class=\"meta-value contenttext fw-semibold\">{{ entry.rootCause }}</span>\r\n </div>\r\n <div class=\"analysis-link contenttext fw-semibold cursor-pointer mt-4\" (click)=\"toggleAnalysis(entry)\">\r\n <span class=\"chevron-down me-2\" [class.open]=\"entry.showAnalysis\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 14 14\" fill=\"none\">\r\n <path d=\"M3 5L7 9.5L11 5\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n {{ entry.showAnalysis ? 'Hide the full analysis' : 'Show the full analysis' }}\r\n </div>\r\n <div *ngIf=\"entry.showAnalysis && entry.analysis\" class=\"mt-3\">\r\n <div class=\"analysis-row d-flex mb-4\">\r\n <span class=\"dot analysis-dot me-3\"></span>\r\n <div class=\"timingtext fw-semibold\">\r\n <span class=\"analysis-label timingtext fw-semibold me-3\">CAUSE</span>{{ entry.analysis.cause }}\r\n </div>\r\n </div>\r\n <div class=\"analysis-row d-flex mb-4\">\r\n <span class=\"dot analysis-dot me-3\"></span>\r\n <div class=\"timingtext fw-semibold\">\r\n <span class=\"analysis-label timingtext fw-semibold me-3\">PROOF</span>{{ entry.analysis.proof }}\r\n </div>\r\n </div>\r\n <div class=\"analysis-row d-flex mb-4\">\r\n <span class=\"dot analysis-dot me-3\"></span>\r\n <div class=\"timingtext fw-semibold\">\r\n <span class=\"analysis-label timingtext fw-semibold me-3\">FIX</span>{{ entry.analysis.fix }}\r\n </div>\r\n </div>\r\n <div class=\"analysis-row d-flex\">\r\n <span class=\"dot analysis-dot me-3\"></span>\r\n <div class=\"timingtext fw-semibold\">\r\n <span class=\"analysis-label timingtext fw-semibold me-3\">NOTES</span>{{ entry.analysis.notes }}\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Issue identification, inside the child panel. Icons are copied\r\n from the V1 tab so the two tabs render identically. Only the\r\n last child carries it, so it appears once per parent. -->\r\n <div *ngIf=\"showIssuePicker && lastChild\" class=\"investigation fw-semibold mt-5\">\r\n Kindly choose the option below that corresponds to the issue you are\r\n experiencing in the store.\r\n <ul class=\"list-unstyled px-4\">\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('Internet Issues')\">\r\n <ng-container *ngTemplateOutlet=\"internetIcon\"></ng-container> <span class=\"px-3\">Internet Issues</span>\r\n </li>\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('Camera Issues')\">\r\n <ng-container *ngTemplateOutlet=\"cameraIcon\"></ng-container> <span class=\"px-3\">Camera Issues</span>\r\n </li>\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('System Issues')\">\r\n <ng-container *ngTemplateOutlet=\"systemIcon\"></ng-container> <span class=\"px-3\">System Issues</span>\r\n </li>\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('Store Operation Issues')\">\r\n <ng-container *ngTemplateOutlet=\"storeIcon\"></ng-container> <span class=\"px-3\">Store Operation Issues</span>\r\n </li>\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('Application Issues')\">\r\n <ng-container *ngTemplateOutlet=\"appIcon\"></ng-container> <span class=\"px-3\">Application Issues</span>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n <div *ngIf=\"showIssueDetail && lastChild\" class=\"mt-5\">\r\n <div class=\"openedissue d-flex justify-content-between align-items-center\">\r\n <span class=\"profile-label fw-semibold\">\r\n <ng-container *ngIf=\"selectedIssue === 'Internet Issues'\" [ngTemplateOutlet]=\"internetIcon\"></ng-container>\r\n <ng-container *ngIf=\"selectedIssue === 'Camera Issues'\" [ngTemplateOutlet]=\"cameraIcon\"></ng-container>\r\n <ng-container *ngIf=\"selectedIssue === 'System Issues'\" [ngTemplateOutlet]=\"systemIcon\"></ng-container>\r\n <ng-container *ngIf=\"selectedIssue === 'Store Operation Issues'\" [ngTemplateOutlet]=\"storeIcon\"></ng-container>\r\n <ng-container *ngIf=\"selectedIssue === 'Application Issues'\" [ngTemplateOutlet]=\"appIcon\"></ng-container>\r\n <span class=\"ms-2\">{{ selectedIssue }}</span>\r\n </span>\r\n <div (click)=\"choosenIssue('')\" class=\"maincard-content bg-white px-3 py-2 cursor-pointer\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\r\n <path d=\"M12.8327 6.99935H1.16602M1.16602 6.99935L6.99935 12.8327M1.16602 6.99935L6.99935 1.16602\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n\r\n <div class=\"maincard-content w-100 mt-2 px-4 py-2 pb-4\">\r\n <div class=\"maincard-label fw-semibold py-2\">Please select the relevant problem facing from the following</div>\r\n <div *ngFor=\"let issue of secondaryIssues; let index = index\"\r\n class=\"maincard-content d-flex justify-content-between align-items-center w-100 mt-2 px-4 py-4 cursor-pointer\"\r\n (click)=\"toggleCheckbox(index)\">\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <span><img class=\"pe-3\" src=\"./assets/tango/Images/Featured icon.png\"></span>\r\n <span class=\"headingtext\">{{ issue.name }}</span>\r\n </div>\r\n <div class=\"roundedcheck d-flex align-items-center\">\r\n <input type=\"checkbox\" [checked]=\"issue.checked\" class=\"p-0\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Hibernation + comment row, copied from the V1 tab\r\n (ticket-infra.component.html:333) so both read the same. -->\r\n <div class=\"form-group pt-6\">\r\n <label for=\"hibernationV2\" class=\"maincard-label fw-semibold mb-2\">Hibernation (in days) *</label>\r\n <div class=\"w-250px position-relative\">\r\n <div class=\"position-absolute translate-middle-y top-50 me-5 ps-3 ticketDays\">\r\n <span class=\"svg-icon toggle-off svg-icon-1\" [ngClass]=\"hibernationDays === 0 ? 'pe-none' : ''\" (click)=\"decreaseHibernation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M4.66602 10H16.3327\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n <input type=\"text\" class=\"form-control\" id=\"hibernationV2\" style=\"text-align: center;\"\r\n [value]=\"hibernationDays\" placeholder=\"0\" readonly />\r\n <div class=\"position-absolute translate-middle-y top-50 end-0 me-3\">\r\n <span class=\"svg-icon toggle-on svg-icon-1 ticketDays\" (click)=\"increaseHibernation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M10.4993 4.1665V15.8332M4.66602 9.99984H16.3327\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- The paperclip is inert: V1 posts to uploadAttachments/, and there\r\n is nowhere to upload to while the data is mocked. -->\r\n <div class=\"d-flex justify-content-between align-items-center mt-10 mb-5\">\r\n <input class=\"form-control\" type=\"text\" [(ngModel)]=\"comments\" placeholder=\"Add your comments..\">\r\n <button type=\"button\" class=\"cursor-pointer btn btn-default btn-outline ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M17.8666 9.20835L10.2082 16.8667C9.27005 17.8049 7.99757 18.332 6.67075 18.332C5.34393 18.332 4.07145 17.8049 3.13325 16.8667C2.19505 15.9285 1.66797 14.656 1.66797 13.3292C1.66797 12.0024 2.19505 10.7299 3.13325 9.79168L10.7916 2.13335C11.4171 1.50788 12.2654 1.15649 13.1499 1.15649C14.0345 1.15649 14.8828 1.50788 15.5082 2.13335C16.1337 2.75882 16.4851 3.60713 16.4851 4.49168C16.4851 5.37623 16.1337 6.22455 15.5082 6.85002L7.84158 14.5083C7.52885 14.8211 7.10469 14.9968 6.66242 14.9968C6.22014 14.9968 5.79598 14.8211 5.48325 14.5083C5.17051 14.1956 4.99482 13.7715 4.99482 13.3292C4.99482 12.8869 5.17051 12.4627 5.48325 12.15L12.5582 5.08335\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-primary ms-3\" [disabled]=\"!canSubmitIssue\" (click)=\"submitIssue()\">Submit</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- Option icons, defined once because each is used twice: in the option list\r\n and again in the chosen-issue bar. Paths are copied verbatim from\r\n ticket-infra.component.html so the two tabs match pixel for pixel. -->\r\n<ng-template #internetIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M21 12C21 7.0293 16.9707 3 12 3C7.0293 3 3 7.0293 3 12C3 16.9707 7.0293 21 12 21\" fill=\"white\" />\r\n <path d=\"M12.9 3.04504C12.9 3.04504 15.6 6.60004 15.6 12L12.9 3.04504ZM11.1 20.955C11.1 20.955 8.4 17.4 8.4 12C8.4 6.60004 11.1 3.04504 11.1 3.04504M3.567 15.15H12H3.567ZM3.567 8.85004H20.433H3.567Z\" fill=\"white\" />\r\n <path d=\"M20.8911 17.3252C21.3357 17.5988 21.3078 18.2639 20.8506 18.3161L18.5403 18.578L17.5044 20.6588C17.2992 21.0719 16.6647 20.8694 16.5594 20.3582L15.4299 14.8538C15.3408 14.4218 15.7296 14.15 16.1049 14.3813L20.8911 17.3252Z\" fill=\"white\" />\r\n <path d=\"M20.25 12C20.25 12.4142 20.5858 12.75 21 12.75C21.4142 12.75 21.75 12.4142 21.75 12H20.25ZM12 21.75C12.4142 21.75 12.75 21.4142 12.75 21C12.75 20.5858 12.4142 20.25 12 20.25V21.75ZM13.4973 2.59142C13.2467 2.26156 12.7762 2.19725 12.4464 2.44778C12.1165 2.6983 12.0522 3.1688 12.3027 3.49866L13.4973 2.59142ZM14.85 12C14.85 12.4143 15.1858 12.75 15.6 12.75C16.0142 12.75 16.35 12.4143 16.35 12H14.85ZM10.5027 21.4087C10.7533 21.7385 11.2238 21.8028 11.5536 21.5523C11.8835 21.3018 11.9478 20.8313 11.6973 20.5014L10.5027 21.4087ZM11.6973 3.49866C11.9478 3.1688 11.8835 2.6983 11.5536 2.44778C11.2238 2.19725 10.7533 2.26156 10.5027 2.59142L11.6973 3.49866ZM3.567 14.4C3.15279 14.4 2.817 14.7358 2.817 15.15C2.817 15.5643 3.15279 15.9 3.567 15.9V14.4ZM12 15.9C12.4142 15.9 12.75 15.5643 12.75 15.15C12.75 14.7358 12.4142 14.4 12 14.4V15.9ZM3.567 8.10004C3.15279 8.10004 2.817 8.43583 2.817 8.85004C2.817 9.26426 3.15279 9.60004 3.567 9.60004V8.10004ZM20.433 9.60004C20.8472 9.60004 21.183 9.26426 21.183 8.85004C21.183 8.43583 20.8472 8.10004 20.433 8.10004V9.60004ZM20.8911 17.3252L21.2842 16.6865L21.284 16.6864L20.8911 17.3252ZM20.8506 18.3161L20.9351 19.0613L20.9357 19.0613L20.8506 18.3161ZM18.5403 18.578L18.4558 17.8328L18.0506 17.8787L17.8689 18.2438L18.5403 18.578ZM17.5044 20.6588L16.833 20.3246L16.8327 20.3252L17.5044 20.6588ZM16.5594 20.3582L15.8247 20.509L15.8248 20.5095L16.5594 20.3582ZM15.4299 14.8538L16.1646 14.703L16.1644 14.7023L15.4299 14.8538ZM16.1049 14.3813L15.7114 15.0198L15.712 15.0201L16.1049 14.3813ZM21.75 12C21.75 6.61509 17.3849 2.25 12 2.25V3.75C16.5565 3.75 20.25 7.44351 20.25 12H21.75ZM12 2.25C6.61509 2.25 2.25 6.61509 2.25 12H3.75C3.75 7.44351 7.44351 3.75 12 3.75V2.25ZM2.25 12C2.25 17.3849 6.61509 21.75 12 21.75V20.25C7.44351 20.25 3.75 16.5565 3.75 12H2.25ZM12.9 3.04504C12.3027 3.49866 12.3026 3.49846 12.3024 3.49828C12.3024 3.49823 12.3023 3.49806 12.3022 3.49797C12.3021 3.49779 12.302 3.49767 12.3019 3.4976C12.3018 3.49746 12.3019 3.49753 12.3021 3.49781C12.3025 3.49838 12.3036 3.4998 12.3053 3.50206C12.3086 3.50658 12.3144 3.51447 12.3225 3.52567C12.3387 3.54809 12.3641 3.58375 12.3973 3.63226C12.4638 3.72929 12.5616 3.87752 12.6805 4.07361C12.9183 4.46606 13.2393 5.04863 13.5614 5.79478C14.2061 7.28837 14.85 9.42526 14.85 12H16.35C16.35 9.17483 15.6439 6.83422 14.9386 5.20031C14.5857 4.38271 14.2317 3.73902 13.9633 3.29616C13.829 3.0746 13.7159 2.90291 13.6347 2.78443C13.5941 2.72518 13.5615 2.6792 13.5381 2.6469C13.5265 2.63075 13.5171 2.61802 13.5102 2.60876C13.5068 2.60413 13.504 2.60036 13.5018 2.59747C13.5007 2.59602 13.4998 2.5948 13.4991 2.59379C13.4987 2.59329 13.4983 2.59284 13.498 2.59244C13.4979 2.59224 13.4977 2.59199 13.4976 2.59189C13.4974 2.59165 13.4973 2.59142 12.9 3.04504ZM11.1 20.955C11.6973 20.5014 11.6974 20.5016 11.6976 20.5018C11.6976 20.5019 11.6977 20.502 11.6978 20.5021C11.6979 20.5023 11.698 20.5024 11.6981 20.5025C11.6982 20.5026 11.6981 20.5026 11.6979 20.5023C11.6975 20.5017 11.6964 20.5003 11.6948 20.498C11.6914 20.4935 11.6856 20.4856 11.6775 20.4744C11.6613 20.452 11.6359 20.4163 11.6027 20.3678C11.5362 20.2708 11.4384 20.1226 11.3195 19.9265C11.0817 19.534 10.7607 18.9515 10.4386 18.2053C9.79388 16.7117 9.15 14.5748 9.15 12H7.65C7.65 14.8253 8.35613 17.1659 9.06142 18.7998C9.41434 19.6174 9.76833 20.2611 10.0367 20.7039C10.171 20.9255 10.2841 21.0972 10.3653 21.2157C10.4059 21.2749 10.4385 21.3209 10.4619 21.3532C10.4735 21.3693 10.4829 21.3821 10.4898 21.3913C10.4932 21.396 10.496 21.3997 10.4982 21.4026C10.4993 21.4041 10.5002 21.4053 10.5009 21.4063C10.5013 21.4068 10.5017 21.4073 10.502 21.4076C10.5021 21.4078 10.5023 21.4081 10.5024 21.4082C10.5026 21.4084 10.5027 21.4087 11.1 20.955ZM9.15 12C9.15 9.42526 9.79388 7.28837 10.4386 5.79478C10.7607 5.04863 11.0817 4.46606 11.3195 4.07361C11.4384 3.87752 11.5362 3.72929 11.6027 3.63226C11.6359 3.58375 11.6613 3.54809 11.6775 3.52567C11.6856 3.51447 11.6914 3.50658 11.6948 3.50206C11.6964 3.4998 11.6975 3.49838 11.6979 3.49781C11.6981 3.49753 11.6982 3.49746 11.6981 3.4976C11.698 3.49767 11.6979 3.49779 11.6978 3.49797C11.6977 3.49806 11.6976 3.49823 11.6976 3.49828C11.6974 3.49846 11.6973 3.49866 11.1 3.04504C10.5027 2.59142 10.5026 2.59165 10.5024 2.59189C10.5023 2.59199 10.5021 2.59224 10.502 2.59244C10.5017 2.59284 10.5013 2.59329 10.5009 2.59379C10.5002 2.5948 10.4993 2.59602 10.4982 2.59747C10.496 2.60036 10.4932 2.60413 10.4898 2.60876C10.4829 2.61802 10.4735 2.63075 10.4619 2.6469C10.4385 2.6792 10.4059 2.72518 10.3653 2.78443C10.2841 2.90291 10.171 3.0746 10.0367 3.29616C9.76833 3.73902 9.41434 4.38271 9.06142 5.20031C8.35613 6.83422 7.65 9.17483 7.65 12H9.15ZM3.567 15.9H12V14.4H3.567V15.9ZM3.567 9.60004H20.433V8.10004H3.567V9.60004ZM20.498 17.9639C20.4792 17.9524 20.4575 17.9252 20.4597 17.8727C20.4609 17.8434 20.4715 17.7772 20.5297 17.7054C20.5961 17.6235 20.6889 17.5797 20.7655 17.5709L20.9357 19.0613C21.6167 18.9835 21.9384 18.4179 21.9584 17.9346C21.9776 17.4682 21.7476 16.9717 21.2842 16.6865L20.498 17.9639ZM20.7661 17.5709L18.4558 17.8328L18.6248 19.3232L20.9351 19.0613L20.7661 17.5709ZM17.8689 18.2438L16.833 20.3246L18.1758 20.9931L19.2117 18.9123L17.8689 18.2438ZM16.8327 20.3252C16.8668 20.2565 16.9395 20.1839 17.0398 20.1492C17.1277 20.1188 17.194 20.1316 17.2221 20.1405C17.272 20.1564 17.2896 20.1857 17.294 20.2069L15.8248 20.5095C15.9345 21.0419 16.322 21.4281 16.7668 21.5697C17.2286 21.7168 17.8707 21.6073 18.1761 20.9925L16.8327 20.3252ZM17.2941 20.2074L16.1646 14.703L14.6952 15.0046L15.8247 20.509L17.2941 20.2074ZM16.1644 14.7023C16.1723 14.7406 16.1666 14.883 16.0232 14.9833C15.88 15.0835 15.7446 15.0402 15.7114 15.0198L16.4984 13.7428C16.0899 13.4911 15.5724 13.468 15.1633 13.7543C14.754 14.0407 14.5984 14.535 14.6954 15.0053L16.1644 14.7023ZM15.712 15.0201L20.4982 17.964L21.284 16.6864L16.4978 13.7425L15.712 15.0201Z\" fill=\"#475467\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #cameraIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"20\" viewBox=\"0 0 24 20\" fill=\"none\">\r\n <path d=\"M23 17C23 17.5304 22.7893 18.0391 22.4142 18.4142C22.0391 18.7893 21.5304 19 21 19H3C2.46957 19 1.96086 18.7893 1.58579 18.4142C1.21071 18.0391 1 17.5304 1 17V6C1 5.46957 1.21071 4.96086 1.58579 4.58579C1.96086 4.21071 2.46957 4 3 4H7L9 1H15L17 4H21C21.5304 4 22.0391 4.21071 22.4142 4.58579C22.7893 4.96086 23 5.46957 23 6V17Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M12 15C14.2091 15 16 13.2091 16 11C16 8.79086 14.2091 7 12 7C9.79086 7 8 8.79086 8 11C8 13.2091 9.79086 15 12 15Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #systemIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"14\" viewBox=\"0 0 20 14\" fill=\"none\">\r\n <path d=\"M12 2V9H2V2H12ZM2 0C0.896875 0 0 0.896875 0 2V9C0 10.1031 0.896875 11 2 11H5.66563L5.33125 12H3C2.44688 12 2 12.4469 2 13C2 13.5531 2.44688 14 3 14H11C11.5531 14 12 13.5531 12 13C12 12.4469 11.5531 12 11 12H8.66562L8.33125 11H12C13.1031 11 14 10.1031 14 9V2C14 0.896875 13.1031 0 12 0H2ZM16.5 0C15.6719 0 15 0.671875 15 1.5V12.5C15 13.3281 15.6719 14 16.5 14H18.5C19.3281 14 20 13.3281 20 12.5V1.5C20 0.671875 19.3281 0 18.5 0H16.5ZM17 2H18C18.275 2 18.5 2.225 18.5 2.5C18.5 2.775 18.275 3 18 3H17C16.725 3 16.5 2.775 16.5 2.5C16.5 2.225 16.725 2 17 2ZM16.5 4.5C16.5 4.225 16.725 4 17 4H18C18.275 4 18.5 4.225 18.5 4.5C18.5 4.775 18.275 5 18 5H17C16.725 5 16.5 4.775 16.5 4.5ZM17.5 9.5C17.7652 9.5 18.0196 9.60536 18.2071 9.79289C18.3946 9.98043 18.5 10.2348 18.5 10.5C18.5 10.7652 18.3946 11.0196 18.2071 11.2071C18.0196 11.3946 17.7652 11.5 17.5 11.5C17.2348 11.5 16.9804 11.3946 16.7929 11.2071C16.6054 11.0196 16.5 10.7652 16.5 10.5C16.5 10.2348 16.6054 9.98043 16.7929 9.79289C16.9804 9.60536 17.2348 9.5 17.5 9.5Z\"\r\n fill=\"#475467\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #storeIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M3.08995 6.88369L3.02401 6.98669C2.30358 8.25557 3.06101 9.87945 4.46464 10.0662C4.58627 10.0811 4.70112 10.0892 4.8145 10.0892C5.55255 10.0892 6.20523 9.77229 6.65953 9.27917L7.21286 8.67854L7.76432 9.28089C8.21367 9.77171 8.8652 10.0892 9.60776 10.0892C10.3471 10.0892 11.0022 9.77137 11.4512 9.28089L12.0044 8.67665L12.5576 9.28089C13.0066 9.77137 13.6617 10.0892 14.401 10.0892C15.1404 10.0892 15.7954 9.77137 16.2445 9.28089L16.7977 8.67665L17.3508 9.28089C17.7999 9.77137 18.4549 10.0892 19.1943 10.0892C19.3041 10.0892 19.4223 10.0811 19.5433 10.0663C20.9772 9.87168 21.7355 8.16387 20.9155 6.88419C20.9154 6.88413 20.9154 6.88407 20.9154 6.88402L18.8056 3.59429L18.8056 3.59429L18.8046 3.59282C18.7582 3.52002 18.6649 3.46423 18.5584 3.46423H5.44307C5.3365 3.46423 5.24326 3.52002 5.19681 3.59282L5.19619 3.59379L3.08995 6.88369ZM4.81818 12.7499C4.71644 12.7499 4.616 12.7468 4.5169 12.741V16.6428V18.9642C4.5169 19.8211 5.22663 20.5357 6.11942 20.5357H17.882C18.7748 20.5357 19.4845 19.8211 19.4845 18.9642V16.6428V12.7415C19.3874 12.747 19.2893 12.7499 19.1906 12.7499C19.0022 12.7499 18.8157 12.7398 18.632 12.7202V16.6428V17.3928H17.882H6.11942H5.36942V16.6428V12.721C5.18866 12.74 5.00472 12.7499 4.81818 12.7499Z\"\r\n stroke=\"#475467\" stroke-width=\"1.5\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #appIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M8 1H1V8H8V1Z\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M19 1H12V8H19V1Z\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M19 12H12V19H19V12Z\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M8 12H1V19H8V12Z\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n", styles: [".card-label{font-size:18px!important}.issuecard{width:19%;border-radius:10px;border:1px solid var(--Gray-200, #EAECF0);padding:16px}.issuecard label,.issuecard .label{color:var(--Black, #101828);font-size:14px;line-height:20px}.issuecard.active{border:none!important;background:var(--Primary-25, #F6FCFF);box-shadow:0 0 0 4px #e9f7ff}.contenttext{color:var(--Gray-500, #667085);font-size:14px;line-height:20px}.maincard-content{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD)}.maincard-label{color:var(--Gray-900, #101828);font-size:16px;line-height:24px}.profile{width:24px;height:24px;overflow:hidden;border-radius:200px}.profile-label{font-size:12px;color:var(--Gray-500, #344054);line-height:16px}.timingtext{color:var(--Gray-500, #667085);font-size:12px;line-height:18px}.fw-bold-700{font-weight:700!important}.child-row{border-radius:10px;border:1px solid var(--Gray-200, #EAECF0);overflow:hidden}.child-head{background:#fff;gap:8px}.chevron{display:inline-flex;transition:transform .15s ease-in-out}.chevron.open{transform:rotate(90deg)}.chevron-down{display:inline-flex;transition:transform .15s ease-in-out}.chevron-down.open{transform:rotate(180deg)}.streams-pill{display:inline-flex;align-items:center;border-radius:16px;border:1px solid var(--Gray-200, #EAECF0);padding:2px 10px;white-space:nowrap}.meta-pill{display:inline-flex;align-items:center;white-space:nowrap}.cycle-id{color:var(--Black, #101828)}.dot{display:inline-block;width:6px;height:6px;border-radius:50%}.dot-amber{background:#f79009}.child-body{background:var(--Gray-50, #F9FAFB)}.inner-card{border-radius:10px;border:1px solid var(--Gray-200, #EAECF0);background:#fff}.escalated-pill{display:inline-flex;align-items:center;border-radius:16px;background:#fffaeb;color:#b54708;font-size:10px;line-height:16px;padding:0 8px}.escalated-pill .dot{width:5px;height:5px}.avatar{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:var(--Primary-25, #F6FCFF);flex-shrink:0;overflow:hidden}.avatar-logo{width:18px;height:18px;object-fit:contain}.connector{width:0;height:100%;margin-top:6px;border-left:1px solid var(--Gray-200, #EAECF0)}.meta-label{width:130px;flex-shrink:0}.meta-value{color:var(--Gray-900, #101828)}.analysis-link{color:var(--Primary-700, #009BF3)}.ticketDays{cursor:pointer}.analysis-row .analysis-dot{margin-top:7px;flex-shrink:0;background:var(--Gray-400, #98A2B3)}.analysis-row .analysis-label{letter-spacing:.04em;color:var(--Black, #101828);background:var(--Gray-100, #F2F4F7);border-radius:4px;padding:1px 6px;white-space:nowrap}.investigation{color:var(--Gray-500, #344054);font-size:15px;line-height:24px}.openedissue{border-radius:6px;background:var(--Gray-50, #F9FAFB);padding:8px 12px}.headingtext{color:var(--Gray-700, #344054)!important;font-size:15px!important;font-weight:500;line-height:20px}.roundedcheck input[type=checkbox]{width:16px!important;height:16px!important;border-radius:10px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;border:1px solid var(--Gray-300, #D0D5DD);background:#fff;cursor:pointer}.roundedcheck input[type=checkbox]:checked{border-color:var(--Primary-700, #009BF3);background:var(--Primary-700, #009BF3);background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' d='M2.5 6.3l2.4 2.4 4.6-5'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:center}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i2.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i2.DatePipe, name: "date" }, { kind: "pipe", type: i4.CustomDateFormatPipe, name: "customDateFormat" }] });
294
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TicketInfraV2Component, deps: [{ token: i1.GlobalStateService }, { token: i2.TicketsService }, { token: i3.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
295
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TicketInfraV2Component, selector: "lib-ticket-infra-v2", inputs: { selectedTab: "selectedTab" }, ngImport: i0, template: "<div class=\"card\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Infra Tickets v2</span>\r\n <span *ngIf=\"headerFilter?.date?.startDate === headerFilter?.date?.endDate\" class=\"text-sub mb-2\">An overview of all the tickets for till {{ headerFilter?.date?.endDate | customDateFormat }}</span>\r\n <span *ngIf=\"headerFilter?.date?.startDate !== headerFilter?.date?.endDate\" class=\"text-sub mb-2\">An overview of all the tickets for {{ headerFilter?.date?.startDate | customDateFormat }} - {{ headerFilter?.date?.endDate | customDateFormat }}</span>\r\n </h3>\r\n <!-- Filter and Export render inert: lib-filters needs real facets, and\r\n there is nothing to export while the data is mocked. -->\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M2.5 5H17.5M5 10H15M8.33333 15H11.6667\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2\">Filter</span>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2\">Export</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-body\">\r\n <!-- Shimmer while either call is in flight. The styles are the shell's\r\n (styles.scss `.loader`), so the .loader > .shimmer > .wrapper > .stroke\r\n nesting has to stay as it is here. -->\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!loading\">\r\n <div class=\"d-flex justify-content-between gap-3 mb-7\">\r\n <div *ngFor=\"let issue of ticketCard\" class=\"issuecard\">\r\n <div><span class=\"title\">{{ issue.count }}</span></div>\r\n <span class=\"label fw-semibold\">{{ issue.name }}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"maincard-content\">\r\n <div class=\"row p-10\">\r\n\r\n <!-- Left: unchanged from the Tickets tab. -->\r\n <div class=\"col-sm-6 cursor-pointer\">\r\n <div *ngFor=\"let data of ticketList; let index = index\" class=\"issuecard w-100 mb-4\"\r\n (click)=\"showTicket(index)\" [ngClass]=\"selectCard === index ? 'active' : ''\">\r\n\r\n <div class=\"maincard-label fw-bold d-flex justify-content-between mb-5\">\r\n <span><img src=\"./assets/tango/Images/ticket.svg\"> {{ data.ticketId }}</span>\r\n <div class=\"contenttext d-flex justify-content-center align-items-center text-center fw-semibold px-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M10.6667 1.33398V4.00065M5.33333 1.33398V4.00065M2 6.66732H14M3.33333 2.66732H12.6667C13.403 2.66732 14 3.26427 14 4.00065V13.334C14 14.0704 13.403 14.6673 12.6667 14.6673H3.33333C2.59695 14.6673 2 14.0704 2 13.334V4.00065C2 3.26427 2.59695 2.66732 3.33333 2.66732Z\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"mx-1\">{{ data.createdAt | date: 'dd-MM-yyyy' }}</span>\r\n <span *ngIf=\"data.issueClosedDate\" class=\"contenttext fw-semibold pe-3\">- {{ data.issueClosedDate | date: 'dd-MM-yyyy' }}</span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"cardMessage(data)\" class=\"mb-5 contenttext fw-semibold\">{{ cardMessage(data) }}</div>\r\n <div *ngIf=\"!cardMessage(data)\" class=\"mb-5 contenttext fw-semibold\">\r\n Store is currently encountering a <span class=\"fw-bold-700\">{{ data.primaryIssue }}</span> which is\r\n <span class=\"fw-bold-700\">{{ data.secondaryIssue }}.</span>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-between\">\r\n <div class=\"profile d-flex align-items-centre justify-content-centre\">\r\n <img src=\"./assets/tango/Images/userProfile.svg\" alt=\"\">\r\n </div>\r\n <div class=\"d-flex justify-content-between\">\r\n <span class=\"contenttext fw-semibold px-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M14 10C14 10.3536 13.8595 10.6928 13.6095 10.9428C13.3594 11.1929 13.0203 11.3333 12.6667 11.3333H4.66667L2 14V3.33333C2 2.97971 2.14048 2.64057 2.39052 2.39052C2.64057 2.14048 2.97971 2 3.33333 2H12.6667C13.0203 2 13.3594 2.14048 13.6095 2.39052C13.8595 2.64057 14 2.97971 14 3.33333V10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"mx-1\">{{ data.comments }}</span> comments\r\n </span>\r\n <span [ngClass]=\"statusBadge(data.status)\">{{ data.status | titlecase }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Right: the selected parent, with its cycle children as an accordion -->\r\n <!-- Only this column reloads when a card is clicked, so it\r\n shimmers on its own rather than blanking the whole tab. -->\r\n <div *ngIf=\"detailLoading\" class=\"col-sm-6\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"!detailLoading && ticketInfo\" class=\"col-sm-6\">\r\n <div class=\"maincard-label fw-bold d-flex justify-content-between align-items-center mb-5\">\r\n <span><img src=\"./assets/tango/Images/ticket.svg\"><span class=\"mx-2\">{{ ticketInfo.ticketId }}</span></span>\r\n </div>\r\n\r\n <!-- Cycle children. Rows open independently. -->\r\n <div *ngFor=\"let child of ticketInfo.children\" class=\"child-row mb-4\">\r\n <div class=\"child-head d-flex justify-content-between align-items-center cursor-pointer px-4 py-3\" (click)=\"toggleChild(child)\">\r\n <div class=\"d-flex align-items-center flex-wrap\">\r\n <span class=\"chevron me-3\" [class.open]=\"child.expanded\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\r\n <path d=\"M5 2.5L9.5 7L5 11.5\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span class=\"meta-pill cycle-id timingtext fw-semibold me-3\">{{ child.cycleId }}</span>\r\n <span class=\"streams-pill timingtext me-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 24 20\" fill=\"none\">\r\n <path d=\"M23 17C23 17.5304 22.7893 18.0391 22.4142 18.4142C22.0391 18.7893 21.5304 19 21 19H3C2.46957 19 1.96086 18.7893 1.58579 18.4142C1.21071 18.0391 1 17.5304 1 17V6C1 5.46957 1.21071 4.96086 1.58579 4.58579C1.96086 4.21071 2.46957 4 3 4H7L9 1H15L17 4H21C21.5304 4 22.0391 4.21071 22.4142 4.58579C22.7893 4.96086 23 5.46957 23 6V17Z\"\r\n stroke=\"#F04438\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"fw-bold mx-1\">{{ child.streamsDown }}</span> streams down\r\n </span>\r\n </div>\r\n <span [ngClass]=\"statusBadge(child.status)\" class=\"flex-shrink-0\">{{ child.status | titlecase }}</span>\r\n </div>\r\n\r\n <div *ngIf=\"child.expanded\" class=\"child-body px-5 py-5\">\r\n <div class=\"inner-card px-5 py-5\">\r\n <div *ngFor=\"let entry of child.entries; let last = last; let first = first\" class=\"d-flex\" [class.pt-5]=\"!first\">\r\n <div class=\"d-flex flex-column align-items-center me-4\">\r\n <span class=\"avatar\">\r\n <img *ngIf=\"isTangoAuthor(entry.author); else personIcon\" class=\"avatar-logo\" src=\"./assets/tango/Images/tangoEye-mark.svg\" alt=\"Tango\">\r\n <ng-template #personIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M13.3327 14V12.6667C13.3327 11.9594 13.0517 11.2811 12.5516 10.781C12.0515 10.281 11.3733 10 10.666 10H5.33268C4.62544 10 3.94716 10.281 3.44706 10.781C2.94697 11.2811 2.66602 11.9594 2.66602 12.6667V14M10.666 4.66667C10.666 6.13943 9.47211 7.33333 7.99935 7.33333C6.52659 7.33333 5.33268 6.13943 5.33268 4.66667C5.33268 3.19391 6.52659 2 7.99935 2C9.47211 2 10.666 3.19391 10.666 4.66667Z\"\r\n stroke=\"#009BF3\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </ng-template>\r\n </span>\r\n <div *ngIf=\"!last\" class=\"connector\"></div>\r\n </div>\r\n\r\n <div class=\"w-100 pb-2\">\r\n <div class=\"d-flex align-items-center flex-wrap\">\r\n <span class=\"maincard-label fw-bold\">{{ entry.author }}</span>\r\n <span *ngIf=\"entry.at\" class=\"timingtext mx-3\">{{ entry.at }}</span>\r\n <!-- The agent's verdict, whatever it is - not only escalated.\r\n Absent when the agent never reported. -->\r\n <span *ngIf=\"entry.agentStatus\" [ngClass]=\"agentPillClass(entry)\"\r\n class=\"timingtext fw-semibold ms-auto text-uppercase\"><span class=\"dot me-2\"\r\n [class.dot-amber]=\"entry.escalated\"\r\n [class.dot-grey]=\"!entry.escalated\"></span>{{ agentLabel(entry) }}</span>\r\n </div>\r\n\r\n <div *ngIf=\"entry.text\" class=\"contenttext fw-semibold mt-2\">{{ entry.text }}</div>\r\n\r\n <!-- Analysis entry: label/value pairs, then the expander -->\r\n <ng-container *ngIf=\"entry.kind === 'analysis'\">\r\n <div class=\"d-flex mt-3\">\r\n <span class=\"meta-label timingtext fw-semibold\">ISSUE CATEGORY</span>\r\n <span class=\"meta-value contenttext fw-semibold\">{{ entry.issueCategory }}</span>\r\n </div>\r\n <div class=\"d-flex mt-2\">\r\n <span class=\"meta-label timingtext fw-semibold\">ROOT CAUSE</span>\r\n <span class=\"meta-value contenttext fw-semibold\">{{ entry.rootCause }}</span>\r\n </div>\r\n <div class=\"analysis-link contenttext fw-semibold cursor-pointer mt-4\" (click)=\"toggleAnalysis(entry)\">\r\n <span class=\"chevron-down me-2\" [class.open]=\"entry.showAnalysis\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 14 14\" fill=\"none\">\r\n <path d=\"M3 5L7 9.5L11 5\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n {{ entry.showAnalysis ? 'Hide the full analysis' : 'Show the full analysis' }}\r\n </div>\r\n <div *ngIf=\"entry.showAnalysis && entry.analysis\" class=\"mt-3\">\r\n <div class=\"analysis-row d-flex mb-4\">\r\n <span class=\"dot analysis-dot me-3\"></span>\r\n <div class=\"timingtext fw-semibold\">\r\n <span class=\"analysis-label timingtext fw-semibold me-3\">CAUSE</span>{{ entry.analysis.cause }}\r\n </div>\r\n </div>\r\n <div class=\"analysis-row d-flex mb-4\">\r\n <span class=\"dot analysis-dot me-3\"></span>\r\n <div class=\"timingtext fw-semibold\">\r\n <span class=\"analysis-label timingtext fw-semibold me-3\">PROOF</span>{{ entry.analysis.proof }}\r\n </div>\r\n </div>\r\n <div class=\"analysis-row d-flex mb-4\">\r\n <span class=\"dot analysis-dot me-3\"></span>\r\n <div class=\"timingtext fw-semibold\">\r\n <span class=\"analysis-label timingtext fw-semibold me-3\">FIX</span>{{ entry.analysis.fix }}\r\n </div>\r\n </div>\r\n <div class=\"analysis-row d-flex\">\r\n <span class=\"dot analysis-dot me-3\"></span>\r\n <div class=\"timingtext fw-semibold\">\r\n <span class=\"analysis-label timingtext fw-semibold me-3\">NOTES</span>{{ entry.analysis.notes }}\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Issue identification, inside the child panel. Icons are copied\r\n from the V1 tab so the two tabs render identically. Only the\r\n live cycle carries it - a closed one has nothing to answer -\r\n so it still appears at most once per parent. -->\r\n <div *ngIf=\"showIssuePicker && isIdentifyChild(child)\" class=\"investigation fw-semibold mt-5\">\r\n Kindly choose the option below that corresponds to the issue you are\r\n experiencing in the store.\r\n <ul class=\"list-unstyled px-4\">\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('Internet Issues')\">\r\n <ng-container *ngTemplateOutlet=\"internetIcon\"></ng-container> <span class=\"px-3\">Internet Issues</span>\r\n </li>\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('Camera Issues')\">\r\n <ng-container *ngTemplateOutlet=\"cameraIcon\"></ng-container> <span class=\"px-3\">Camera Issues</span>\r\n </li>\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('System Issues')\">\r\n <ng-container *ngTemplateOutlet=\"systemIcon\"></ng-container> <span class=\"px-3\">System Issues</span>\r\n </li>\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('Store Operation Issues')\">\r\n <ng-container *ngTemplateOutlet=\"storeIcon\"></ng-container> <span class=\"px-3\">Store Operation Issues</span>\r\n </li>\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('Application Issues')\">\r\n <ng-container *ngTemplateOutlet=\"appIcon\"></ng-container> <span class=\"px-3\">Application Issues</span>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n <div *ngIf=\"showIssueDetail && isIdentifyChild(child)\" class=\"mt-5\">\r\n <div class=\"openedissue d-flex justify-content-between align-items-center\">\r\n <span class=\"profile-label fw-semibold\">\r\n <ng-container *ngIf=\"selectedIssue === 'Internet Issues'\" [ngTemplateOutlet]=\"internetIcon\"></ng-container>\r\n <ng-container *ngIf=\"selectedIssue === 'Camera Issues'\" [ngTemplateOutlet]=\"cameraIcon\"></ng-container>\r\n <ng-container *ngIf=\"selectedIssue === 'System Issues'\" [ngTemplateOutlet]=\"systemIcon\"></ng-container>\r\n <ng-container *ngIf=\"selectedIssue === 'Store Operation Issues'\" [ngTemplateOutlet]=\"storeIcon\"></ng-container>\r\n <ng-container *ngIf=\"selectedIssue === 'Application Issues'\" [ngTemplateOutlet]=\"appIcon\"></ng-container>\r\n <span class=\"ms-2\">{{ selectedIssue }}</span>\r\n </span>\r\n <div (click)=\"choosenIssue('')\" class=\"maincard-content bg-white px-3 py-2 cursor-pointer\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\r\n <path d=\"M12.8327 6.99935H1.16602M1.16602 6.99935L6.99935 12.8327M1.16602 6.99935L6.99935 1.16602\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n\r\n <div class=\"maincard-content w-100 mt-2 px-4 py-2 pb-4\">\r\n <div class=\"maincard-label fw-semibold py-2\">Please select the relevant problem facing from the following</div>\r\n <div *ngFor=\"let issue of secondaryIssues; let index = index\"\r\n class=\"maincard-content d-flex justify-content-between align-items-center w-100 mt-2 px-4 py-4 cursor-pointer\"\r\n (click)=\"toggleCheckbox(index)\">\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <span><img class=\"pe-3\" src=\"./assets/tango/Images/Featured icon.png\"></span>\r\n <span class=\"headingtext\">{{ issue.name }}</span>\r\n </div>\r\n <div class=\"roundedcheck d-flex align-items-center\">\r\n <input type=\"checkbox\" [checked]=\"issue.checked\" class=\"p-0\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Hibernation + comment row, copied from the V1 tab\r\n (ticket-infra.component.html:333) so both read the same. -->\r\n <div class=\"form-group pt-6\">\r\n <label for=\"hibernationV2\" class=\"maincard-label fw-semibold mb-2\">Hibernation (in days) *</label>\r\n <div class=\"w-250px position-relative\">\r\n <div class=\"position-absolute translate-middle-y top-50 me-5 ps-3 ticketDays\">\r\n <span class=\"svg-icon toggle-off svg-icon-1\" [ngClass]=\"hibernationDays === 0 ? 'pe-none' : ''\" (click)=\"decreaseHibernation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M4.66602 10H16.3327\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n <input type=\"text\" class=\"form-control\" id=\"hibernationV2\" style=\"text-align: center;\"\r\n [value]=\"hibernationDays\" placeholder=\"0\" readonly />\r\n <div class=\"position-absolute translate-middle-y top-50 end-0 me-3\">\r\n <span class=\"svg-icon toggle-on svg-icon-1 ticketDays\" (click)=\"increaseHibernation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M10.4993 4.1665V15.8332M4.66602 9.99984H16.3327\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- The paperclip is inert: V1 posts to uploadAttachments/, and there\r\n is nowhere to upload to while the data is mocked. -->\r\n <div class=\"d-flex justify-content-between align-items-center mt-10 mb-5\">\r\n <input class=\"form-control\" type=\"text\" [(ngModel)]=\"comments\" placeholder=\"Add your comments..\">\r\n <button type=\"button\" class=\"cursor-pointer btn btn-default btn-outline ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M17.8666 9.20835L10.2082 16.8667C9.27005 17.8049 7.99757 18.332 6.67075 18.332C5.34393 18.332 4.07145 17.8049 3.13325 16.8667C2.19505 15.9285 1.66797 14.656 1.66797 13.3292C1.66797 12.0024 2.19505 10.7299 3.13325 9.79168L10.7916 2.13335C11.4171 1.50788 12.2654 1.15649 13.1499 1.15649C14.0345 1.15649 14.8828 1.50788 15.5082 2.13335C16.1337 2.75882 16.4851 3.60713 16.4851 4.49168C16.4851 5.37623 16.1337 6.22455 15.5082 6.85002L7.84158 14.5083C7.52885 14.8211 7.10469 14.9968 6.66242 14.9968C6.22014 14.9968 5.79598 14.8211 5.48325 14.5083C5.17051 14.1956 4.99482 13.7715 4.99482 13.3292C4.99482 12.8869 5.17051 12.4627 5.48325 12.15L12.5582 5.08335\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-primary ms-3\" [disabled]=\"!canSubmitIssue\" (click)=\"submitIssue()\">Submit</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<!-- Option icons, defined once because each is used twice: in the option list\r\n and again in the chosen-issue bar. Paths are copied verbatim from\r\n ticket-infra.component.html so the two tabs match pixel for pixel. -->\r\n<ng-template #internetIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M21 12C21 7.0293 16.9707 3 12 3C7.0293 3 3 7.0293 3 12C3 16.9707 7.0293 21 12 21\" fill=\"white\" />\r\n <path d=\"M12.9 3.04504C12.9 3.04504 15.6 6.60004 15.6 12L12.9 3.04504ZM11.1 20.955C11.1 20.955 8.4 17.4 8.4 12C8.4 6.60004 11.1 3.04504 11.1 3.04504M3.567 15.15H12H3.567ZM3.567 8.85004H20.433H3.567Z\" fill=\"white\" />\r\n <path d=\"M20.8911 17.3252C21.3357 17.5988 21.3078 18.2639 20.8506 18.3161L18.5403 18.578L17.5044 20.6588C17.2992 21.0719 16.6647 20.8694 16.5594 20.3582L15.4299 14.8538C15.3408 14.4218 15.7296 14.15 16.1049 14.3813L20.8911 17.3252Z\" fill=\"white\" />\r\n <path d=\"M20.25 12C20.25 12.4142 20.5858 12.75 21 12.75C21.4142 12.75 21.75 12.4142 21.75 12H20.25ZM12 21.75C12.4142 21.75 12.75 21.4142 12.75 21C12.75 20.5858 12.4142 20.25 12 20.25V21.75ZM13.4973 2.59142C13.2467 2.26156 12.7762 2.19725 12.4464 2.44778C12.1165 2.6983 12.0522 3.1688 12.3027 3.49866L13.4973 2.59142ZM14.85 12C14.85 12.4143 15.1858 12.75 15.6 12.75C16.0142 12.75 16.35 12.4143 16.35 12H14.85ZM10.5027 21.4087C10.7533 21.7385 11.2238 21.8028 11.5536 21.5523C11.8835 21.3018 11.9478 20.8313 11.6973 20.5014L10.5027 21.4087ZM11.6973 3.49866C11.9478 3.1688 11.8835 2.6983 11.5536 2.44778C11.2238 2.19725 10.7533 2.26156 10.5027 2.59142L11.6973 3.49866ZM3.567 14.4C3.15279 14.4 2.817 14.7358 2.817 15.15C2.817 15.5643 3.15279 15.9 3.567 15.9V14.4ZM12 15.9C12.4142 15.9 12.75 15.5643 12.75 15.15C12.75 14.7358 12.4142 14.4 12 14.4V15.9ZM3.567 8.10004C3.15279 8.10004 2.817 8.43583 2.817 8.85004C2.817 9.26426 3.15279 9.60004 3.567 9.60004V8.10004ZM20.433 9.60004C20.8472 9.60004 21.183 9.26426 21.183 8.85004C21.183 8.43583 20.8472 8.10004 20.433 8.10004V9.60004ZM20.8911 17.3252L21.2842 16.6865L21.284 16.6864L20.8911 17.3252ZM20.8506 18.3161L20.9351 19.0613L20.9357 19.0613L20.8506 18.3161ZM18.5403 18.578L18.4558 17.8328L18.0506 17.8787L17.8689 18.2438L18.5403 18.578ZM17.5044 20.6588L16.833 20.3246L16.8327 20.3252L17.5044 20.6588ZM16.5594 20.3582L15.8247 20.509L15.8248 20.5095L16.5594 20.3582ZM15.4299 14.8538L16.1646 14.703L16.1644 14.7023L15.4299 14.8538ZM16.1049 14.3813L15.7114 15.0198L15.712 15.0201L16.1049 14.3813ZM21.75 12C21.75 6.61509 17.3849 2.25 12 2.25V3.75C16.5565 3.75 20.25 7.44351 20.25 12H21.75ZM12 2.25C6.61509 2.25 2.25 6.61509 2.25 12H3.75C3.75 7.44351 7.44351 3.75 12 3.75V2.25ZM2.25 12C2.25 17.3849 6.61509 21.75 12 21.75V20.25C7.44351 20.25 3.75 16.5565 3.75 12H2.25ZM12.9 3.04504C12.3027 3.49866 12.3026 3.49846 12.3024 3.49828C12.3024 3.49823 12.3023 3.49806 12.3022 3.49797C12.3021 3.49779 12.302 3.49767 12.3019 3.4976C12.3018 3.49746 12.3019 3.49753 12.3021 3.49781C12.3025 3.49838 12.3036 3.4998 12.3053 3.50206C12.3086 3.50658 12.3144 3.51447 12.3225 3.52567C12.3387 3.54809 12.3641 3.58375 12.3973 3.63226C12.4638 3.72929 12.5616 3.87752 12.6805 4.07361C12.9183 4.46606 13.2393 5.04863 13.5614 5.79478C14.2061 7.28837 14.85 9.42526 14.85 12H16.35C16.35 9.17483 15.6439 6.83422 14.9386 5.20031C14.5857 4.38271 14.2317 3.73902 13.9633 3.29616C13.829 3.0746 13.7159 2.90291 13.6347 2.78443C13.5941 2.72518 13.5615 2.6792 13.5381 2.6469C13.5265 2.63075 13.5171 2.61802 13.5102 2.60876C13.5068 2.60413 13.504 2.60036 13.5018 2.59747C13.5007 2.59602 13.4998 2.5948 13.4991 2.59379C13.4987 2.59329 13.4983 2.59284 13.498 2.59244C13.4979 2.59224 13.4977 2.59199 13.4976 2.59189C13.4974 2.59165 13.4973 2.59142 12.9 3.04504ZM11.1 20.955C11.6973 20.5014 11.6974 20.5016 11.6976 20.5018C11.6976 20.5019 11.6977 20.502 11.6978 20.5021C11.6979 20.5023 11.698 20.5024 11.6981 20.5025C11.6982 20.5026 11.6981 20.5026 11.6979 20.5023C11.6975 20.5017 11.6964 20.5003 11.6948 20.498C11.6914 20.4935 11.6856 20.4856 11.6775 20.4744C11.6613 20.452 11.6359 20.4163 11.6027 20.3678C11.5362 20.2708 11.4384 20.1226 11.3195 19.9265C11.0817 19.534 10.7607 18.9515 10.4386 18.2053C9.79388 16.7117 9.15 14.5748 9.15 12H7.65C7.65 14.8253 8.35613 17.1659 9.06142 18.7998C9.41434 19.6174 9.76833 20.2611 10.0367 20.7039C10.171 20.9255 10.2841 21.0972 10.3653 21.2157C10.4059 21.2749 10.4385 21.3209 10.4619 21.3532C10.4735 21.3693 10.4829 21.3821 10.4898 21.3913C10.4932 21.396 10.496 21.3997 10.4982 21.4026C10.4993 21.4041 10.5002 21.4053 10.5009 21.4063C10.5013 21.4068 10.5017 21.4073 10.502 21.4076C10.5021 21.4078 10.5023 21.4081 10.5024 21.4082C10.5026 21.4084 10.5027 21.4087 11.1 20.955ZM9.15 12C9.15 9.42526 9.79388 7.28837 10.4386 5.79478C10.7607 5.04863 11.0817 4.46606 11.3195 4.07361C11.4384 3.87752 11.5362 3.72929 11.6027 3.63226C11.6359 3.58375 11.6613 3.54809 11.6775 3.52567C11.6856 3.51447 11.6914 3.50658 11.6948 3.50206C11.6964 3.4998 11.6975 3.49838 11.6979 3.49781C11.6981 3.49753 11.6982 3.49746 11.6981 3.4976C11.698 3.49767 11.6979 3.49779 11.6978 3.49797C11.6977 3.49806 11.6976 3.49823 11.6976 3.49828C11.6974 3.49846 11.6973 3.49866 11.1 3.04504C10.5027 2.59142 10.5026 2.59165 10.5024 2.59189C10.5023 2.59199 10.5021 2.59224 10.502 2.59244C10.5017 2.59284 10.5013 2.59329 10.5009 2.59379C10.5002 2.5948 10.4993 2.59602 10.4982 2.59747C10.496 2.60036 10.4932 2.60413 10.4898 2.60876C10.4829 2.61802 10.4735 2.63075 10.4619 2.6469C10.4385 2.6792 10.4059 2.72518 10.3653 2.78443C10.2841 2.90291 10.171 3.0746 10.0367 3.29616C9.76833 3.73902 9.41434 4.38271 9.06142 5.20031C8.35613 6.83422 7.65 9.17483 7.65 12H9.15ZM3.567 15.9H12V14.4H3.567V15.9ZM3.567 9.60004H20.433V8.10004H3.567V9.60004ZM20.498 17.9639C20.4792 17.9524 20.4575 17.9252 20.4597 17.8727C20.4609 17.8434 20.4715 17.7772 20.5297 17.7054C20.5961 17.6235 20.6889 17.5797 20.7655 17.5709L20.9357 19.0613C21.6167 18.9835 21.9384 18.4179 21.9584 17.9346C21.9776 17.4682 21.7476 16.9717 21.2842 16.6865L20.498 17.9639ZM20.7661 17.5709L18.4558 17.8328L18.6248 19.3232L20.9351 19.0613L20.7661 17.5709ZM17.8689 18.2438L16.833 20.3246L18.1758 20.9931L19.2117 18.9123L17.8689 18.2438ZM16.8327 20.3252C16.8668 20.2565 16.9395 20.1839 17.0398 20.1492C17.1277 20.1188 17.194 20.1316 17.2221 20.1405C17.272 20.1564 17.2896 20.1857 17.294 20.2069L15.8248 20.5095C15.9345 21.0419 16.322 21.4281 16.7668 21.5697C17.2286 21.7168 17.8707 21.6073 18.1761 20.9925L16.8327 20.3252ZM17.2941 20.2074L16.1646 14.703L14.6952 15.0046L15.8247 20.509L17.2941 20.2074ZM16.1644 14.7023C16.1723 14.7406 16.1666 14.883 16.0232 14.9833C15.88 15.0835 15.7446 15.0402 15.7114 15.0198L16.4984 13.7428C16.0899 13.4911 15.5724 13.468 15.1633 13.7543C14.754 14.0407 14.5984 14.535 14.6954 15.0053L16.1644 14.7023ZM15.712 15.0201L20.4982 17.964L21.284 16.6864L16.4978 13.7425L15.712 15.0201Z\" fill=\"#475467\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #cameraIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"20\" viewBox=\"0 0 24 20\" fill=\"none\">\r\n <path d=\"M23 17C23 17.5304 22.7893 18.0391 22.4142 18.4142C22.0391 18.7893 21.5304 19 21 19H3C2.46957 19 1.96086 18.7893 1.58579 18.4142C1.21071 18.0391 1 17.5304 1 17V6C1 5.46957 1.21071 4.96086 1.58579 4.58579C1.96086 4.21071 2.46957 4 3 4H7L9 1H15L17 4H21C21.5304 4 22.0391 4.21071 22.4142 4.58579C22.7893 4.96086 23 5.46957 23 6V17Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M12 15C14.2091 15 16 13.2091 16 11C16 8.79086 14.2091 7 12 7C9.79086 7 8 8.79086 8 11C8 13.2091 9.79086 15 12 15Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #systemIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"14\" viewBox=\"0 0 20 14\" fill=\"none\">\r\n <path d=\"M12 2V9H2V2H12ZM2 0C0.896875 0 0 0.896875 0 2V9C0 10.1031 0.896875 11 2 11H5.66563L5.33125 12H3C2.44688 12 2 12.4469 2 13C2 13.5531 2.44688 14 3 14H11C11.5531 14 12 13.5531 12 13C12 12.4469 11.5531 12 11 12H8.66562L8.33125 11H12C13.1031 11 14 10.1031 14 9V2C14 0.896875 13.1031 0 12 0H2ZM16.5 0C15.6719 0 15 0.671875 15 1.5V12.5C15 13.3281 15.6719 14 16.5 14H18.5C19.3281 14 20 13.3281 20 12.5V1.5C20 0.671875 19.3281 0 18.5 0H16.5ZM17 2H18C18.275 2 18.5 2.225 18.5 2.5C18.5 2.775 18.275 3 18 3H17C16.725 3 16.5 2.775 16.5 2.5C16.5 2.225 16.725 2 17 2ZM16.5 4.5C16.5 4.225 16.725 4 17 4H18C18.275 4 18.5 4.225 18.5 4.5C18.5 4.775 18.275 5 18 5H17C16.725 5 16.5 4.775 16.5 4.5ZM17.5 9.5C17.7652 9.5 18.0196 9.60536 18.2071 9.79289C18.3946 9.98043 18.5 10.2348 18.5 10.5C18.5 10.7652 18.3946 11.0196 18.2071 11.2071C18.0196 11.3946 17.7652 11.5 17.5 11.5C17.2348 11.5 16.9804 11.3946 16.7929 11.2071C16.6054 11.0196 16.5 10.7652 16.5 10.5C16.5 10.2348 16.6054 9.98043 16.7929 9.79289C16.9804 9.60536 17.2348 9.5 17.5 9.5Z\"\r\n fill=\"#475467\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #storeIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M3.08995 6.88369L3.02401 6.98669C2.30358 8.25557 3.06101 9.87945 4.46464 10.0662C4.58627 10.0811 4.70112 10.0892 4.8145 10.0892C5.55255 10.0892 6.20523 9.77229 6.65953 9.27917L7.21286 8.67854L7.76432 9.28089C8.21367 9.77171 8.8652 10.0892 9.60776 10.0892C10.3471 10.0892 11.0022 9.77137 11.4512 9.28089L12.0044 8.67665L12.5576 9.28089C13.0066 9.77137 13.6617 10.0892 14.401 10.0892C15.1404 10.0892 15.7954 9.77137 16.2445 9.28089L16.7977 8.67665L17.3508 9.28089C17.7999 9.77137 18.4549 10.0892 19.1943 10.0892C19.3041 10.0892 19.4223 10.0811 19.5433 10.0663C20.9772 9.87168 21.7355 8.16387 20.9155 6.88419C20.9154 6.88413 20.9154 6.88407 20.9154 6.88402L18.8056 3.59429L18.8056 3.59429L18.8046 3.59282C18.7582 3.52002 18.6649 3.46423 18.5584 3.46423H5.44307C5.3365 3.46423 5.24326 3.52002 5.19681 3.59282L5.19619 3.59379L3.08995 6.88369ZM4.81818 12.7499C4.71644 12.7499 4.616 12.7468 4.5169 12.741V16.6428V18.9642C4.5169 19.8211 5.22663 20.5357 6.11942 20.5357H17.882C18.7748 20.5357 19.4845 19.8211 19.4845 18.9642V16.6428V12.7415C19.3874 12.747 19.2893 12.7499 19.1906 12.7499C19.0022 12.7499 18.8157 12.7398 18.632 12.7202V16.6428V17.3928H17.882H6.11942H5.36942V16.6428V12.721C5.18866 12.74 5.00472 12.7499 4.81818 12.7499Z\"\r\n stroke=\"#475467\" stroke-width=\"1.5\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #appIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M8 1H1V8H8V1Z\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M19 1H12V8H19V1Z\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M19 12H12V19H19V12Z\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M8 12H1V19H8V12Z\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n", styles: [".card-label{font-size:18px!important}.issuecard{flex:1 1 0;min-width:0;border-radius:10px;border:1px solid var(--Gray-200, #EAECF0);padding:16px}.issuecard label,.issuecard .label{color:var(--Black, #101828);font-size:14px;line-height:20px}.issuecard.active{border:none!important;background:var(--Primary-25, #F6FCFF);box-shadow:0 0 0 4px #e9f7ff}.contenttext{color:var(--Gray-500, #667085);font-size:14px;line-height:20px}.maincard-content{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD)}.maincard-label{color:var(--Gray-900, #101828);font-size:16px;line-height:24px}.profile{width:24px;height:24px;overflow:hidden;border-radius:200px}.profile-label{font-size:12px;color:var(--Gray-500, #344054);line-height:16px}.timingtext{color:var(--Gray-500, #667085);font-size:12px;line-height:18px}.fw-bold-700{font-weight:700!important}.child-row{border-radius:10px;border:1px solid var(--Gray-200, #EAECF0);overflow:hidden}.child-head{background:#fff;gap:8px}.chevron{display:inline-flex;transition:transform .15s ease-in-out}.chevron.open{transform:rotate(90deg)}.chevron-down{display:inline-flex;transition:transform .15s ease-in-out}.chevron-down.open{transform:rotate(180deg)}.streams-pill{display:inline-flex;align-items:center;border-radius:16px;border:1px solid var(--Gray-200, #EAECF0);padding:2px 10px;white-space:nowrap}.meta-pill{display:inline-flex;align-items:center;white-space:nowrap}.cycle-id{color:var(--Black, #101828)}.dot{display:inline-block;width:6px;height:6px;border-radius:50%}.dot-amber{background:#f79009}.dot-grey{background:var(--Gray-500, #667085)}.child-body{background:var(--Gray-50, #F9FAFB)}.inner-card{border-radius:10px;border:1px solid var(--Gray-200, #EAECF0);background:#fff}.escalated-pill,.status-pill{display:inline-flex;align-items:center;border-radius:16px;font-size:10px;line-height:16px;padding:0 8px}.escalated-pill .dot,.status-pill .dot{width:5px;height:5px}.escalated-pill{background:#fffaeb;color:#b54708}.status-pill{background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054)}.avatar{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:var(--Primary-25, #F6FCFF);flex-shrink:0;overflow:hidden}.avatar-logo{width:18px;height:18px;object-fit:contain}.connector{width:0;height:100%;margin-top:6px;border-left:1px solid var(--Gray-200, #EAECF0)}.meta-label{width:130px;flex-shrink:0}.meta-value{color:var(--Gray-900, #101828)}.analysis-link{color:var(--Primary-700, #009BF3)}.ticketDays{cursor:pointer}.analysis-row .analysis-dot{margin-top:7px;flex-shrink:0;background:var(--Gray-400, #98A2B3)}.analysis-row .analysis-label{letter-spacing:.04em;color:var(--Black, #101828);background:var(--Gray-100, #F2F4F7);border-radius:4px;padding:1px 6px;white-space:nowrap}.investigation{color:var(--Gray-500, #344054);font-size:15px;line-height:24px}.openedissue{border-radius:6px;background:var(--Gray-50, #F9FAFB);padding:8px 12px}.headingtext{color:var(--Gray-700, #344054)!important;font-size:15px!important;font-weight:500;line-height:20px}.roundedcheck input[type=checkbox]{width:16px!important;height:16px!important;border-radius:10px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;border:1px solid var(--Gray-300, #D0D5DD);background:#fff;cursor:pointer}.roundedcheck input[type=checkbox]:checked{border-color:var(--Primary-700, #009BF3);background:var(--Primary-700, #009BF3);background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' d='M2.5 6.3l2.4 2.4 4.6-5'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:center}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i4.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i4.DatePipe, name: "date" }, { kind: "pipe", type: i6.CustomDateFormatPipe, name: "customDateFormat" }] });
283
296
  }
284
297
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TicketInfraV2Component, decorators: [{
285
298
  type: Component,
286
- args: [{ selector: 'lib-ticket-infra-v2', template: "<div class=\"card\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Infra Tickets v2</span>\r\n <span *ngIf=\"headerFilter?.date?.startDate === headerFilter?.date?.endDate\" class=\"text-sub mb-2\">An overview of all the tickets for till {{ headerFilter?.date?.endDate | customDateFormat }}</span>\r\n <span *ngIf=\"headerFilter?.date?.startDate !== headerFilter?.date?.endDate\" class=\"text-sub mb-2\">An overview of all the tickets for {{ headerFilter?.date?.startDate | customDateFormat }} - {{ headerFilter?.date?.endDate | customDateFormat }}</span>\r\n </h3>\r\n <!-- Filter and Export render inert: lib-filters needs real facets, and\r\n there is nothing to export while the data is mocked. -->\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M2.5 5H17.5M5 10H15M8.33333 15H11.6667\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2\">Filter</span>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2\">Export</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-body\">\r\n <div class=\"d-flex justify-content-between mb-7\">\r\n <div *ngFor=\"let issue of ticketCard\" class=\"issuecard\">\r\n <div><span class=\"title\">{{ issue.count }}</span></div>\r\n <span class=\"label fw-semibold\">{{ issue.name }}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"maincard-content\">\r\n <div class=\"row p-10\">\r\n\r\n <!-- Left: unchanged from the Tickets tab. -->\r\n <div class=\"col-sm-6 cursor-pointer\">\r\n <div *ngFor=\"let data of ticketList; let index = index\" class=\"issuecard w-100 mb-4\"\r\n (click)=\"showTicket(index)\" [ngClass]=\"selectCard === index ? 'active' : ''\">\r\n\r\n <div class=\"maincard-label fw-bold d-flex justify-content-between mb-5\">\r\n <span><img src=\"./assets/tango/Images/ticket.svg\"> {{ data.ticketId }}</span>\r\n <div class=\"contenttext d-flex justify-content-center align-items-center text-center fw-semibold px-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M10.6667 1.33398V4.00065M5.33333 1.33398V4.00065M2 6.66732H14M3.33333 2.66732H12.6667C13.403 2.66732 14 3.26427 14 4.00065V13.334C14 14.0704 13.403 14.6673 12.6667 14.6673H3.33333C2.59695 14.6673 2 14.0704 2 13.334V4.00065C2 3.26427 2.59695 2.66732 3.33333 2.66732Z\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"mx-1\">{{ data.createdAt | date: 'dd-MM-yyyy' }}</span>\r\n <span *ngIf=\"data.issueClosedDate\" class=\"contenttext fw-semibold pe-3\">- {{ data.issueClosedDate | date: 'dd-MM-yyyy' }}</span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"cardMessage(data)\" class=\"mb-5 contenttext fw-semibold\">{{ cardMessage(data) }}</div>\r\n <div *ngIf=\"!cardMessage(data)\" class=\"mb-5 contenttext fw-semibold\">\r\n Store is currently encountering a <span class=\"fw-bold-700\">{{ data.primaryIssue }}</span> which is\r\n <span class=\"fw-bold-700\">{{ data.secondaryIssue }}.</span>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-between\">\r\n <div class=\"profile d-flex align-items-centre justify-content-centre\">\r\n <img src=\"./assets/tango/Images/userProfile.svg\" alt=\"\">\r\n </div>\r\n <div class=\"d-flex justify-content-between\">\r\n <span class=\"contenttext fw-semibold px-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M14 10C14 10.3536 13.8595 10.6928 13.6095 10.9428C13.3594 11.1929 13.0203 11.3333 12.6667 11.3333H4.66667L2 14V3.33333C2 2.97971 2.14048 2.64057 2.39052 2.39052C2.64057 2.14048 2.97971 2 3.33333 2H12.6667C13.0203 2 13.3594 2.14048 13.6095 2.39052C13.8595 2.64057 14 2.97971 14 3.33333V10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"mx-1\">{{ data.comments }}</span> comments\r\n </span>\r\n <span [ngClass]=\"statusBadge(data.status)\">{{ data.status | titlecase }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Right: the selected parent, with its cycle children as an accordion -->\r\n <div *ngIf=\"ticketInfo\" class=\"col-sm-6\">\r\n <div class=\"maincard-label fw-bold d-flex justify-content-between align-items-center mb-5\">\r\n <span><img src=\"./assets/tango/Images/ticket.svg\"><span class=\"mx-2\">{{ ticketInfo.ticketId }}</span></span>\r\n </div>\r\n\r\n <!-- Cycle children. Rows open independently. -->\r\n <div *ngFor=\"let child of ticketInfo.children; let lastChild = last\" class=\"child-row mb-4\">\r\n <div class=\"child-head d-flex justify-content-between align-items-center cursor-pointer px-4 py-3\" (click)=\"toggleChild(child)\">\r\n <div class=\"d-flex align-items-center flex-wrap\">\r\n <span class=\"chevron me-3\" [class.open]=\"child.expanded\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\r\n <path d=\"M5 2.5L9.5 7L5 11.5\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span class=\"meta-pill cycle-id timingtext fw-semibold me-3\">{{ child.cycleId }}</span>\r\n <span class=\"streams-pill timingtext me-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 24 20\" fill=\"none\">\r\n <path d=\"M23 17C23 17.5304 22.7893 18.0391 22.4142 18.4142C22.0391 18.7893 21.5304 19 21 19H3C2.46957 19 1.96086 18.7893 1.58579 18.4142C1.21071 18.0391 1 17.5304 1 17V6C1 5.46957 1.21071 4.96086 1.58579 4.58579C1.96086 4.21071 2.46957 4 3 4H7L9 1H15L17 4H21C21.5304 4 22.0391 4.21071 22.4142 4.58579C22.7893 4.96086 23 5.46957 23 6V17Z\"\r\n stroke=\"#F04438\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"fw-bold mx-1\">{{ child.streamsDown }}</span> streams down\r\n </span>\r\n </div>\r\n <span [ngClass]=\"statusBadge(child.status)\" class=\"flex-shrink-0\">{{ child.status | titlecase }}</span>\r\n </div>\r\n\r\n <div *ngIf=\"child.expanded\" class=\"child-body px-5 py-5\">\r\n <div class=\"inner-card px-5 py-5\">\r\n <div *ngFor=\"let entry of child.entries; let last = last; let first = first\" class=\"d-flex\" [class.pt-5]=\"!first\">\r\n <div class=\"d-flex flex-column align-items-center me-4\">\r\n <span class=\"avatar\">\r\n <img *ngIf=\"isTangoAuthor(entry.author); else personIcon\" class=\"avatar-logo\" src=\"./assets/tango/Images/tangoEye-mark.svg\" alt=\"Tango\">\r\n <ng-template #personIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M13.3327 14V12.6667C13.3327 11.9594 13.0517 11.2811 12.5516 10.781C12.0515 10.281 11.3733 10 10.666 10H5.33268C4.62544 10 3.94716 10.281 3.44706 10.781C2.94697 11.2811 2.66602 11.9594 2.66602 12.6667V14M10.666 4.66667C10.666 6.13943 9.47211 7.33333 7.99935 7.33333C6.52659 7.33333 5.33268 6.13943 5.33268 4.66667C5.33268 3.19391 6.52659 2 7.99935 2C9.47211 2 10.666 3.19391 10.666 4.66667Z\"\r\n stroke=\"#009BF3\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </ng-template>\r\n </span>\r\n <div *ngIf=\"!last\" class=\"connector\"></div>\r\n </div>\r\n\r\n <div class=\"w-100 pb-2\">\r\n <div class=\"d-flex align-items-center flex-wrap\">\r\n <span class=\"maincard-label fw-bold\">{{ entry.author }}</span>\r\n <span *ngIf=\"entry.at\" class=\"timingtext mx-3\">{{ entry.at }}</span>\r\n <span *ngIf=\"entry.escalated\" class=\"escalated-pill timingtext fw-semibold ms-auto\"><span class=\"dot dot-amber me-2\"></span>ESCALATED</span>\r\n </div>\r\n\r\n <div *ngIf=\"entry.text\" class=\"contenttext fw-semibold mt-2\">{{ entry.text }}</div>\r\n\r\n <!-- Analysis entry: label/value pairs, then the expander -->\r\n <ng-container *ngIf=\"entry.kind === 'analysis'\">\r\n <div class=\"d-flex mt-3\">\r\n <span class=\"meta-label timingtext fw-semibold\">ISSUE CATEGORY</span>\r\n <span class=\"meta-value contenttext fw-semibold\">{{ entry.issueCategory }}</span>\r\n </div>\r\n <div class=\"d-flex mt-2\">\r\n <span class=\"meta-label timingtext fw-semibold\">ROOT CAUSE</span>\r\n <span class=\"meta-value contenttext fw-semibold\">{{ entry.rootCause }}</span>\r\n </div>\r\n <div class=\"analysis-link contenttext fw-semibold cursor-pointer mt-4\" (click)=\"toggleAnalysis(entry)\">\r\n <span class=\"chevron-down me-2\" [class.open]=\"entry.showAnalysis\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 14 14\" fill=\"none\">\r\n <path d=\"M3 5L7 9.5L11 5\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n {{ entry.showAnalysis ? 'Hide the full analysis' : 'Show the full analysis' }}\r\n </div>\r\n <div *ngIf=\"entry.showAnalysis && entry.analysis\" class=\"mt-3\">\r\n <div class=\"analysis-row d-flex mb-4\">\r\n <span class=\"dot analysis-dot me-3\"></span>\r\n <div class=\"timingtext fw-semibold\">\r\n <span class=\"analysis-label timingtext fw-semibold me-3\">CAUSE</span>{{ entry.analysis.cause }}\r\n </div>\r\n </div>\r\n <div class=\"analysis-row d-flex mb-4\">\r\n <span class=\"dot analysis-dot me-3\"></span>\r\n <div class=\"timingtext fw-semibold\">\r\n <span class=\"analysis-label timingtext fw-semibold me-3\">PROOF</span>{{ entry.analysis.proof }}\r\n </div>\r\n </div>\r\n <div class=\"analysis-row d-flex mb-4\">\r\n <span class=\"dot analysis-dot me-3\"></span>\r\n <div class=\"timingtext fw-semibold\">\r\n <span class=\"analysis-label timingtext fw-semibold me-3\">FIX</span>{{ entry.analysis.fix }}\r\n </div>\r\n </div>\r\n <div class=\"analysis-row d-flex\">\r\n <span class=\"dot analysis-dot me-3\"></span>\r\n <div class=\"timingtext fw-semibold\">\r\n <span class=\"analysis-label timingtext fw-semibold me-3\">NOTES</span>{{ entry.analysis.notes }}\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Issue identification, inside the child panel. Icons are copied\r\n from the V1 tab so the two tabs render identically. Only the\r\n last child carries it, so it appears once per parent. -->\r\n <div *ngIf=\"showIssuePicker && lastChild\" class=\"investigation fw-semibold mt-5\">\r\n Kindly choose the option below that corresponds to the issue you are\r\n experiencing in the store.\r\n <ul class=\"list-unstyled px-4\">\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('Internet Issues')\">\r\n <ng-container *ngTemplateOutlet=\"internetIcon\"></ng-container> <span class=\"px-3\">Internet Issues</span>\r\n </li>\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('Camera Issues')\">\r\n <ng-container *ngTemplateOutlet=\"cameraIcon\"></ng-container> <span class=\"px-3\">Camera Issues</span>\r\n </li>\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('System Issues')\">\r\n <ng-container *ngTemplateOutlet=\"systemIcon\"></ng-container> <span class=\"px-3\">System Issues</span>\r\n </li>\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('Store Operation Issues')\">\r\n <ng-container *ngTemplateOutlet=\"storeIcon\"></ng-container> <span class=\"px-3\">Store Operation Issues</span>\r\n </li>\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('Application Issues')\">\r\n <ng-container *ngTemplateOutlet=\"appIcon\"></ng-container> <span class=\"px-3\">Application Issues</span>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n <div *ngIf=\"showIssueDetail && lastChild\" class=\"mt-5\">\r\n <div class=\"openedissue d-flex justify-content-between align-items-center\">\r\n <span class=\"profile-label fw-semibold\">\r\n <ng-container *ngIf=\"selectedIssue === 'Internet Issues'\" [ngTemplateOutlet]=\"internetIcon\"></ng-container>\r\n <ng-container *ngIf=\"selectedIssue === 'Camera Issues'\" [ngTemplateOutlet]=\"cameraIcon\"></ng-container>\r\n <ng-container *ngIf=\"selectedIssue === 'System Issues'\" [ngTemplateOutlet]=\"systemIcon\"></ng-container>\r\n <ng-container *ngIf=\"selectedIssue === 'Store Operation Issues'\" [ngTemplateOutlet]=\"storeIcon\"></ng-container>\r\n <ng-container *ngIf=\"selectedIssue === 'Application Issues'\" [ngTemplateOutlet]=\"appIcon\"></ng-container>\r\n <span class=\"ms-2\">{{ selectedIssue }}</span>\r\n </span>\r\n <div (click)=\"choosenIssue('')\" class=\"maincard-content bg-white px-3 py-2 cursor-pointer\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\r\n <path d=\"M12.8327 6.99935H1.16602M1.16602 6.99935L6.99935 12.8327M1.16602 6.99935L6.99935 1.16602\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n\r\n <div class=\"maincard-content w-100 mt-2 px-4 py-2 pb-4\">\r\n <div class=\"maincard-label fw-semibold py-2\">Please select the relevant problem facing from the following</div>\r\n <div *ngFor=\"let issue of secondaryIssues; let index = index\"\r\n class=\"maincard-content d-flex justify-content-between align-items-center w-100 mt-2 px-4 py-4 cursor-pointer\"\r\n (click)=\"toggleCheckbox(index)\">\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <span><img class=\"pe-3\" src=\"./assets/tango/Images/Featured icon.png\"></span>\r\n <span class=\"headingtext\">{{ issue.name }}</span>\r\n </div>\r\n <div class=\"roundedcheck d-flex align-items-center\">\r\n <input type=\"checkbox\" [checked]=\"issue.checked\" class=\"p-0\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Hibernation + comment row, copied from the V1 tab\r\n (ticket-infra.component.html:333) so both read the same. -->\r\n <div class=\"form-group pt-6\">\r\n <label for=\"hibernationV2\" class=\"maincard-label fw-semibold mb-2\">Hibernation (in days) *</label>\r\n <div class=\"w-250px position-relative\">\r\n <div class=\"position-absolute translate-middle-y top-50 me-5 ps-3 ticketDays\">\r\n <span class=\"svg-icon toggle-off svg-icon-1\" [ngClass]=\"hibernationDays === 0 ? 'pe-none' : ''\" (click)=\"decreaseHibernation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M4.66602 10H16.3327\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n <input type=\"text\" class=\"form-control\" id=\"hibernationV2\" style=\"text-align: center;\"\r\n [value]=\"hibernationDays\" placeholder=\"0\" readonly />\r\n <div class=\"position-absolute translate-middle-y top-50 end-0 me-3\">\r\n <span class=\"svg-icon toggle-on svg-icon-1 ticketDays\" (click)=\"increaseHibernation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M10.4993 4.1665V15.8332M4.66602 9.99984H16.3327\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- The paperclip is inert: V1 posts to uploadAttachments/, and there\r\n is nowhere to upload to while the data is mocked. -->\r\n <div class=\"d-flex justify-content-between align-items-center mt-10 mb-5\">\r\n <input class=\"form-control\" type=\"text\" [(ngModel)]=\"comments\" placeholder=\"Add your comments..\">\r\n <button type=\"button\" class=\"cursor-pointer btn btn-default btn-outline ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M17.8666 9.20835L10.2082 16.8667C9.27005 17.8049 7.99757 18.332 6.67075 18.332C5.34393 18.332 4.07145 17.8049 3.13325 16.8667C2.19505 15.9285 1.66797 14.656 1.66797 13.3292C1.66797 12.0024 2.19505 10.7299 3.13325 9.79168L10.7916 2.13335C11.4171 1.50788 12.2654 1.15649 13.1499 1.15649C14.0345 1.15649 14.8828 1.50788 15.5082 2.13335C16.1337 2.75882 16.4851 3.60713 16.4851 4.49168C16.4851 5.37623 16.1337 6.22455 15.5082 6.85002L7.84158 14.5083C7.52885 14.8211 7.10469 14.9968 6.66242 14.9968C6.22014 14.9968 5.79598 14.8211 5.48325 14.5083C5.17051 14.1956 4.99482 13.7715 4.99482 13.3292C4.99482 12.8869 5.17051 12.4627 5.48325 12.15L12.5582 5.08335\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-primary ms-3\" [disabled]=\"!canSubmitIssue\" (click)=\"submitIssue()\">Submit</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- Option icons, defined once because each is used twice: in the option list\r\n and again in the chosen-issue bar. Paths are copied verbatim from\r\n ticket-infra.component.html so the two tabs match pixel for pixel. -->\r\n<ng-template #internetIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M21 12C21 7.0293 16.9707 3 12 3C7.0293 3 3 7.0293 3 12C3 16.9707 7.0293 21 12 21\" fill=\"white\" />\r\n <path d=\"M12.9 3.04504C12.9 3.04504 15.6 6.60004 15.6 12L12.9 3.04504ZM11.1 20.955C11.1 20.955 8.4 17.4 8.4 12C8.4 6.60004 11.1 3.04504 11.1 3.04504M3.567 15.15H12H3.567ZM3.567 8.85004H20.433H3.567Z\" fill=\"white\" />\r\n <path d=\"M20.8911 17.3252C21.3357 17.5988 21.3078 18.2639 20.8506 18.3161L18.5403 18.578L17.5044 20.6588C17.2992 21.0719 16.6647 20.8694 16.5594 20.3582L15.4299 14.8538C15.3408 14.4218 15.7296 14.15 16.1049 14.3813L20.8911 17.3252Z\" fill=\"white\" />\r\n <path d=\"M20.25 12C20.25 12.4142 20.5858 12.75 21 12.75C21.4142 12.75 21.75 12.4142 21.75 12H20.25ZM12 21.75C12.4142 21.75 12.75 21.4142 12.75 21C12.75 20.5858 12.4142 20.25 12 20.25V21.75ZM13.4973 2.59142C13.2467 2.26156 12.7762 2.19725 12.4464 2.44778C12.1165 2.6983 12.0522 3.1688 12.3027 3.49866L13.4973 2.59142ZM14.85 12C14.85 12.4143 15.1858 12.75 15.6 12.75C16.0142 12.75 16.35 12.4143 16.35 12H14.85ZM10.5027 21.4087C10.7533 21.7385 11.2238 21.8028 11.5536 21.5523C11.8835 21.3018 11.9478 20.8313 11.6973 20.5014L10.5027 21.4087ZM11.6973 3.49866C11.9478 3.1688 11.8835 2.6983 11.5536 2.44778C11.2238 2.19725 10.7533 2.26156 10.5027 2.59142L11.6973 3.49866ZM3.567 14.4C3.15279 14.4 2.817 14.7358 2.817 15.15C2.817 15.5643 3.15279 15.9 3.567 15.9V14.4ZM12 15.9C12.4142 15.9 12.75 15.5643 12.75 15.15C12.75 14.7358 12.4142 14.4 12 14.4V15.9ZM3.567 8.10004C3.15279 8.10004 2.817 8.43583 2.817 8.85004C2.817 9.26426 3.15279 9.60004 3.567 9.60004V8.10004ZM20.433 9.60004C20.8472 9.60004 21.183 9.26426 21.183 8.85004C21.183 8.43583 20.8472 8.10004 20.433 8.10004V9.60004ZM20.8911 17.3252L21.2842 16.6865L21.284 16.6864L20.8911 17.3252ZM20.8506 18.3161L20.9351 19.0613L20.9357 19.0613L20.8506 18.3161ZM18.5403 18.578L18.4558 17.8328L18.0506 17.8787L17.8689 18.2438L18.5403 18.578ZM17.5044 20.6588L16.833 20.3246L16.8327 20.3252L17.5044 20.6588ZM16.5594 20.3582L15.8247 20.509L15.8248 20.5095L16.5594 20.3582ZM15.4299 14.8538L16.1646 14.703L16.1644 14.7023L15.4299 14.8538ZM16.1049 14.3813L15.7114 15.0198L15.712 15.0201L16.1049 14.3813ZM21.75 12C21.75 6.61509 17.3849 2.25 12 2.25V3.75C16.5565 3.75 20.25 7.44351 20.25 12H21.75ZM12 2.25C6.61509 2.25 2.25 6.61509 2.25 12H3.75C3.75 7.44351 7.44351 3.75 12 3.75V2.25ZM2.25 12C2.25 17.3849 6.61509 21.75 12 21.75V20.25C7.44351 20.25 3.75 16.5565 3.75 12H2.25ZM12.9 3.04504C12.3027 3.49866 12.3026 3.49846 12.3024 3.49828C12.3024 3.49823 12.3023 3.49806 12.3022 3.49797C12.3021 3.49779 12.302 3.49767 12.3019 3.4976C12.3018 3.49746 12.3019 3.49753 12.3021 3.49781C12.3025 3.49838 12.3036 3.4998 12.3053 3.50206C12.3086 3.50658 12.3144 3.51447 12.3225 3.52567C12.3387 3.54809 12.3641 3.58375 12.3973 3.63226C12.4638 3.72929 12.5616 3.87752 12.6805 4.07361C12.9183 4.46606 13.2393 5.04863 13.5614 5.79478C14.2061 7.28837 14.85 9.42526 14.85 12H16.35C16.35 9.17483 15.6439 6.83422 14.9386 5.20031C14.5857 4.38271 14.2317 3.73902 13.9633 3.29616C13.829 3.0746 13.7159 2.90291 13.6347 2.78443C13.5941 2.72518 13.5615 2.6792 13.5381 2.6469C13.5265 2.63075 13.5171 2.61802 13.5102 2.60876C13.5068 2.60413 13.504 2.60036 13.5018 2.59747C13.5007 2.59602 13.4998 2.5948 13.4991 2.59379C13.4987 2.59329 13.4983 2.59284 13.498 2.59244C13.4979 2.59224 13.4977 2.59199 13.4976 2.59189C13.4974 2.59165 13.4973 2.59142 12.9 3.04504ZM11.1 20.955C11.6973 20.5014 11.6974 20.5016 11.6976 20.5018C11.6976 20.5019 11.6977 20.502 11.6978 20.5021C11.6979 20.5023 11.698 20.5024 11.6981 20.5025C11.6982 20.5026 11.6981 20.5026 11.6979 20.5023C11.6975 20.5017 11.6964 20.5003 11.6948 20.498C11.6914 20.4935 11.6856 20.4856 11.6775 20.4744C11.6613 20.452 11.6359 20.4163 11.6027 20.3678C11.5362 20.2708 11.4384 20.1226 11.3195 19.9265C11.0817 19.534 10.7607 18.9515 10.4386 18.2053C9.79388 16.7117 9.15 14.5748 9.15 12H7.65C7.65 14.8253 8.35613 17.1659 9.06142 18.7998C9.41434 19.6174 9.76833 20.2611 10.0367 20.7039C10.171 20.9255 10.2841 21.0972 10.3653 21.2157C10.4059 21.2749 10.4385 21.3209 10.4619 21.3532C10.4735 21.3693 10.4829 21.3821 10.4898 21.3913C10.4932 21.396 10.496 21.3997 10.4982 21.4026C10.4993 21.4041 10.5002 21.4053 10.5009 21.4063C10.5013 21.4068 10.5017 21.4073 10.502 21.4076C10.5021 21.4078 10.5023 21.4081 10.5024 21.4082C10.5026 21.4084 10.5027 21.4087 11.1 20.955ZM9.15 12C9.15 9.42526 9.79388 7.28837 10.4386 5.79478C10.7607 5.04863 11.0817 4.46606 11.3195 4.07361C11.4384 3.87752 11.5362 3.72929 11.6027 3.63226C11.6359 3.58375 11.6613 3.54809 11.6775 3.52567C11.6856 3.51447 11.6914 3.50658 11.6948 3.50206C11.6964 3.4998 11.6975 3.49838 11.6979 3.49781C11.6981 3.49753 11.6982 3.49746 11.6981 3.4976C11.698 3.49767 11.6979 3.49779 11.6978 3.49797C11.6977 3.49806 11.6976 3.49823 11.6976 3.49828C11.6974 3.49846 11.6973 3.49866 11.1 3.04504C10.5027 2.59142 10.5026 2.59165 10.5024 2.59189C10.5023 2.59199 10.5021 2.59224 10.502 2.59244C10.5017 2.59284 10.5013 2.59329 10.5009 2.59379C10.5002 2.5948 10.4993 2.59602 10.4982 2.59747C10.496 2.60036 10.4932 2.60413 10.4898 2.60876C10.4829 2.61802 10.4735 2.63075 10.4619 2.6469C10.4385 2.6792 10.4059 2.72518 10.3653 2.78443C10.2841 2.90291 10.171 3.0746 10.0367 3.29616C9.76833 3.73902 9.41434 4.38271 9.06142 5.20031C8.35613 6.83422 7.65 9.17483 7.65 12H9.15ZM3.567 15.9H12V14.4H3.567V15.9ZM3.567 9.60004H20.433V8.10004H3.567V9.60004ZM20.498 17.9639C20.4792 17.9524 20.4575 17.9252 20.4597 17.8727C20.4609 17.8434 20.4715 17.7772 20.5297 17.7054C20.5961 17.6235 20.6889 17.5797 20.7655 17.5709L20.9357 19.0613C21.6167 18.9835 21.9384 18.4179 21.9584 17.9346C21.9776 17.4682 21.7476 16.9717 21.2842 16.6865L20.498 17.9639ZM20.7661 17.5709L18.4558 17.8328L18.6248 19.3232L20.9351 19.0613L20.7661 17.5709ZM17.8689 18.2438L16.833 20.3246L18.1758 20.9931L19.2117 18.9123L17.8689 18.2438ZM16.8327 20.3252C16.8668 20.2565 16.9395 20.1839 17.0398 20.1492C17.1277 20.1188 17.194 20.1316 17.2221 20.1405C17.272 20.1564 17.2896 20.1857 17.294 20.2069L15.8248 20.5095C15.9345 21.0419 16.322 21.4281 16.7668 21.5697C17.2286 21.7168 17.8707 21.6073 18.1761 20.9925L16.8327 20.3252ZM17.2941 20.2074L16.1646 14.703L14.6952 15.0046L15.8247 20.509L17.2941 20.2074ZM16.1644 14.7023C16.1723 14.7406 16.1666 14.883 16.0232 14.9833C15.88 15.0835 15.7446 15.0402 15.7114 15.0198L16.4984 13.7428C16.0899 13.4911 15.5724 13.468 15.1633 13.7543C14.754 14.0407 14.5984 14.535 14.6954 15.0053L16.1644 14.7023ZM15.712 15.0201L20.4982 17.964L21.284 16.6864L16.4978 13.7425L15.712 15.0201Z\" fill=\"#475467\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #cameraIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"20\" viewBox=\"0 0 24 20\" fill=\"none\">\r\n <path d=\"M23 17C23 17.5304 22.7893 18.0391 22.4142 18.4142C22.0391 18.7893 21.5304 19 21 19H3C2.46957 19 1.96086 18.7893 1.58579 18.4142C1.21071 18.0391 1 17.5304 1 17V6C1 5.46957 1.21071 4.96086 1.58579 4.58579C1.96086 4.21071 2.46957 4 3 4H7L9 1H15L17 4H21C21.5304 4 22.0391 4.21071 22.4142 4.58579C22.7893 4.96086 23 5.46957 23 6V17Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M12 15C14.2091 15 16 13.2091 16 11C16 8.79086 14.2091 7 12 7C9.79086 7 8 8.79086 8 11C8 13.2091 9.79086 15 12 15Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #systemIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"14\" viewBox=\"0 0 20 14\" fill=\"none\">\r\n <path d=\"M12 2V9H2V2H12ZM2 0C0.896875 0 0 0.896875 0 2V9C0 10.1031 0.896875 11 2 11H5.66563L5.33125 12H3C2.44688 12 2 12.4469 2 13C2 13.5531 2.44688 14 3 14H11C11.5531 14 12 13.5531 12 13C12 12.4469 11.5531 12 11 12H8.66562L8.33125 11H12C13.1031 11 14 10.1031 14 9V2C14 0.896875 13.1031 0 12 0H2ZM16.5 0C15.6719 0 15 0.671875 15 1.5V12.5C15 13.3281 15.6719 14 16.5 14H18.5C19.3281 14 20 13.3281 20 12.5V1.5C20 0.671875 19.3281 0 18.5 0H16.5ZM17 2H18C18.275 2 18.5 2.225 18.5 2.5C18.5 2.775 18.275 3 18 3H17C16.725 3 16.5 2.775 16.5 2.5C16.5 2.225 16.725 2 17 2ZM16.5 4.5C16.5 4.225 16.725 4 17 4H18C18.275 4 18.5 4.225 18.5 4.5C18.5 4.775 18.275 5 18 5H17C16.725 5 16.5 4.775 16.5 4.5ZM17.5 9.5C17.7652 9.5 18.0196 9.60536 18.2071 9.79289C18.3946 9.98043 18.5 10.2348 18.5 10.5C18.5 10.7652 18.3946 11.0196 18.2071 11.2071C18.0196 11.3946 17.7652 11.5 17.5 11.5C17.2348 11.5 16.9804 11.3946 16.7929 11.2071C16.6054 11.0196 16.5 10.7652 16.5 10.5C16.5 10.2348 16.6054 9.98043 16.7929 9.79289C16.9804 9.60536 17.2348 9.5 17.5 9.5Z\"\r\n fill=\"#475467\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #storeIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M3.08995 6.88369L3.02401 6.98669C2.30358 8.25557 3.06101 9.87945 4.46464 10.0662C4.58627 10.0811 4.70112 10.0892 4.8145 10.0892C5.55255 10.0892 6.20523 9.77229 6.65953 9.27917L7.21286 8.67854L7.76432 9.28089C8.21367 9.77171 8.8652 10.0892 9.60776 10.0892C10.3471 10.0892 11.0022 9.77137 11.4512 9.28089L12.0044 8.67665L12.5576 9.28089C13.0066 9.77137 13.6617 10.0892 14.401 10.0892C15.1404 10.0892 15.7954 9.77137 16.2445 9.28089L16.7977 8.67665L17.3508 9.28089C17.7999 9.77137 18.4549 10.0892 19.1943 10.0892C19.3041 10.0892 19.4223 10.0811 19.5433 10.0663C20.9772 9.87168 21.7355 8.16387 20.9155 6.88419C20.9154 6.88413 20.9154 6.88407 20.9154 6.88402L18.8056 3.59429L18.8056 3.59429L18.8046 3.59282C18.7582 3.52002 18.6649 3.46423 18.5584 3.46423H5.44307C5.3365 3.46423 5.24326 3.52002 5.19681 3.59282L5.19619 3.59379L3.08995 6.88369ZM4.81818 12.7499C4.71644 12.7499 4.616 12.7468 4.5169 12.741V16.6428V18.9642C4.5169 19.8211 5.22663 20.5357 6.11942 20.5357H17.882C18.7748 20.5357 19.4845 19.8211 19.4845 18.9642V16.6428V12.7415C19.3874 12.747 19.2893 12.7499 19.1906 12.7499C19.0022 12.7499 18.8157 12.7398 18.632 12.7202V16.6428V17.3928H17.882H6.11942H5.36942V16.6428V12.721C5.18866 12.74 5.00472 12.7499 4.81818 12.7499Z\"\r\n stroke=\"#475467\" stroke-width=\"1.5\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #appIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M8 1H1V8H8V1Z\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M19 1H12V8H19V1Z\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M19 12H12V19H19V12Z\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M8 12H1V19H8V12Z\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n", styles: [".card-label{font-size:18px!important}.issuecard{width:19%;border-radius:10px;border:1px solid var(--Gray-200, #EAECF0);padding:16px}.issuecard label,.issuecard .label{color:var(--Black, #101828);font-size:14px;line-height:20px}.issuecard.active{border:none!important;background:var(--Primary-25, #F6FCFF);box-shadow:0 0 0 4px #e9f7ff}.contenttext{color:var(--Gray-500, #667085);font-size:14px;line-height:20px}.maincard-content{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD)}.maincard-label{color:var(--Gray-900, #101828);font-size:16px;line-height:24px}.profile{width:24px;height:24px;overflow:hidden;border-radius:200px}.profile-label{font-size:12px;color:var(--Gray-500, #344054);line-height:16px}.timingtext{color:var(--Gray-500, #667085);font-size:12px;line-height:18px}.fw-bold-700{font-weight:700!important}.child-row{border-radius:10px;border:1px solid var(--Gray-200, #EAECF0);overflow:hidden}.child-head{background:#fff;gap:8px}.chevron{display:inline-flex;transition:transform .15s ease-in-out}.chevron.open{transform:rotate(90deg)}.chevron-down{display:inline-flex;transition:transform .15s ease-in-out}.chevron-down.open{transform:rotate(180deg)}.streams-pill{display:inline-flex;align-items:center;border-radius:16px;border:1px solid var(--Gray-200, #EAECF0);padding:2px 10px;white-space:nowrap}.meta-pill{display:inline-flex;align-items:center;white-space:nowrap}.cycle-id{color:var(--Black, #101828)}.dot{display:inline-block;width:6px;height:6px;border-radius:50%}.dot-amber{background:#f79009}.child-body{background:var(--Gray-50, #F9FAFB)}.inner-card{border-radius:10px;border:1px solid var(--Gray-200, #EAECF0);background:#fff}.escalated-pill{display:inline-flex;align-items:center;border-radius:16px;background:#fffaeb;color:#b54708;font-size:10px;line-height:16px;padding:0 8px}.escalated-pill .dot{width:5px;height:5px}.avatar{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:var(--Primary-25, #F6FCFF);flex-shrink:0;overflow:hidden}.avatar-logo{width:18px;height:18px;object-fit:contain}.connector{width:0;height:100%;margin-top:6px;border-left:1px solid var(--Gray-200, #EAECF0)}.meta-label{width:130px;flex-shrink:0}.meta-value{color:var(--Gray-900, #101828)}.analysis-link{color:var(--Primary-700, #009BF3)}.ticketDays{cursor:pointer}.analysis-row .analysis-dot{margin-top:7px;flex-shrink:0;background:var(--Gray-400, #98A2B3)}.analysis-row .analysis-label{letter-spacing:.04em;color:var(--Black, #101828);background:var(--Gray-100, #F2F4F7);border-radius:4px;padding:1px 6px;white-space:nowrap}.investigation{color:var(--Gray-500, #344054);font-size:15px;line-height:24px}.openedissue{border-radius:6px;background:var(--Gray-50, #F9FAFB);padding:8px 12px}.headingtext{color:var(--Gray-700, #344054)!important;font-size:15px!important;font-weight:500;line-height:20px}.roundedcheck input[type=checkbox]{width:16px!important;height:16px!important;border-radius:10px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;border:1px solid var(--Gray-300, #D0D5DD);background:#fff;cursor:pointer}.roundedcheck input[type=checkbox]:checked{border-color:var(--Primary-700, #009BF3);background:var(--Primary-700, #009BF3);background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' d='M2.5 6.3l2.4 2.4 4.6-5'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:center}\n"] }]
287
- }], ctorParameters: () => [{ type: i1.GlobalStateService }], propDecorators: { selectedTab: [{
299
+ args: [{ selector: 'lib-ticket-infra-v2', template: "<div class=\"card\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Infra Tickets v2</span>\r\n <span *ngIf=\"headerFilter?.date?.startDate === headerFilter?.date?.endDate\" class=\"text-sub mb-2\">An overview of all the tickets for till {{ headerFilter?.date?.endDate | customDateFormat }}</span>\r\n <span *ngIf=\"headerFilter?.date?.startDate !== headerFilter?.date?.endDate\" class=\"text-sub mb-2\">An overview of all the tickets for {{ headerFilter?.date?.startDate | customDateFormat }} - {{ headerFilter?.date?.endDate | customDateFormat }}</span>\r\n </h3>\r\n <!-- Filter and Export render inert: lib-filters needs real facets, and\r\n there is nothing to export while the data is mocked. -->\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M2.5 5H17.5M5 10H15M8.33333 15H11.6667\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2\">Filter</span>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"ms-2\">Export</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-body\">\r\n <!-- Shimmer while either call is in flight. The styles are the shell's\r\n (styles.scss `.loader`), so the .loader > .shimmer > .wrapper > .stroke\r\n nesting has to stay as it is here. -->\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!loading\">\r\n <div class=\"d-flex justify-content-between gap-3 mb-7\">\r\n <div *ngFor=\"let issue of ticketCard\" class=\"issuecard\">\r\n <div><span class=\"title\">{{ issue.count }}</span></div>\r\n <span class=\"label fw-semibold\">{{ issue.name }}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"maincard-content\">\r\n <div class=\"row p-10\">\r\n\r\n <!-- Left: unchanged from the Tickets tab. -->\r\n <div class=\"col-sm-6 cursor-pointer\">\r\n <div *ngFor=\"let data of ticketList; let index = index\" class=\"issuecard w-100 mb-4\"\r\n (click)=\"showTicket(index)\" [ngClass]=\"selectCard === index ? 'active' : ''\">\r\n\r\n <div class=\"maincard-label fw-bold d-flex justify-content-between mb-5\">\r\n <span><img src=\"./assets/tango/Images/ticket.svg\"> {{ data.ticketId }}</span>\r\n <div class=\"contenttext d-flex justify-content-center align-items-center text-center fw-semibold px-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M10.6667 1.33398V4.00065M5.33333 1.33398V4.00065M2 6.66732H14M3.33333 2.66732H12.6667C13.403 2.66732 14 3.26427 14 4.00065V13.334C14 14.0704 13.403 14.6673 12.6667 14.6673H3.33333C2.59695 14.6673 2 14.0704 2 13.334V4.00065C2 3.26427 2.59695 2.66732 3.33333 2.66732Z\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"mx-1\">{{ data.createdAt | date: 'dd-MM-yyyy' }}</span>\r\n <span *ngIf=\"data.issueClosedDate\" class=\"contenttext fw-semibold pe-3\">- {{ data.issueClosedDate | date: 'dd-MM-yyyy' }}</span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"cardMessage(data)\" class=\"mb-5 contenttext fw-semibold\">{{ cardMessage(data) }}</div>\r\n <div *ngIf=\"!cardMessage(data)\" class=\"mb-5 contenttext fw-semibold\">\r\n Store is currently encountering a <span class=\"fw-bold-700\">{{ data.primaryIssue }}</span> which is\r\n <span class=\"fw-bold-700\">{{ data.secondaryIssue }}.</span>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-between\">\r\n <div class=\"profile d-flex align-items-centre justify-content-centre\">\r\n <img src=\"./assets/tango/Images/userProfile.svg\" alt=\"\">\r\n </div>\r\n <div class=\"d-flex justify-content-between\">\r\n <span class=\"contenttext fw-semibold px-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M14 10C14 10.3536 13.8595 10.6928 13.6095 10.9428C13.3594 11.1929 13.0203 11.3333 12.6667 11.3333H4.66667L2 14V3.33333C2 2.97971 2.14048 2.64057 2.39052 2.39052C2.64057 2.14048 2.97971 2 3.33333 2H12.6667C13.0203 2 13.3594 2.14048 13.6095 2.39052C13.8595 2.64057 14 2.97971 14 3.33333V10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"mx-1\">{{ data.comments }}</span> comments\r\n </span>\r\n <span [ngClass]=\"statusBadge(data.status)\">{{ data.status | titlecase }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Right: the selected parent, with its cycle children as an accordion -->\r\n <!-- Only this column reloads when a card is clicked, so it\r\n shimmers on its own rather than blanking the whole tab. -->\r\n <div *ngIf=\"detailLoading\" class=\"col-sm-6\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"!detailLoading && ticketInfo\" class=\"col-sm-6\">\r\n <div class=\"maincard-label fw-bold d-flex justify-content-between align-items-center mb-5\">\r\n <span><img src=\"./assets/tango/Images/ticket.svg\"><span class=\"mx-2\">{{ ticketInfo.ticketId }}</span></span>\r\n </div>\r\n\r\n <!-- Cycle children. Rows open independently. -->\r\n <div *ngFor=\"let child of ticketInfo.children\" class=\"child-row mb-4\">\r\n <div class=\"child-head d-flex justify-content-between align-items-center cursor-pointer px-4 py-3\" (click)=\"toggleChild(child)\">\r\n <div class=\"d-flex align-items-center flex-wrap\">\r\n <span class=\"chevron me-3\" [class.open]=\"child.expanded\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\r\n <path d=\"M5 2.5L9.5 7L5 11.5\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span class=\"meta-pill cycle-id timingtext fw-semibold me-3\">{{ child.cycleId }}</span>\r\n <span class=\"streams-pill timingtext me-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 24 20\" fill=\"none\">\r\n <path d=\"M23 17C23 17.5304 22.7893 18.0391 22.4142 18.4142C22.0391 18.7893 21.5304 19 21 19H3C2.46957 19 1.96086 18.7893 1.58579 18.4142C1.21071 18.0391 1 17.5304 1 17V6C1 5.46957 1.21071 4.96086 1.58579 4.58579C1.96086 4.21071 2.46957 4 3 4H7L9 1H15L17 4H21C21.5304 4 22.0391 4.21071 22.4142 4.58579C22.7893 4.96086 23 5.46957 23 6V17Z\"\r\n stroke=\"#F04438\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"fw-bold mx-1\">{{ child.streamsDown }}</span> streams down\r\n </span>\r\n </div>\r\n <span [ngClass]=\"statusBadge(child.status)\" class=\"flex-shrink-0\">{{ child.status | titlecase }}</span>\r\n </div>\r\n\r\n <div *ngIf=\"child.expanded\" class=\"child-body px-5 py-5\">\r\n <div class=\"inner-card px-5 py-5\">\r\n <div *ngFor=\"let entry of child.entries; let last = last; let first = first\" class=\"d-flex\" [class.pt-5]=\"!first\">\r\n <div class=\"d-flex flex-column align-items-center me-4\">\r\n <span class=\"avatar\">\r\n <img *ngIf=\"isTangoAuthor(entry.author); else personIcon\" class=\"avatar-logo\" src=\"./assets/tango/Images/tangoEye-mark.svg\" alt=\"Tango\">\r\n <ng-template #personIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M13.3327 14V12.6667C13.3327 11.9594 13.0517 11.2811 12.5516 10.781C12.0515 10.281 11.3733 10 10.666 10H5.33268C4.62544 10 3.94716 10.281 3.44706 10.781C2.94697 11.2811 2.66602 11.9594 2.66602 12.6667V14M10.666 4.66667C10.666 6.13943 9.47211 7.33333 7.99935 7.33333C6.52659 7.33333 5.33268 6.13943 5.33268 4.66667C5.33268 3.19391 6.52659 2 7.99935 2C9.47211 2 10.666 3.19391 10.666 4.66667Z\"\r\n stroke=\"#009BF3\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </ng-template>\r\n </span>\r\n <div *ngIf=\"!last\" class=\"connector\"></div>\r\n </div>\r\n\r\n <div class=\"w-100 pb-2\">\r\n <div class=\"d-flex align-items-center flex-wrap\">\r\n <span class=\"maincard-label fw-bold\">{{ entry.author }}</span>\r\n <span *ngIf=\"entry.at\" class=\"timingtext mx-3\">{{ entry.at }}</span>\r\n <!-- The agent's verdict, whatever it is - not only escalated.\r\n Absent when the agent never reported. -->\r\n <span *ngIf=\"entry.agentStatus\" [ngClass]=\"agentPillClass(entry)\"\r\n class=\"timingtext fw-semibold ms-auto text-uppercase\"><span class=\"dot me-2\"\r\n [class.dot-amber]=\"entry.escalated\"\r\n [class.dot-grey]=\"!entry.escalated\"></span>{{ agentLabel(entry) }}</span>\r\n </div>\r\n\r\n <div *ngIf=\"entry.text\" class=\"contenttext fw-semibold mt-2\">{{ entry.text }}</div>\r\n\r\n <!-- Analysis entry: label/value pairs, then the expander -->\r\n <ng-container *ngIf=\"entry.kind === 'analysis'\">\r\n <div class=\"d-flex mt-3\">\r\n <span class=\"meta-label timingtext fw-semibold\">ISSUE CATEGORY</span>\r\n <span class=\"meta-value contenttext fw-semibold\">{{ entry.issueCategory }}</span>\r\n </div>\r\n <div class=\"d-flex mt-2\">\r\n <span class=\"meta-label timingtext fw-semibold\">ROOT CAUSE</span>\r\n <span class=\"meta-value contenttext fw-semibold\">{{ entry.rootCause }}</span>\r\n </div>\r\n <div class=\"analysis-link contenttext fw-semibold cursor-pointer mt-4\" (click)=\"toggleAnalysis(entry)\">\r\n <span class=\"chevron-down me-2\" [class.open]=\"entry.showAnalysis\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 14 14\" fill=\"none\">\r\n <path d=\"M3 5L7 9.5L11 5\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n {{ entry.showAnalysis ? 'Hide the full analysis' : 'Show the full analysis' }}\r\n </div>\r\n <div *ngIf=\"entry.showAnalysis && entry.analysis\" class=\"mt-3\">\r\n <div class=\"analysis-row d-flex mb-4\">\r\n <span class=\"dot analysis-dot me-3\"></span>\r\n <div class=\"timingtext fw-semibold\">\r\n <span class=\"analysis-label timingtext fw-semibold me-3\">CAUSE</span>{{ entry.analysis.cause }}\r\n </div>\r\n </div>\r\n <div class=\"analysis-row d-flex mb-4\">\r\n <span class=\"dot analysis-dot me-3\"></span>\r\n <div class=\"timingtext fw-semibold\">\r\n <span class=\"analysis-label timingtext fw-semibold me-3\">PROOF</span>{{ entry.analysis.proof }}\r\n </div>\r\n </div>\r\n <div class=\"analysis-row d-flex mb-4\">\r\n <span class=\"dot analysis-dot me-3\"></span>\r\n <div class=\"timingtext fw-semibold\">\r\n <span class=\"analysis-label timingtext fw-semibold me-3\">FIX</span>{{ entry.analysis.fix }}\r\n </div>\r\n </div>\r\n <div class=\"analysis-row d-flex\">\r\n <span class=\"dot analysis-dot me-3\"></span>\r\n <div class=\"timingtext fw-semibold\">\r\n <span class=\"analysis-label timingtext fw-semibold me-3\">NOTES</span>{{ entry.analysis.notes }}\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Issue identification, inside the child panel. Icons are copied\r\n from the V1 tab so the two tabs render identically. Only the\r\n live cycle carries it - a closed one has nothing to answer -\r\n so it still appears at most once per parent. -->\r\n <div *ngIf=\"showIssuePicker && isIdentifyChild(child)\" class=\"investigation fw-semibold mt-5\">\r\n Kindly choose the option below that corresponds to the issue you are\r\n experiencing in the store.\r\n <ul class=\"list-unstyled px-4\">\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('Internet Issues')\">\r\n <ng-container *ngTemplateOutlet=\"internetIcon\"></ng-container> <span class=\"px-3\">Internet Issues</span>\r\n </li>\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('Camera Issues')\">\r\n <ng-container *ngTemplateOutlet=\"cameraIcon\"></ng-container> <span class=\"px-3\">Camera Issues</span>\r\n </li>\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('System Issues')\">\r\n <ng-container *ngTemplateOutlet=\"systemIcon\"></ng-container> <span class=\"px-3\">System Issues</span>\r\n </li>\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('Store Operation Issues')\">\r\n <ng-container *ngTemplateOutlet=\"storeIcon\"></ng-container> <span class=\"px-3\">Store Operation Issues</span>\r\n </li>\r\n <li class=\"py-4 cursor-pointer\" (click)=\"choosenIssue('Application Issues')\">\r\n <ng-container *ngTemplateOutlet=\"appIcon\"></ng-container> <span class=\"px-3\">Application Issues</span>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n <div *ngIf=\"showIssueDetail && isIdentifyChild(child)\" class=\"mt-5\">\r\n <div class=\"openedissue d-flex justify-content-between align-items-center\">\r\n <span class=\"profile-label fw-semibold\">\r\n <ng-container *ngIf=\"selectedIssue === 'Internet Issues'\" [ngTemplateOutlet]=\"internetIcon\"></ng-container>\r\n <ng-container *ngIf=\"selectedIssue === 'Camera Issues'\" [ngTemplateOutlet]=\"cameraIcon\"></ng-container>\r\n <ng-container *ngIf=\"selectedIssue === 'System Issues'\" [ngTemplateOutlet]=\"systemIcon\"></ng-container>\r\n <ng-container *ngIf=\"selectedIssue === 'Store Operation Issues'\" [ngTemplateOutlet]=\"storeIcon\"></ng-container>\r\n <ng-container *ngIf=\"selectedIssue === 'Application Issues'\" [ngTemplateOutlet]=\"appIcon\"></ng-container>\r\n <span class=\"ms-2\">{{ selectedIssue }}</span>\r\n </span>\r\n <div (click)=\"choosenIssue('')\" class=\"maincard-content bg-white px-3 py-2 cursor-pointer\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\r\n <path d=\"M12.8327 6.99935H1.16602M1.16602 6.99935L6.99935 12.8327M1.16602 6.99935L6.99935 1.16602\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n\r\n <div class=\"maincard-content w-100 mt-2 px-4 py-2 pb-4\">\r\n <div class=\"maincard-label fw-semibold py-2\">Please select the relevant problem facing from the following</div>\r\n <div *ngFor=\"let issue of secondaryIssues; let index = index\"\r\n class=\"maincard-content d-flex justify-content-between align-items-center w-100 mt-2 px-4 py-4 cursor-pointer\"\r\n (click)=\"toggleCheckbox(index)\">\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <span><img class=\"pe-3\" src=\"./assets/tango/Images/Featured icon.png\"></span>\r\n <span class=\"headingtext\">{{ issue.name }}</span>\r\n </div>\r\n <div class=\"roundedcheck d-flex align-items-center\">\r\n <input type=\"checkbox\" [checked]=\"issue.checked\" class=\"p-0\">\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Hibernation + comment row, copied from the V1 tab\r\n (ticket-infra.component.html:333) so both read the same. -->\r\n <div class=\"form-group pt-6\">\r\n <label for=\"hibernationV2\" class=\"maincard-label fw-semibold mb-2\">Hibernation (in days) *</label>\r\n <div class=\"w-250px position-relative\">\r\n <div class=\"position-absolute translate-middle-y top-50 me-5 ps-3 ticketDays\">\r\n <span class=\"svg-icon toggle-off svg-icon-1\" [ngClass]=\"hibernationDays === 0 ? 'pe-none' : ''\" (click)=\"decreaseHibernation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M4.66602 10H16.3327\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n <input type=\"text\" class=\"form-control\" id=\"hibernationV2\" style=\"text-align: center;\"\r\n [value]=\"hibernationDays\" placeholder=\"0\" readonly />\r\n <div class=\"position-absolute translate-middle-y top-50 end-0 me-3\">\r\n <span class=\"svg-icon toggle-on svg-icon-1 ticketDays\" (click)=\"increaseHibernation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M10.4993 4.1665V15.8332M4.66602 9.99984H16.3327\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- The paperclip is inert: V1 posts to uploadAttachments/, and there\r\n is nowhere to upload to while the data is mocked. -->\r\n <div class=\"d-flex justify-content-between align-items-center mt-10 mb-5\">\r\n <input class=\"form-control\" type=\"text\" [(ngModel)]=\"comments\" placeholder=\"Add your comments..\">\r\n <button type=\"button\" class=\"cursor-pointer btn btn-default btn-outline ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M17.8666 9.20835L10.2082 16.8667C9.27005 17.8049 7.99757 18.332 6.67075 18.332C5.34393 18.332 4.07145 17.8049 3.13325 16.8667C2.19505 15.9285 1.66797 14.656 1.66797 13.3292C1.66797 12.0024 2.19505 10.7299 3.13325 9.79168L10.7916 2.13335C11.4171 1.50788 12.2654 1.15649 13.1499 1.15649C14.0345 1.15649 14.8828 1.50788 15.5082 2.13335C16.1337 2.75882 16.4851 3.60713 16.4851 4.49168C16.4851 5.37623 16.1337 6.22455 15.5082 6.85002L7.84158 14.5083C7.52885 14.8211 7.10469 14.9968 6.66242 14.9968C6.22014 14.9968 5.79598 14.8211 5.48325 14.5083C5.17051 14.1956 4.99482 13.7715 4.99482 13.3292C4.99482 12.8869 5.17051 12.4627 5.48325 12.15L12.5582 5.08335\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-primary ms-3\" [disabled]=\"!canSubmitIssue\" (click)=\"submitIssue()\">Submit</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<!-- Option icons, defined once because each is used twice: in the option list\r\n and again in the chosen-issue bar. Paths are copied verbatim from\r\n ticket-infra.component.html so the two tabs match pixel for pixel. -->\r\n<ng-template #internetIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M21 12C21 7.0293 16.9707 3 12 3C7.0293 3 3 7.0293 3 12C3 16.9707 7.0293 21 12 21\" fill=\"white\" />\r\n <path d=\"M12.9 3.04504C12.9 3.04504 15.6 6.60004 15.6 12L12.9 3.04504ZM11.1 20.955C11.1 20.955 8.4 17.4 8.4 12C8.4 6.60004 11.1 3.04504 11.1 3.04504M3.567 15.15H12H3.567ZM3.567 8.85004H20.433H3.567Z\" fill=\"white\" />\r\n <path d=\"M20.8911 17.3252C21.3357 17.5988 21.3078 18.2639 20.8506 18.3161L18.5403 18.578L17.5044 20.6588C17.2992 21.0719 16.6647 20.8694 16.5594 20.3582L15.4299 14.8538C15.3408 14.4218 15.7296 14.15 16.1049 14.3813L20.8911 17.3252Z\" fill=\"white\" />\r\n <path d=\"M20.25 12C20.25 12.4142 20.5858 12.75 21 12.75C21.4142 12.75 21.75 12.4142 21.75 12H20.25ZM12 21.75C12.4142 21.75 12.75 21.4142 12.75 21C12.75 20.5858 12.4142 20.25 12 20.25V21.75ZM13.4973 2.59142C13.2467 2.26156 12.7762 2.19725 12.4464 2.44778C12.1165 2.6983 12.0522 3.1688 12.3027 3.49866L13.4973 2.59142ZM14.85 12C14.85 12.4143 15.1858 12.75 15.6 12.75C16.0142 12.75 16.35 12.4143 16.35 12H14.85ZM10.5027 21.4087C10.7533 21.7385 11.2238 21.8028 11.5536 21.5523C11.8835 21.3018 11.9478 20.8313 11.6973 20.5014L10.5027 21.4087ZM11.6973 3.49866C11.9478 3.1688 11.8835 2.6983 11.5536 2.44778C11.2238 2.19725 10.7533 2.26156 10.5027 2.59142L11.6973 3.49866ZM3.567 14.4C3.15279 14.4 2.817 14.7358 2.817 15.15C2.817 15.5643 3.15279 15.9 3.567 15.9V14.4ZM12 15.9C12.4142 15.9 12.75 15.5643 12.75 15.15C12.75 14.7358 12.4142 14.4 12 14.4V15.9ZM3.567 8.10004C3.15279 8.10004 2.817 8.43583 2.817 8.85004C2.817 9.26426 3.15279 9.60004 3.567 9.60004V8.10004ZM20.433 9.60004C20.8472 9.60004 21.183 9.26426 21.183 8.85004C21.183 8.43583 20.8472 8.10004 20.433 8.10004V9.60004ZM20.8911 17.3252L21.2842 16.6865L21.284 16.6864L20.8911 17.3252ZM20.8506 18.3161L20.9351 19.0613L20.9357 19.0613L20.8506 18.3161ZM18.5403 18.578L18.4558 17.8328L18.0506 17.8787L17.8689 18.2438L18.5403 18.578ZM17.5044 20.6588L16.833 20.3246L16.8327 20.3252L17.5044 20.6588ZM16.5594 20.3582L15.8247 20.509L15.8248 20.5095L16.5594 20.3582ZM15.4299 14.8538L16.1646 14.703L16.1644 14.7023L15.4299 14.8538ZM16.1049 14.3813L15.7114 15.0198L15.712 15.0201L16.1049 14.3813ZM21.75 12C21.75 6.61509 17.3849 2.25 12 2.25V3.75C16.5565 3.75 20.25 7.44351 20.25 12H21.75ZM12 2.25C6.61509 2.25 2.25 6.61509 2.25 12H3.75C3.75 7.44351 7.44351 3.75 12 3.75V2.25ZM2.25 12C2.25 17.3849 6.61509 21.75 12 21.75V20.25C7.44351 20.25 3.75 16.5565 3.75 12H2.25ZM12.9 3.04504C12.3027 3.49866 12.3026 3.49846 12.3024 3.49828C12.3024 3.49823 12.3023 3.49806 12.3022 3.49797C12.3021 3.49779 12.302 3.49767 12.3019 3.4976C12.3018 3.49746 12.3019 3.49753 12.3021 3.49781C12.3025 3.49838 12.3036 3.4998 12.3053 3.50206C12.3086 3.50658 12.3144 3.51447 12.3225 3.52567C12.3387 3.54809 12.3641 3.58375 12.3973 3.63226C12.4638 3.72929 12.5616 3.87752 12.6805 4.07361C12.9183 4.46606 13.2393 5.04863 13.5614 5.79478C14.2061 7.28837 14.85 9.42526 14.85 12H16.35C16.35 9.17483 15.6439 6.83422 14.9386 5.20031C14.5857 4.38271 14.2317 3.73902 13.9633 3.29616C13.829 3.0746 13.7159 2.90291 13.6347 2.78443C13.5941 2.72518 13.5615 2.6792 13.5381 2.6469C13.5265 2.63075 13.5171 2.61802 13.5102 2.60876C13.5068 2.60413 13.504 2.60036 13.5018 2.59747C13.5007 2.59602 13.4998 2.5948 13.4991 2.59379C13.4987 2.59329 13.4983 2.59284 13.498 2.59244C13.4979 2.59224 13.4977 2.59199 13.4976 2.59189C13.4974 2.59165 13.4973 2.59142 12.9 3.04504ZM11.1 20.955C11.6973 20.5014 11.6974 20.5016 11.6976 20.5018C11.6976 20.5019 11.6977 20.502 11.6978 20.5021C11.6979 20.5023 11.698 20.5024 11.6981 20.5025C11.6982 20.5026 11.6981 20.5026 11.6979 20.5023C11.6975 20.5017 11.6964 20.5003 11.6948 20.498C11.6914 20.4935 11.6856 20.4856 11.6775 20.4744C11.6613 20.452 11.6359 20.4163 11.6027 20.3678C11.5362 20.2708 11.4384 20.1226 11.3195 19.9265C11.0817 19.534 10.7607 18.9515 10.4386 18.2053C9.79388 16.7117 9.15 14.5748 9.15 12H7.65C7.65 14.8253 8.35613 17.1659 9.06142 18.7998C9.41434 19.6174 9.76833 20.2611 10.0367 20.7039C10.171 20.9255 10.2841 21.0972 10.3653 21.2157C10.4059 21.2749 10.4385 21.3209 10.4619 21.3532C10.4735 21.3693 10.4829 21.3821 10.4898 21.3913C10.4932 21.396 10.496 21.3997 10.4982 21.4026C10.4993 21.4041 10.5002 21.4053 10.5009 21.4063C10.5013 21.4068 10.5017 21.4073 10.502 21.4076C10.5021 21.4078 10.5023 21.4081 10.5024 21.4082C10.5026 21.4084 10.5027 21.4087 11.1 20.955ZM9.15 12C9.15 9.42526 9.79388 7.28837 10.4386 5.79478C10.7607 5.04863 11.0817 4.46606 11.3195 4.07361C11.4384 3.87752 11.5362 3.72929 11.6027 3.63226C11.6359 3.58375 11.6613 3.54809 11.6775 3.52567C11.6856 3.51447 11.6914 3.50658 11.6948 3.50206C11.6964 3.4998 11.6975 3.49838 11.6979 3.49781C11.6981 3.49753 11.6982 3.49746 11.6981 3.4976C11.698 3.49767 11.6979 3.49779 11.6978 3.49797C11.6977 3.49806 11.6976 3.49823 11.6976 3.49828C11.6974 3.49846 11.6973 3.49866 11.1 3.04504C10.5027 2.59142 10.5026 2.59165 10.5024 2.59189C10.5023 2.59199 10.5021 2.59224 10.502 2.59244C10.5017 2.59284 10.5013 2.59329 10.5009 2.59379C10.5002 2.5948 10.4993 2.59602 10.4982 2.59747C10.496 2.60036 10.4932 2.60413 10.4898 2.60876C10.4829 2.61802 10.4735 2.63075 10.4619 2.6469C10.4385 2.6792 10.4059 2.72518 10.3653 2.78443C10.2841 2.90291 10.171 3.0746 10.0367 3.29616C9.76833 3.73902 9.41434 4.38271 9.06142 5.20031C8.35613 6.83422 7.65 9.17483 7.65 12H9.15ZM3.567 15.9H12V14.4H3.567V15.9ZM3.567 9.60004H20.433V8.10004H3.567V9.60004ZM20.498 17.9639C20.4792 17.9524 20.4575 17.9252 20.4597 17.8727C20.4609 17.8434 20.4715 17.7772 20.5297 17.7054C20.5961 17.6235 20.6889 17.5797 20.7655 17.5709L20.9357 19.0613C21.6167 18.9835 21.9384 18.4179 21.9584 17.9346C21.9776 17.4682 21.7476 16.9717 21.2842 16.6865L20.498 17.9639ZM20.7661 17.5709L18.4558 17.8328L18.6248 19.3232L20.9351 19.0613L20.7661 17.5709ZM17.8689 18.2438L16.833 20.3246L18.1758 20.9931L19.2117 18.9123L17.8689 18.2438ZM16.8327 20.3252C16.8668 20.2565 16.9395 20.1839 17.0398 20.1492C17.1277 20.1188 17.194 20.1316 17.2221 20.1405C17.272 20.1564 17.2896 20.1857 17.294 20.2069L15.8248 20.5095C15.9345 21.0419 16.322 21.4281 16.7668 21.5697C17.2286 21.7168 17.8707 21.6073 18.1761 20.9925L16.8327 20.3252ZM17.2941 20.2074L16.1646 14.703L14.6952 15.0046L15.8247 20.509L17.2941 20.2074ZM16.1644 14.7023C16.1723 14.7406 16.1666 14.883 16.0232 14.9833C15.88 15.0835 15.7446 15.0402 15.7114 15.0198L16.4984 13.7428C16.0899 13.4911 15.5724 13.468 15.1633 13.7543C14.754 14.0407 14.5984 14.535 14.6954 15.0053L16.1644 14.7023ZM15.712 15.0201L20.4982 17.964L21.284 16.6864L16.4978 13.7425L15.712 15.0201Z\" fill=\"#475467\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #cameraIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"20\" viewBox=\"0 0 24 20\" fill=\"none\">\r\n <path d=\"M23 17C23 17.5304 22.7893 18.0391 22.4142 18.4142C22.0391 18.7893 21.5304 19 21 19H3C2.46957 19 1.96086 18.7893 1.58579 18.4142C1.21071 18.0391 1 17.5304 1 17V6C1 5.46957 1.21071 4.96086 1.58579 4.58579C1.96086 4.21071 2.46957 4 3 4H7L9 1H15L17 4H21C21.5304 4 22.0391 4.21071 22.4142 4.58579C22.7893 4.96086 23 5.46957 23 6V17Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M12 15C14.2091 15 16 13.2091 16 11C16 8.79086 14.2091 7 12 7C9.79086 7 8 8.79086 8 11C8 13.2091 9.79086 15 12 15Z\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #systemIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"14\" viewBox=\"0 0 20 14\" fill=\"none\">\r\n <path d=\"M12 2V9H2V2H12ZM2 0C0.896875 0 0 0.896875 0 2V9C0 10.1031 0.896875 11 2 11H5.66563L5.33125 12H3C2.44688 12 2 12.4469 2 13C2 13.5531 2.44688 14 3 14H11C11.5531 14 12 13.5531 12 13C12 12.4469 11.5531 12 11 12H8.66562L8.33125 11H12C13.1031 11 14 10.1031 14 9V2C14 0.896875 13.1031 0 12 0H2ZM16.5 0C15.6719 0 15 0.671875 15 1.5V12.5C15 13.3281 15.6719 14 16.5 14H18.5C19.3281 14 20 13.3281 20 12.5V1.5C20 0.671875 19.3281 0 18.5 0H16.5ZM17 2H18C18.275 2 18.5 2.225 18.5 2.5C18.5 2.775 18.275 3 18 3H17C16.725 3 16.5 2.775 16.5 2.5C16.5 2.225 16.725 2 17 2ZM16.5 4.5C16.5 4.225 16.725 4 17 4H18C18.275 4 18.5 4.225 18.5 4.5C18.5 4.775 18.275 5 18 5H17C16.725 5 16.5 4.775 16.5 4.5ZM17.5 9.5C17.7652 9.5 18.0196 9.60536 18.2071 9.79289C18.3946 9.98043 18.5 10.2348 18.5 10.5C18.5 10.7652 18.3946 11.0196 18.2071 11.2071C18.0196 11.3946 17.7652 11.5 17.5 11.5C17.2348 11.5 16.9804 11.3946 16.7929 11.2071C16.6054 11.0196 16.5 10.7652 16.5 10.5C16.5 10.2348 16.6054 9.98043 16.7929 9.79289C16.9804 9.60536 17.2348 9.5 17.5 9.5Z\"\r\n fill=\"#475467\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #storeIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M3.08995 6.88369L3.02401 6.98669C2.30358 8.25557 3.06101 9.87945 4.46464 10.0662C4.58627 10.0811 4.70112 10.0892 4.8145 10.0892C5.55255 10.0892 6.20523 9.77229 6.65953 9.27917L7.21286 8.67854L7.76432 9.28089C8.21367 9.77171 8.8652 10.0892 9.60776 10.0892C10.3471 10.0892 11.0022 9.77137 11.4512 9.28089L12.0044 8.67665L12.5576 9.28089C13.0066 9.77137 13.6617 10.0892 14.401 10.0892C15.1404 10.0892 15.7954 9.77137 16.2445 9.28089L16.7977 8.67665L17.3508 9.28089C17.7999 9.77137 18.4549 10.0892 19.1943 10.0892C19.3041 10.0892 19.4223 10.0811 19.5433 10.0663C20.9772 9.87168 21.7355 8.16387 20.9155 6.88419C20.9154 6.88413 20.9154 6.88407 20.9154 6.88402L18.8056 3.59429L18.8056 3.59429L18.8046 3.59282C18.7582 3.52002 18.6649 3.46423 18.5584 3.46423H5.44307C5.3365 3.46423 5.24326 3.52002 5.19681 3.59282L5.19619 3.59379L3.08995 6.88369ZM4.81818 12.7499C4.71644 12.7499 4.616 12.7468 4.5169 12.741V16.6428V18.9642C4.5169 19.8211 5.22663 20.5357 6.11942 20.5357H17.882C18.7748 20.5357 19.4845 19.8211 19.4845 18.9642V16.6428V12.7415C19.3874 12.747 19.2893 12.7499 19.1906 12.7499C19.0022 12.7499 18.8157 12.7398 18.632 12.7202V16.6428V17.3928H17.882H6.11942H5.36942V16.6428V12.721C5.18866 12.74 5.00472 12.7499 4.81818 12.7499Z\"\r\n stroke=\"#475467\" stroke-width=\"1.5\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #appIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M8 1H1V8H8V1Z\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M19 1H12V8H19V1Z\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M19 12H12V19H19V12Z\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M8 12H1V19H8V12Z\" stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n</ng-template>\r\n", styles: [".card-label{font-size:18px!important}.issuecard{flex:1 1 0;min-width:0;border-radius:10px;border:1px solid var(--Gray-200, #EAECF0);padding:16px}.issuecard label,.issuecard .label{color:var(--Black, #101828);font-size:14px;line-height:20px}.issuecard.active{border:none!important;background:var(--Primary-25, #F6FCFF);box-shadow:0 0 0 4px #e9f7ff}.contenttext{color:var(--Gray-500, #667085);font-size:14px;line-height:20px}.maincard-content{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD)}.maincard-label{color:var(--Gray-900, #101828);font-size:16px;line-height:24px}.profile{width:24px;height:24px;overflow:hidden;border-radius:200px}.profile-label{font-size:12px;color:var(--Gray-500, #344054);line-height:16px}.timingtext{color:var(--Gray-500, #667085);font-size:12px;line-height:18px}.fw-bold-700{font-weight:700!important}.child-row{border-radius:10px;border:1px solid var(--Gray-200, #EAECF0);overflow:hidden}.child-head{background:#fff;gap:8px}.chevron{display:inline-flex;transition:transform .15s ease-in-out}.chevron.open{transform:rotate(90deg)}.chevron-down{display:inline-flex;transition:transform .15s ease-in-out}.chevron-down.open{transform:rotate(180deg)}.streams-pill{display:inline-flex;align-items:center;border-radius:16px;border:1px solid var(--Gray-200, #EAECF0);padding:2px 10px;white-space:nowrap}.meta-pill{display:inline-flex;align-items:center;white-space:nowrap}.cycle-id{color:var(--Black, #101828)}.dot{display:inline-block;width:6px;height:6px;border-radius:50%}.dot-amber{background:#f79009}.dot-grey{background:var(--Gray-500, #667085)}.child-body{background:var(--Gray-50, #F9FAFB)}.inner-card{border-radius:10px;border:1px solid var(--Gray-200, #EAECF0);background:#fff}.escalated-pill,.status-pill{display:inline-flex;align-items:center;border-radius:16px;font-size:10px;line-height:16px;padding:0 8px}.escalated-pill .dot,.status-pill .dot{width:5px;height:5px}.escalated-pill{background:#fffaeb;color:#b54708}.status-pill{background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054)}.avatar{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:var(--Primary-25, #F6FCFF);flex-shrink:0;overflow:hidden}.avatar-logo{width:18px;height:18px;object-fit:contain}.connector{width:0;height:100%;margin-top:6px;border-left:1px solid var(--Gray-200, #EAECF0)}.meta-label{width:130px;flex-shrink:0}.meta-value{color:var(--Gray-900, #101828)}.analysis-link{color:var(--Primary-700, #009BF3)}.ticketDays{cursor:pointer}.analysis-row .analysis-dot{margin-top:7px;flex-shrink:0;background:var(--Gray-400, #98A2B3)}.analysis-row .analysis-label{letter-spacing:.04em;color:var(--Black, #101828);background:var(--Gray-100, #F2F4F7);border-radius:4px;padding:1px 6px;white-space:nowrap}.investigation{color:var(--Gray-500, #344054);font-size:15px;line-height:24px}.openedissue{border-radius:6px;background:var(--Gray-50, #F9FAFB);padding:8px 12px}.headingtext{color:var(--Gray-700, #344054)!important;font-size:15px!important;font-weight:500;line-height:20px}.roundedcheck input[type=checkbox]{width:16px!important;height:16px!important;border-radius:10px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;border:1px solid var(--Gray-300, #D0D5DD);background:#fff;cursor:pointer}.roundedcheck input[type=checkbox]:checked{border-color:var(--Primary-700, #009BF3);background:var(--Primary-700, #009BF3);background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' d='M2.5 6.3l2.4 2.4 4.6-5'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:center}\n"] }]
300
+ }], ctorParameters: () => [{ type: i1.GlobalStateService }, { type: i2.TicketsService }, { type: i3.ActivatedRoute }], propDecorators: { selectedTab: [{
288
301
  type: Input
289
302
  }] } });
290
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlja2V0LWluZnJhLXYyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLXRpY2tldC1pbmZyYS9zcmMvbGliL2NvbXBvbmVudHMvdGlja2V0LWluZnJhLXYyL3RpY2tldC1pbmZyYS12Mi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS10aWNrZXQtaW5mcmEvc3JjL2xpYi9jb21wb25lbnRzL3RpY2tldC1pbmZyYS12Mi90aWNrZXQtaW5mcmEtdjIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7QUE2RDFDLDhFQUE4RTtBQUM5RSw0RUFBNEU7QUFDNUUsZ0ZBQWdGO0FBQ2hGLDhFQUE4RTtBQUM5RSxnRUFBZ0U7QUFDaEUsOEVBQThFO0FBRTlFLDRDQUE0QztBQUM1QyxNQUFNLGdCQUFnQixHQUFnQjtJQUNwQyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO0lBQ3RDLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO0lBQ25DLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO0lBQ3BDLEVBQUUsSUFBSSxFQUFFLG9CQUFvQixFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7SUFDeEMsRUFBRSxJQUFJLEVBQUUsd0JBQXdCLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtDQUM3QyxDQUFDO0FBRUYseUVBQXlFO0FBQ3pFLE1BQU0sWUFBWSxHQUFnQjtJQUNoQztRQUNFLFFBQVEsRUFBRSxnQ0FBZ0M7UUFD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QXNCLG1HQ2hPbkMsdzdwQ0FzVUE7OzRGRHRHYSxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0UscUJBQXFCO3VGQUt0QixXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5cclxudHlwZSBUaWNrZXRTdGF0dXMgPSAnb3BlbicgfCAnaW5wcm9ncmVzcycgfCAnY2xvc2VkJztcclxuXHJcbmludGVyZmFjZSBJc3N1ZUNhcmQgeyBuYW1lOiBzdHJpbmc7IGNvdW50OiBudW1iZXI7IH1cclxuXHJcbi8qKlxyXG4gKiBPbmUgZW50cnkgaW4gYSBjaGlsZCB0aWNrZXQncyB0aW1lbGluZS4gYGFuYWx5c2lzYCBhZGRzIHRoZSBlc2NhbGF0aW9uIHBpbGwsXHJcbiAqIHRoZSByb290IGNhdXNlIC8gaXNzdWUgY2F0ZWdvcnkgcGFpciBhbmQgdGhlIGV4cGFuZGFibGUgYW5hbHlzaXM7IGByYWlzZWRgIGlzXHJcbiAqIHBsYWluIHRleHQuXHJcbiAqL1xyXG50eXBlIEVudHJ5S2luZCA9ICdyYWlzZWQnIHwgJ2FuYWx5c2lzJztcclxuXHJcbmludGVyZmFjZSBUaW1lbGluZUVudHJ5IHtcclxuICBraW5kOiBFbnRyeUtpbmQ7XHJcbiAgYXV0aG9yOiBzdHJpbmc7XHJcbiAgYXQ6IHN0cmluZztcclxuICB0ZXh0OiBzdHJpbmc7XHJcbiAgZXNjYWxhdGVkPzogYm9vbGVhbjtcclxuICByb290Q2F1c2U/OiBzdHJpbmc7XHJcbiAgaXNzdWVDYXRlZ29yeT86IHN0cmluZztcclxuICAvKipcclxuICAgKiBSZXZlYWxlZCBieSBcIlNob3cgdGhlIGZ1bGwgYW5hbHlzaXNcIi4gVGhlIGZvdXIga2V5cyBtYXRjaCB3aGF0XHJcbiAgICogUFVUIC90aWNrZXRBZ2VudCB3cml0ZXMgb250byB0aGUgY2hpbGQncyBgYWdlbnRgIHN1Yi1kb2N1bWVudCwgc28gdGhpcyBtYXBzXHJcbiAgICogc3RyYWlnaHQgYWNyb3NzIHdoZW4gdGhlIGVuZHBvaW50IGlzIHdpcmVkIHVwLlxyXG4gICAqL1xyXG4gIGFuYWx5c2lzPzogeyBjYXVzZTogc3RyaW5nOyBwcm9vZjogc3RyaW5nOyBmaXg6IHN0cmluZzsgbm90ZXM6IHN0cmluZyB9O1xyXG4gIHNob3dBbmFseXNpcz86IGJvb2xlYW47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBIGN5Y2xlIGNoaWxkIG9mIHRoZSBwYXJlbnQgdGlja2V0LiBUaGUgYWNjb3JkaW9uIHJvdyBzaG93cyB0aGUgY3ljbGUgaWQgYW5kXHJcbiAqIGhvdyBtYW55IHN0cmVhbXMgd2VyZSBkb3duOyBleHBhbmRpbmcgaXQgcmV2ZWFscyB0aGUgdGltZWxpbmUuXHJcbiAqL1xyXG5pbnRlcmZhY2UgQ2hpbGRUaWNrZXQge1xyXG4gIGN5Y2xlSWQ6IHN0cmluZztcclxuICBzdHJlYW1zRG93bjogbnVtYmVyO1xyXG4gIHN0YXR1czogVGlja2V0U3RhdHVzO1xyXG4gIGV4cGFuZGVkOiBib29sZWFuO1xyXG4gIGVudHJpZXM6IFRpbWVsaW5lRW50cnlbXTtcclxufVxyXG5cclxuaW50ZXJmYWNlIFRpY2tldFJvdyB7XHJcbiAgdGlja2V0SWQ6IHN0cmluZztcclxuICBjcmVhdGVkQXQ6IHN0cmluZztcclxuICBpc3N1ZUNsb3NlZERhdGU6IHN0cmluZyB8IG51bGw7XHJcbiAgc3RhdHVzOiBUaWNrZXRTdGF0dXM7XHJcbiAgaXNzdWVTdGF0dXM6ICdpZGVudGlmaWVkJyB8ICdub3RpZGVudGlmaWVkJztcclxuICBwcmltYXJ5SXNzdWU6IHN0cmluZztcclxuICBzZWNvbmRhcnlJc3N1ZTogc3RyaW5nO1xyXG4gIGNvbW1lbnRzOiBudW1iZXI7XHJcbiAgLyoqXHJcbiAgICogU2V0IG9uY2UgdGhlIHN0b3JlIHN1Ym1pdHMgaXRzIG93biBpZGVudGlmaWNhdGlvbi4gU2VwYXJhdGUgZnJvbVxyXG4gICAqIGlzc3VlU3RhdHVzLCB3aGljaCBUYW5nbyBXYXRjaCBhbHNvIHNldHMgLSBhbiBpbnByb2dyZXNzIHRpY2tldCBjYW4gaGF2ZSBhXHJcbiAgICogVGFuZ28taWRlbnRpZmllZCByb290IGNhdXNlIGFuZCBzdGlsbCBiZSB3YWl0aW5nIG9uIHRoZSBzdG9yZS5cclxuICAgKi9cclxuICBzdG9yZVJlc3BvbmRlZD86IGJvb2xlYW47XHJcbiAgY2hpbGRyZW46IENoaWxkVGlja2V0W107XHJcbn1cclxuXHJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4vLyBURU1QT1JBUlkgTU9DSyBEQVRBIOKAlCBkZXNpZ24gc2NhZmZvbGRpbmcgb25seSwgbm8gbmV0d29yayBjYWxscyBhcmUgbWFkZS5cclxuLy8gRWFjaCBjb25zdGFudCBpcyBzaGFwZWQgbGlrZSB0aGUgcmVzcG9uc2UgaXQgc3RhbmRzIGluIGZvciwgc28gYSBibG9jayBjYW4gYmVcclxuLy8gc3dpdGNoZWQgdG8gbGl2ZSBkYXRhIG9uIGl0cyBvd24uIFN0YXJ0IHdpdGggTU9DS19USUNLRVRTOiBpbmZyYVYyTGlzdCgpIGlzXHJcbi8vIGFscmVhZHkgb24gdGlja2V0cy5zZXJ2aWNlLnRzIGFuZCBhbHJlYWR5IHNjb3BlZCBieSBzdG9yZUlkcy5cclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcblxyXG4vKiogL2luZnJhL3YyL3RpY2tldHMvaXNzdWVzLWRpc3RyaWJ1dGlvbiAqL1xyXG5jb25zdCBNT0NLX0lTU1VFX0NBUkRTOiBJc3N1ZUNhcmRbXSA9IFtcclxuICB7IG5hbWU6ICdJbnRlcm5ldCBJc3N1ZXMnLCBjb3VudDogMTUgfSxcclxuICB7IG5hbWU6ICdTeXN0ZW0gSXNzdWVzJywgY291bnQ6IDEgfSxcclxuICB7IG5hbWU6ICdDYW1lcmEgSXNzdWVzJywgY291bnQ6IDQ5IH0sXHJcbiAgeyBuYW1lOiAnQXBwbGljYXRpb24gSXNzdWVzJywgY291bnQ6IDAgfSxcclxuICB7IG5hbWU6ICdTdG9yZSBPcGVyYXRpb24gSXNzdWVzJywgY291bnQ6IDIgfSxcclxuXTtcclxuXHJcbi8qKiAvaW5mcmEvdjIvdGlja2V0cy9saXN0LCB3aXRoIGVhY2ggcGFyZW50J3MgY3ljbGUgY2hpbGRyZW4gaW5saW5lZC4gKi9cclxuY29uc3QgTU9DS19USUNLRVRTOiBUaWNrZXRSb3dbXSA9IFtcclxuICB7XHJcbiAgICB0aWNrZXRJZDogJ1RFX0lORl8xMS0xMjIwXzIwMjYwOTA3X2NhNDUxYicsXHJcbiAgICBjcmVhdGVkQXQ6ICcyMDI2LTA5LTA3VDEyOjA1OjAwWicsIGlzc3VlQ2xvc2VkRGF0ZTogJzIwMjYtMDktMDdUMjA6MzU6MDBaJyxcclxuICAgIHN0YXR1czogJ2Nsb3NlZCcsIGlzc3VlU3RhdHVzOiAnaWRlbnRpZmllZCcsXHJcbiAgICBwcmltYXJ5SXNzdWU6ICdDYW1lcmEgSXNzdWVzJywgc2Vjb25kYXJ5SXNzdWU6ICdzaGFyZWQgcG93ZXIvY2FibGUgZmFpbHVyZScsXHJcbiAgICBjb21tZW50czogMixcclxuICAgIGNoaWxkcmVuOiBbXHJcbiAgICAgIHtcclxuICAgICAgICBjeWNsZUlkOiAnY3ljXzExLTEyMjBfMjAyNjA5MDdfMjBfM2Q5ZDBjJyxcclxuICAgICAgICBzdHJlYW1zRG93bjogMixcclxuICAgICAgICBzdGF0dXM6ICdjbG9zZWQnLFxyXG4gICAgICAgIGV4cGFuZGVkOiB0cnVlLFxyXG4gICAgICAgIGVudHJpZXM6IFtcclxuICAgICAgICAgIHsga2luZDogJ3JhaXNlZCcsIGF1dGhvcjogJ1RhbmdvJywgYXQ6ICdTZXAgMDcsIDIwMjYgMTI6MDUgUE0nLCB0ZXh0OiAnV2UgaGF2ZSBub3QgcmVjZWl2ZWQgZGF0YSBmcm9tIHlvdXIgc3RvcmUuIFdlIGFyZSBjdXJyZW50bHkgaW52ZXN0aWdhdGluZyB0aGUgaXNzdWUuJyB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBraW5kOiAnYW5hbHlzaXMnLCBhdXRob3I6ICdUYW5nbyBXYXRjaCcsIGF0OiAnU2VwIDA3LCAyMDI2IDg6NDIgUE0nLCB0ZXh0OiAnJywgZXNjYWxhdGVkOiB0cnVlLFxyXG4gICAgICAgICAgICByb290Q2F1c2U6ICdCb3RoIGNhbWVyYXMgb2ZmbGluZSDigJQgc2hhcmVkIHBvd2VyL2NhYmxlIGZhaWx1cmUnLCBpc3N1ZUNhdGVnb3J5OiAnQ2FtZXJhJyxcclxuICAgICAgICAgICAgYW5hbHlzaXM6IHtcclxuICAgICAgICAgICAgICBjYXVzZTogXCJUaGUgY2FtZXJhIHN0cmVhbSBiMTMyMSAodGhlIHN0b3JlJ3MgdmlkZW8tcmVjb3JkaW5nIHN0cmVhbSkgd2VudCBzaWxlbnQgd2hpbGUgdGhlIHJlc3Qgb2YgdGhlIGFwcCB3YXMgaGVhbHRoeSAtIHZpZGVvIHN0b3BwZWQgYXQgMTk6MzUgSVNUIGFuZCByZWd1bGFyIGNhcHR1cmUgc3RvcHBlZCBhdCAyMTowMCBJU1QsIHNvIG5vIGRhdGEgdXBsb2FkZWQgZHVyaW5nIHRoZSAyMTozMC0yMjoxMyBJU1Qgd2luZG93LiBUcmlnZ2VyOiBhIG5ldHdvcmstb2ZmbGluZSBtb21lbnQgY2F1c2VkIGEgdmlkZW8tdXBsb2FkIGZhaWx1cmUgKGFwcCBsb2cgMjA1NyksIGFuZCB0aGUgYjEzMjEgd29ya2VyIGRpZCBub3QgcmVjb3ZlciBmcm9tIGl0LlwiLFxyXG4gICAgICAgICAgICAgIHByb29mOiBcIlRyYWNrZXIgZmlsZSBmb3IgYjEzMjE6IDY4IGZpbGVzIGdlbmVyYXRlZCBhbGwgcHVzaGVkIGJ5IDIxOjAwIHRoZW4gbm8gbmV3IGZpbGVzOyB2aWRlbyB0cmFja2VyIGxhc3QgcHVzaCAxOTozNS4gUGVlciBzdHJlYW1zIGtlcHQgZ2VuZXJhdGluZyBhbmQgcHVzaGluZyB0aHJvdWdoIDIyOjAwIElTVCAoNzQtNzUgZmlsZXMgZWFjaCkuIFRoZSBiMTMyMSB3b3JrZXIgKFBJRCAyNzIyNCkgaXMgc3RpbGwgcnVubmluZyBidXQgaGFzIGJ1cm5lZCA1Njg3cyBvZiBDUFUgdnMgfjMwMHMgb24gcGVlcnMgLSBzdHVjayBpbiBhIGxvb3AsIG5vdCBkb2luZyB3b3JrLiBBcHAgZGlhcnkgbG9ncyBvbmUgJ1ZpZGVvIEZpbGUgVXBsb2FkIEZhaWxlZCcgZXZlbnQgKGxvZyAyMDU3KSB0aGF0IGFsaWducyB3aXRoIHRoZSAxOTozNSBzdGFsbC5cIixcclxuICAgICAgICAgICAgICBmaXg6ICdSZW1vdGUtc3VwcG9ydCByZXN0YXJ0IHRoZSBUYW5nb0V5ZSBTdHJlYW1lciBhcHAgbm93IHRvIGNsZWFyIHRoZSBzdHVjayB3b3JrZXI7IHF1ZXVlZCBmaWxlcyBmbHVzaCBvbiByZXN0YXJ0LiBFbmdpbmVlcmluZzogdmlkZW8tdXBsb2FkIHBhdGggbGFja3MgcmV0cnkgcmVzaWxpZW5jZSAtIG9uZSBvZmZsaW5lIG1vbWVudCB3ZWRnZWQgdGhlIHdvcmtlciBmb3JldmVyOyBwZWVyIGltYWdlIHdvcmtlcnMgc3Vydml2ZWQgdGhlIHNhbWUgb2ZmbGluZSBldmVudHMuJyxcclxuICAgICAgICAgICAgICBub3RlczogJ1NlcGFyYXRlIGNvLWV4aXN0aW5nIEZBSUw6IHN0b3JlIFdpRmkgZmxhcHBpbmcgNTF4IHRvZGF5IGJldHdlZW4gU1RDLTVHLTBBRkEgKGNsb3VkLWV4cGVjdGVkKSBhbmQgU1RDLTVHLTVCQkUgKGxvZyAxMDUwKTsgMzggb2ZmbGluZSBldmVudHMgKGxvZyAyMDA3KSBhbmQgMiBvZmZsaW5lLXNpZGUgbmV0d29yayBjaGFuZ2VzIChsb2cgMjA1MCkgLSBmaWVsZC1vcHMgbXVzdCBmaXggdGhlIHN0b3JlIFdpRmkgcm91dGVyLiBDaHJvbmljOiAyMiBBcHBsaWNhdGlvbiBFcnJvciAxMDAwIGNyYXNoZXMgaW4gMyBkYXlzIG9uIHRoaXMgUEMgKDE1IHN0LWxhdW5jaCArIDcgcGFyZW50KS4nLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzaG93QW5hbHlzaXM6IGZhbHNlLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHsga2luZDogJ3JhaXNlZCcsIGF1dGhvcjogJ1RhbmdvJywgYXQ6ICdTZXAgMDcsIDIwMjYgODozNSBQTScsIHRleHQ6ICdUaGFuayB5b3UgZm9yIHlvdXIgYXNzaXN0YW5jZS4gV2UgaGF2ZSByZWNlaXZlZCB0aGUgZGF0YSBmcm9tIHlvdXIgU3RvcmUuJyB9LFxyXG4gICAgICAgIF0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBjeWNsZUlkOiAnY3ljXzExLTEyMjBfMjAyNjA5MDdfMTJfODI1OWRhJyxcclxuICAgICAgICBzdHJlYW1zRG93bjogMixcclxuICAgICAgICBzdGF0dXM6ICdjbG9zZWQnLFxyXG4gICAgICAgIGV4cGFuZGVkOiBmYWxzZSxcclxuICAgICAgICBlbnRyaWVzOiBbXHJcbiAgICAgICAgICB7IGtpbmQ6ICdyYWlzZWQnLCBhdXRob3I6ICdUYW5nbycsIGF0OiAnU2VwIDA3LCAyMDI2IDEyOjA1IFBNJywgdGV4dDogJ1dlIGhhdmUgbm90IHJlY2VpdmVkIGRhdGEgZnJvbSB5b3VyIHN0b3JlLiBXZSBhcmUgY3VycmVudGx5IGludmVzdGlnYXRpbmcgdGhlIGlzc3VlLicgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAga2luZDogJ2FuYWx5c2lzJywgYXV0aG9yOiAnVGFuZ28gV2F0Y2gnLCBhdDogJ1NlcCAwNywgMjAyNiAyOjI3IFBNJywgdGV4dDogJycsIGVzY2FsYXRlZDogdHJ1ZSxcclxuICAgICAgICAgICAgcm9vdENhdXNlOiAnUEMgbG9zdCBwb3dlciBkdXJpbmcgc3RvcmUgaG91cnMnLCBpc3N1ZUNhdGVnb3J5OiAnT3BlcmF0aW9uYWwnLFxyXG4gICAgICAgICAgICBhbmFseXNpczoge1xyXG4gICAgICAgICAgICAgIGNhdXNlOiAnVGhlIHJlY29yZGluZyBQQyBsb3N0IG1haW5zIHBvd2VyIGF0IDExOjI4IElTVCBhbmQgc3RheWVkIGRvd24gdW50aWwgMTI6MDMgSVNULCBzbyBib3RoIHN0cmVhbXMgc3RvcHBlZCB0b2dldGhlci4gTm8gdXBsb2FkIGF0dGVtcHRzIHdlcmUgbG9nZ2VkIGluIHRoZSB3aW5kb3csIHdoaWNoIHJ1bGVzIG91dCBhIG5ldHdvcmsgZmF1bHQuJyxcclxuICAgICAgICAgICAgICBwcm9vZjogJ0xhc3QgaGVhcnRiZWF0IDExOjI3OjQ2LCBuZXh0IDEyOjAzOjExIC0gYSBjbGVhbiAzNSBtaW51dGUgZ2FwIHdpdGggbm8gc2h1dGRvd24gZXZlbnQgYmVmb3JlaGFuZCwgY29uc2lzdGVudCB3aXRoIHRoZSBzb2NrZXQgYmVpbmcgY3V0IHJhdGhlciB0aGFuIGEgc29mdHdhcmUgc3RvcC4gQm90aCBwZWVyIHN0cmVhbXMgc3RvcHBlZCBpbiB0aGUgc2FtZSBzZWNvbmQuJyxcclxuICAgICAgICAgICAgICBmaXg6ICdTdG9yZSB0ZWFtIHRvIGNvbmZpcm0gdGhlIFBDIGlzIG9uIGEgcHJvdGVjdGVkIHNvY2tldC4gRW5naW5lZXJpbmc6IG5vIHJldHJ5IG5lZWRlZCBoZXJlLCB0aGUgYXBwIHJlY292ZXJlZCBvbiBpdHMgb3duIG9uY2UgcG93ZXIgcmV0dXJuZWQuJyxcclxuICAgICAgICAgICAgICBub3RlczogJ1RoaXJkIHBvd2VyIGludGVycnVwdGlvbiBhdCB0aGlzIHN0b3JlIGluIDMwIGRheXMsIGFsbCBkdXJpbmcgdHJhZGluZyBob3Vycy4gV29ydGggcmFpc2luZyB3aXRoIGZpZWxkLW9wcyByYXRoZXIgdGhhbiB0cmVhdGluZyBhcyBhbiBhcHAgaXNzdWUuJyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc2hvd0FuYWx5c2lzOiBmYWxzZSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7IGtpbmQ6ICdyYWlzZWQnLCBhdXRob3I6ICdUYW5nbycsIGF0OiAnU2VwIDA3LCAyMDI2IDM6MjAgUE0nLCB0ZXh0OiAnVGhhbmsgeW91IGZvciB5b3VyIGFzc2lzdGFuY2UuIFdlIGhhdmUgcmVjZWl2ZWQgdGhlIGRhdGEgZnJvbSB5b3VyIFN0b3JlLicgfSxcclxuICAgICAgICBdLFxyXG4gICAgICB9LFxyXG4gICAgXSxcclxuICB9LFxyXG4gIHtcclxuICAgIHRpY2tldElkOiAnVEVfSU5GXzExLTEyMjBfMjAyNjA5MDZfYmIyMjA0JyxcclxuICAgIGNyZWF0ZWRBdDogJzIwMjYtMDktMDZUMDk6MTU6MDBaJywgaXNzdWVDbG9zZWREYXRlOiAnMjAyNi0wOS0wNlQwOTo1MDowMFonLFxyXG4gICAgc3RhdHVzOiAnY2xvc2VkJywgaXNzdWVTdGF0dXM6ICdpZGVudGlmaWVkJyxcclxuICAgIHByaW1hcnlJc3N1ZTogJ0ludGVybmV0IElzc3VlcycsIHNlY29uZGFyeUlzc3VlOiAnSVNQIG91dGFnZScsXHJcbiAgICBjb21tZW50czogMSxcclxuICAgIGNoaWxkcmVuOiBbXHJcbiAgICAgIHtcclxuICAgICAgICBjeWNsZUlkOiAnY3ljXzExLTEyMjBfMjAyNjA5MDZfMDlfN2ExMWM0JyxcclxuICAgICAgICBzdHJlYW1zRG93bjogMSxcclxuICAgICAgICBzdGF0dXM6ICdjbG9zZWQnLFxyXG4gICAgICAgIGV4cGFuZGVkOiB0cnVlLFxyXG4gICAgICAgIGVudHJpZXM6IFtcclxuICAgICAgICAgIHsga2luZDogJ3JhaXNlZCcsIGF1dGhvcjogJ1RhbmdvJywgYXQ6ICdTZXAgMDYsIDIwMjYgMDk6MTUgQU0nLCB0ZXh0OiAnV2UgaGF2ZSBub3QgcmVjZWl2ZWQgZGF0YSBmcm9tIHlvdXIgc3RvcmUuIFdlIGFyZSBjdXJyZW50bHkgaW52ZXN0aWdhdGluZyB0aGUgaXNzdWUuJyB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBraW5kOiAnYW5hbHlzaXMnLCBhdXRob3I6ICdUYW5nbyBXYXRjaCcsIGF0OiAnU2VwIDA2LCAyMDI2IDA5OjMxIEFNJywgdGV4dDogJycsIGVzY2FsYXRlZDogdHJ1ZSxcclxuICAgICAgICAgICAgcm9vdENhdXNlOiAnU3RvcmUgb2ZmbGluZSDigJQgSVNQIG91dGFnZSBpbiB0aGUgYXJlYScsIGlzc3VlQ2F0ZWdvcnk6ICdOZXR3b3JrJyxcclxuICAgICAgICAgICAgYW5hbHlzaXM6IHtcclxuICAgICAgICAgICAgICBjYXVzZTogJ1RoZSBzdG9yZSBsb3N0IGl0cyB1cGxpbmsgYXQgMDk6MTUgSVNULiBUaGUgYXBwIHN0YXllZCBoZWFsdGh5IGFuZCBrZXB0IGdlbmVyYXRpbmcgZmlsZXMgbG9jYWxseSwgYnV0IG5vdGhpbmcgY291bGQgYmUgcHVzaGVkIHVudGlsIHRoZSBsaW5rIHJldHVybmVkIGF0IDA5OjQ4IElTVC4nLFxyXG4gICAgICAgICAgICAgIHByb29mOiAnRm91ciBvdGhlciBzdG9yZXMgb24gdGhlIHNhbWUgcHJvdmlkZXIgaW4gdGhpcyBjaXR5IHJlcG9ydGVkIHRoZSBpZGVudGljYWwgd2luZG93LiBMb2NhbCB0cmFja2VyIGZpbGVzIGNvbnRpbnVlZCB0byBpbmNyZW1lbnQgdGhyb3VnaG91dCwgYW5kIGFsbCBxdWV1ZWQgZmlsZXMgZmx1c2hlZCB3aXRoaW4gdGhyZWUgbWludXRlcyBvZiB0aGUgbGluayByZXR1cm5pbmcuJyxcclxuICAgICAgICAgICAgICBmaXg6ICdObyBhY3Rpb24gbmVlZGVkIGF0IHRoZSBzdG9yZSAtIHRoZSBiYWNrbG9nIGNsZWFyZWQgb24gaXRzIG93bi4gRW5naW5lZXJpbmc6IHRoZSBvZmZsaW5lIHF1ZXVlIGJlaGF2ZWQgY29ycmVjdGx5IGhlcmUsIG5vIGNoYW5nZXMgcmVxdWlyZWQuJyxcclxuICAgICAgICAgICAgICBub3RlczogJ1Byb3ZpZGVyLXNpZGUgb3V0YWdlLCBzZWNvbmQgb25lIHRoaXMgcXVhcnRlci4gSWYgaXQgcmVjdXJzLCB3b3J0aCBhc2tpbmcgdGhlIGJyYW5kIHdoZXRoZXIgYSBmYWlsb3ZlciBjb25uZWN0aW9uIGlzIGp1c3RpZmllZCBmb3IgdGhpcyBzaXRlLicsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNob3dBbmFseXNpczogZmFsc2UsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgeyBraW5kOiAncmFpc2VkJywgYXV0aG9yOiAnVGFuZ28nLCBhdDogJ1NlcCAwNiwgMjAyNiAwOTo1MCBBTScsIHRleHQ6ICdUaGFuayB5b3UgZm9yIHlvdXIgYXNzaXN0YW5jZS4gV2UgaGF2ZSByZWNlaXZlZCB0aGUgZGF0YSBmcm9tIHlvdXIgU3RvcmUuJyB9LFxyXG4gICAgICAgIF0sXHJcbiAgICAgIH0sXHJcbiAgICBdLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdGlja2V0SWQ6ICdURV9JTkZfMTEtMTIyMF8yMDI2MDkyMl82NjUwMGInLFxyXG4gICAgY3JlYXRlZEF0OiAnMjAyNi0wOS0yMlQxNDoxMDowMFonLCBpc3N1ZUNsb3NlZERhdGU6IG51bGwsXHJcbiAgICBzdGF0dXM6ICdpbnByb2dyZXNzJywgaXNzdWVTdGF0dXM6ICdpZGVudGlmaWVkJyxcclxuICAgIHByaW1hcnlJc3N1ZTogJ0NhbWVyYSBJc3N1ZXMnLCBzZWNvbmRhcnlJc3N1ZTogJ0NhbWVyYSBhbmdsZSBjaGFuZ2VkJyxcclxuICAgIGNvbW1lbnRzOiAzLFxyXG4gICAgY2hpbGRyZW46IFtcclxuICAgICAge1xyXG4gICAgICAgIGN5Y2xlSWQ6ICdjeWNfMTEtMTIyMF8yMDI2MDkyMl8xNF9jNDhlMjEnLFxyXG4gICAgICAgIHN0cmVhbXNEb3duOiAxLFxyXG4gICAgICAgIHN0YXR1czogJ2lucHJvZ3Jlc3MnLFxyXG4gICAgICAgIGV4cGFuZGVkOiB0cnVlLFxyXG4gICAgICAgIGVudHJpZXM6IFtcclxuICAgICAgICAgIHsga2luZDogJ3JhaXNlZCcsIGF1dGhvcjogJ1RhbmdvJywgYXQ6ICdTZXAgMjIsIDIwMjYgMDI6MTAgUE0nLCB0ZXh0OiAnV2UgaGF2ZSBub3QgcmVjZWl2ZWQgZGF0YSBmcm9tIHlvdXIgc3RvcmUuIFdlIGFyZSBjdXJyZW50bHkgaW52ZXN0aWdhdGluZyB0aGUgaXNzdWUuJyB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBraW5kOiAnYW5hbHlzaXMnLCBhdXRob3I6ICdUYW5nbyBXYXRjaCcsIGF0OiAnU2VwIDIyLCAyMDI2IDI6NDggUE0nLCB0ZXh0OiAnJywgZXNjYWxhdGVkOiB0cnVlLFxyXG4gICAgICAgICAgICByb290Q2F1c2U6ICdDYW1lcmEgMiBhbmdsZSBzaGlmdGVkIGF3YXkgZnJvbSB0aGUgZW50cmFuY2UnLCBpc3N1ZUNhdGVnb3J5OiAnQ2FtZXJhJyxcclxuICAgICAgICAgICAgYW5hbHlzaXM6IHtcclxuICAgICAgICAgICAgICBjYXVzZTogJ0NhbWVyYSAyIGlzIHN0aWxsIHN0cmVhbWluZywgYnV0IHRoZSBmcmFtaW5nIG1vdmVkIHJvdWdobHkgMzAgZGVncmVlcyBsZWZ0IGF0IDE0OjA1IElTVCwgc28gdGhlIGVudHJhbmNlIGlzIG91dCBvZiBzaG90IGFuZCBmb290ZmFsbCBjb3VudHMgaGF2ZSBkcm9wcGVkIHRvIHplcm8gd2hpbGUgdGhlIHN0cmVhbSBpdHNlbGYgbG9va3MgaGVhbHRoeS4nLFxyXG4gICAgICAgICAgICAgIHByb29mOiAnRmlsZSBjb3VudHMgYXJlIG5vcm1hbCAtIDcxIGZpbGVzIGluIHRoZSBsYXN0IGhvdXIsIGluIGxpbmUgd2l0aCBwZWVycy4gVGhlIGJhc2VsaW5lIGltYWdlIGNvbXBhcmlzb24gZmFpbHMgZnJvbSAxNDowNSBvbndhcmQsIGFuZCB0aGUgZW50cmFuY2UgbWFzayBubyBsb25nZXIgb3ZlcmxhcHMgYW55IHRyYWNrZWQgcmVnaW9uLicsXHJcbiAgICAgICAgICAgICAgZml4OiAnU3RvcmUgdGVhbSB0byByZXNlYXQgdGhlIGNhbWVyYSBhZ2FpbnN0IHRoZSBtb3VudGluZyBtYXJrIGFuZCBjb25maXJtIGFnYWluc3QgdGhlIGJhc2VsaW5lIGltYWdlLiBObyBhcHAgcmVzdGFydCBuZWVkZWQuJyxcclxuICAgICAgICAgICAgICBub3RlczogJ1NlY29uZCBhbmdsZSBjaGFuZ2Ugb24gdGhpcyBjYW1lcmEgaW4gc2l4IHdlZWtzLiBJZiBpdCByZWN1cnMsIHRoZSBicmFja2V0IHNob3VsZCBiZSBjaGVja2VkIHJhdGhlciB0aGFuIHRoZSBjYW1lcmEuJyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc2hvd0FuYWx5c2lzOiBmYWxzZSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXSxcclxuICAgICAgfSxcclxuICAgIF0sXHJcbiAgfSxcclxuICB7XHJcbiAgICB0aWNrZXRJZDogJ1RFX0lORl8xMS0xMjIwXzIwMjYwOTIzXzc3ODEyYScsXHJcbiAgICBjcmVhdGVkQXQ6ICcyMDI2LTA5LTIzVDA3OjQ1OjAwWicsIGlzc3VlQ2xvc2VkRGF0ZTogbnVsbCxcclxuICAgIHN0YXR1czogJ29wZW4nLCBpc3N1ZVN0YXR1czogJ25vdGlkZW50aWZpZWQnLFxyXG4gICAgcHJpbWFyeUlzc3VlOiAnJywgc2Vjb25kYXJ5SXNzdWU6ICcnLFxyXG4gICAgY29tbWVudHM6IDAsXHJcbiAgICBjaGlsZHJlbjogW1xyXG4gICAgICB7XHJcbiAgICAgICAgY3ljbGVJZDogJ2N5Y18xMS0xMjIwXzIwMjYwOTIzXzA3XzVmMjBiOCcsXHJcbiAgICAgICAgc3RyZWFtc0Rvd246IDIsXHJcbiAgICAgICAgc3RhdHVzOiAnb3BlbicsXHJcbiAgICAgICAgZXhwYW5kZWQ6IHRydWUsXHJcbiAgICAgICAgZW50cmllczogW1xyXG4gICAgICAgICAgeyBraW5kOiAncmFpc2VkJywgYXV0aG9yOiAnVGFuZ28nLCBhdDogJ1NlcCAyMywgMjAyNiAwNzo0NSBBTScsIHRleHQ6ICdXZSBoYXZlIG5vdCByZWNlaXZlZCBkYXRhIGZyb20geW91ciBzdG9yZS4gV2UgYXJlIGN1cnJlbnRseSBpbnZlc3RpZ2F0aW5nIHRoZSBpc3N1ZS4nIH0sXHJcbiAgICAgICAgXSxcclxuICAgICAgfSxcclxuICAgIF0sXHJcbiAgfSxcclxuXTtcclxuXHJcbi8qKiAvaW5mcmEvUHJpbWFyeVJlYXNvbnMg4oCUIHRoZSBzZWNvbmRhcnkgcmVhc29ucyBvZmZlcmVkIHVuZGVyIGVhY2ggcHJpbWFyeSAqL1xyXG5jb25zdCBNT0NLX1NFQ09OREFSWV9SRUFTT05TOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7XHJcbiAgJ0ludGVybmV0IElzc3Vlcyc6IFsnTm8gaW50ZXJuZXQgY29ubmVjdGlvbicsICdJbnRlcm1pdHRlbnQgY29ubmVjdGl2aXR5JywgJ0xvdyBiYW5kd2lkdGgnXSxcclxuICAnQ2FtZXJhIElzc3Vlcyc6IFsnQ2FtZXJhIG5vdCBwb3dlcmVkIG9uJywgJ0xlbnMgYmx1cnJlZCBvciBkaXJ0eScsICdDYW1lcmEgYW5nbGUgY2hhbmdlZCddLFxyXG4gICdTeXN0ZW0gSXNzdWVzJzogWydOVlIgLyBEVlIgaXMgb2ZmJywgJ0hhcmQgZGlzayBmdWxsJywgJ1N5c3RlbSByZXN0YXJ0ZWQnXSxcclxuICAnU3RvcmUgT3BlcmF0aW9uIElzc3Vlcyc6IFsnU3RvcmUgY2xvc2VkJywgJ1Jlbm92YXRpb24gaW4gcHJvZ3Jlc3MnLCAnUG93ZXIgc2h1dGRvd24nXSxcclxuICAnQXBwbGljYXRpb24gSXNzdWVzJzogWydFZGdlIGFwcCBub3QgcnVubmluZycsICdBcHAgdmVyc2lvbiBvdXRkYXRlZCddLFxyXG59O1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItdGlja2V0LWluZnJhLXYyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGlja2V0LWluZnJhLXYyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vdGlja2V0LWluZnJhLXYyLmNvbXBvbmVudC5zY3NzJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRpY2tldEluZnJhVjJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRUYWI6IGFueTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcbiAgaGVhZGVyRmlsdGVyOiBhbnk7XHJcblxyXG4gIHRpY2tldENhcmQ6IElzc3VlQ2FyZFtdID0gTU9DS19JU1NVRV9DQVJEUztcclxuICB0aWNrZXRMaXN0OiBUaWNrZXRSb3dbXSA9IE1PQ0tfVElDS0VUUztcclxuICBzZWxlY3RDYXJkID0gMDtcclxuICB0aWNrZXRJbmZvOiBUaWNrZXRSb3cgfCBudWxsID0gTU9DS19USUNLRVRTWzBdO1xyXG5cclxuICAvLyBJc3N1ZSBpZGVudGlmaWNhdGlvbiwgbWlycm9yaW5nIHRoZSBWMSB0YWIncyBmbG93LlxyXG4gIHNlbGVjdGVkSXNzdWUgPSAnJztcclxuICBzZWNvbmRhcnlJc3N1ZXM6IHsgbmFtZTogc3RyaW5nOyBjaGVja2VkOiBib29sZWFuIH1bXSA9IFtdO1xyXG4gIGhpYmVybmF0aW9uRGF5cyA9IDA7XHJcbiAgY29tbWVudHMgPSAnJztcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBnczogR2xvYmFsU3RhdGVTZXJ2aWNlKSB7fVxyXG5cclxuICAvLyBWMSBhbHNvIGhhcyBhIHJlZnJlc2h0aWNrZXQgYnJhbmNoIGhlcmUgdGhhdCBvbWl0cyB0aGUgc2VsZWN0ZWRJc3N1ZSBjaGVjayxcclxuICAvLyB3aGljaCBtYWtlcyB0aGUgcGlja2VyIGFuZCB0aGUgY2hvc2VuLWlzc3VlIGJsb2NrIHJlbmRlciB0b2dldGhlci4gVGhlcmUgaXNcclxuICAvLyBubyByZWZyZXNoIHRpY2tldCBpbiBWMiwgc28gdGhhdCBicmFuY2ggaXMgbm90IHJlcHJvZHVjZWQuXHJcbiAgLy8gU2hvd24gb24gYW55IHRpY2tldCB0aGF0IGlzIHN0aWxsIGxpdmUgYW5kIHRoYXQgdGhlIHN0b3JlIGhhcyBub3QgYW5zd2VyZWRcclxuICAvLyB5ZXQsIHNvIGl0IGFsc28gYXBwZWFycyB1bmRlciBhbiBpbnByb2dyZXNzIHRpY2tldCB3aG9zZSByb290IGNhdXNlIFRhbmdvXHJcbiAgLy8gV2F0Y2ggaGFzIGFscmVhZHkgZm91bmQuXHJcbiAgcHJpdmF0ZSBnZXQgY2FuSWRlbnRpZnkoKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCB0ID0gdGhpcy50aWNrZXRJbmZvO1xyXG4gICAgcmV0dXJuICEhdCAmJiAhdC5zdG9yZVJlc3BvbmRlZCAmJiB0LnN0YXR1cyAhPT0gJ2Nsb3NlZCc7XHJcbiAgfVxyXG5cclxuICBnZXQgc2hvd0lzc3VlUGlja2VyKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5jYW5JZGVudGlmeSAmJiB0aGlzLnNlbGVjdGVkSXNzdWUgPT09ICcnOyB9XHJcbiAgZ2V0IHNob3dJc3N1ZURldGFpbCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuY2FuSWRlbnRpZnkgJiYgdGhpcy5zZWxlY3RlZElzc3VlICE9PSAnJzsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWUucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChkYXRhKSB7IHRoaXMuaGVhZGVyRmlsdGVyID0gZGF0YTsgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzaG93VGlja2V0KGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0Q2FyZCA9IGluZGV4O1xyXG4gICAgdGhpcy50aWNrZXRJbmZvID0gdGhpcy50aWNrZXRMaXN0W2luZGV4XSA/PyBudWxsO1xyXG4gICAgdGhpcy5jaG9vc2VuSXNzdWUoJycpO1xyXG4gIH1cclxuXHJcbiAgLy8gUm93cyBvcGVuIGluZGVwZW5kZW50bHksIHNvIHNldmVyYWwgY2FuIGJlIGV4cGFuZGVkIGF0IG9uY2UuXHJcbiAgdG9nZ2xlQ2hpbGQoY2hpbGQ6IENoaWxkVGlja2V0KTogdm9pZCB7IGNoaWxkLmV4cGFuZGVkID0gIWNoaWxkLmV4cGFuZGVkOyB9XHJcbiAgdG9nZ2xlQW5hbHlzaXMoZW50cnk6IFRpbWVsaW5lRW50cnkpOiB2b2lkIHsgZW50cnkuc2hvd0FuYWx5c2lzID0gIWVudHJ5LnNob3dBbmFseXNpczsgfVxyXG5cclxuICAvKiogVGFuZ28gYW5kIFRhbmdvIFdhdGNoIGdldCB0aGUgcHJvZHVjdCBsb2dvOyBhbnlvbmUgZWxzZSBnZXRzIGEgcGVyc29uIGljb24uICovXHJcbiAgaXNUYW5nb0F1dGhvcihhdXRob3I6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGF1dGhvci50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoJ3RhbmdvJyk7XHJcbiAgfVxyXG5cclxuICAvKiogUm9vdCBjYXVzZSBpZGVudGlmaWVkIG9uIHRoZSBtb3N0IHJlY2VudCBjaGlsZCAtIGNoaWxkcmVuIHJ1biBuZXdlc3QgZmlyc3QuICovXHJcbiAgcHJpdmF0ZSByZWNlbnRSb290Q2F1c2UodDogVGlja2V0Um93KTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGVudHJpZXMgPSB0LmNoaWxkcmVuWzBdPy5lbnRyaWVzID8/IFtdO1xyXG4gICAgcmV0dXJuIGVudHJpZXMuZmluZCgoZSkgPT4gZS5raW5kID09PSAnYW5hbHlzaXMnICYmICEhZS5yb290Q2F1c2UpPy5yb290Q2F1c2UgPz8gJyc7XHJcbiAgfVxyXG5cclxuICAvLyBXb3JkaW5nIGlzIHN0YXR1cy1kcml2ZW4gcmF0aGVyIHRoYW4gc3RvcmVkIHRleHQsIG1hdGNoaW5nIHRoZSBWMSB0YWIuIEFcclxuICAvLyBjbG9zZWQgdGlja2V0IHNob3dzIHdoYXQgd2FzIGFjdHVhbGx5IGZvdW5kLCBmYWxsaW5nIGJhY2sgdG8gdGhlIGdlbmVyaWNcclxuICAvLyBjbG9zZSBtZXNzYWdlIHdoZW4gbm8gY2hpbGQgY2FycmllcyBhIHJvb3QgY2F1c2UuXHJcbiAgY2FyZE1lc3NhZ2UodDogVGlja2V0Um93KTogc3RyaW5nIHtcclxuICAgIGlmICh0LnN0YXR1cyA9PT0gJ2Nsb3NlZCcpIHtcclxuICAgICAgcmV0dXJuIHRoaXMucmVjZW50Um9vdENhdXNlKHQpIHx8ICdUaGFuayB5b3UgZm9yIHlvdXIgYXNzaXN0YW5jZS4gV2UgaGF2ZSByZWNlaXZlZCB0aGUgZGF0YSBmcm9tIHlvdXIgU3RvcmUuJztcclxuICAgIH1cclxuICAgIGlmICh0Lmlzc3VlU3RhdHVzID09PSAnbm90aWRlbnRpZmllZCcpIHsgcmV0dXJuICdXZSBoYXZlIG5vdCByZWNlaXZlZCBkYXRhIGZyb20geW91ciBzdG9yZS4gV2UgYXJlIGN1cnJlbnRseSBpbnZlc3RpZ2F0aW5nIHRoZSBpc3N1ZS4nOyB9XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBzdGF0dXNCYWRnZShzdGF0dXM6IFRpY2tldFN0YXR1cyk6IHN0cmluZyB7XHJcbiAgICBpZiAoc3RhdHVzID09PSAnY2xvc2VkJykgeyByZXR1cm4gJ2JhZGdlIGJhZGdlLWxpZ2h0LXN1Y2Nlc3MnOyB9XHJcbiAgICByZXR1cm4gc3RhdHVzID09PSAnaW5wcm9ncmVzcycgPyAnYmFkZ2UgYmFkZ2UtbGlnaHQtcHJpbWFyeScgOiAnYmFkZ2UgYmFkZ2UtbGlnaHQtd2FybmluZyc7XHJcbiAgfVxyXG5cclxuICAvLyAnJyBjbGVhcnMgdGhlIHNlbGVjdGlvbiBhbmQgcmV0dXJucyB0byB0aGUgb3B0aW9uIGxpc3Qg4oCUIHNhbWUgY29udHJhY3QgYXMgVjEuXHJcbiAgY2hvb3Nlbklzc3VlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJc3N1ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5zZWNvbmRhcnlJc3N1ZXMgPSAoTU9DS19TRUNPTkRBUllfUkVBU09OU1t2YWx1ZV0gPz8gW10pLm1hcCgobmFtZSkgPT4gKHsgbmFtZSwgY2hlY2tlZDogZmFsc2UgfSkpO1xyXG4gICAgdGhpcy5oaWJlcm5hdGlvbkRheXMgPSAwO1xyXG4gICAgdGhpcy5jb21tZW50cyA9ICcnO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQ2hlY2tib3goaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5zZWNvbmRhcnlJc3N1ZXNbaW5kZXhdLmNoZWNrZWQgPSAhdGhpcy5zZWNvbmRhcnlJc3N1ZXNbaW5kZXhdLmNoZWNrZWQ7XHJcbiAgfVxyXG5cclxuICAvLyBNaXJyb3JzIGRlY3Jlc2VDb3VudCgpIC8gaW5jcmVhc2VDb3VudCgpIG9uIHRoZSBWMSB0YWIuXHJcbiAgZGVjcmVhc2VIaWJlcm5hdGlvbigpOiB2b2lkIHsgaWYgKHRoaXMuaGliZXJuYXRpb25EYXlzID4gMCkgeyB0aGlzLmhpYmVybmF0aW9uRGF5cyAtPSAxOyB9IH1cclxuICBpbmNyZWFzZUhpYmVybmF0aW9uKCk6IHZvaWQgeyB0aGlzLmhpYmVybmF0aW9uRGF5cyArPSAxOyB9XHJcblxyXG4gIGdldCBjYW5TdWJtaXRJc3N1ZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnNlY29uZGFyeUlzc3Vlcy5zb21lKChyKSA9PiByLmNoZWNrZWQpO1xyXG4gIH1cclxuXHJcbiAgLy8gTW9ja2VkOiB3cml0ZXMgc3RyYWlnaHQgb250byB0aGUgc2VsZWN0ZWQgcm93IHNvIHRoZSBjaGFuZ2Ugc3Vydml2ZXNcclxuICAvLyBzd2l0Y2hpbmcgdGlja2V0cy4gTm8gcmVxdWVzdCBpcyBtYWRlLlxyXG4gIHN1Ym1pdElzc3VlKCk6IHZvaWQge1xyXG4gICAgY29uc3QgdCA9IHRoaXMudGlja2V0SW5mbztcclxuICAgIGlmICghdCB8fCAhdGhpcy5jYW5TdWJtaXRJc3N1ZSkgeyByZXR1cm47IH1cclxuICAgIGNvbnN0IHJlYXNvbnMgPSB0aGlzLnNlY29uZGFyeUlzc3Vlcy5maWx0ZXIoKHIpID0+IHIuY2hlY2tlZCkubWFwKChyKSA9PiByLm5hbWUpO1xyXG4gICAgdC5pc3N1ZVN0YXR1cyA9ICdpZGVudGlmaWVkJztcclxuICAgIHQuc3RvcmVSZXNwb25kZWQgPSB0cnVlO1xyXG4gICAgdC5wcmltYXJ5SXNzdWUgPSB0aGlzLnNlbGVjdGVkSXNzdWU7XHJcbiAgICB0LnNlY29uZGFyeUlzc3VlID0gcmVhc29ucy5qb2luKCcsICcpO1xyXG4gICAgdC5jb21tZW50cyA9IHQuY29tbWVudHMgKyAxO1xyXG5cclxuICAgIC8vIFRoZSBpZGVudGlmaWNhdGlvbiBsYW5kcyBvbiB0aGUgY2hpbGQgdGhlIHBpY2tlciB3YXMgc2hvd24gdW5kZXIuXHJcbiAgICBjb25zdCBjaGlsZCA9IHQuY2hpbGRyZW5bdC5jaGlsZHJlbi5sZW5ndGggLSAxXTtcclxuICAgIGlmIChjaGlsZCkge1xyXG4gICAgICBjb25zdCBwYXJ0cyA9IFtgSXNzdWUgaWRlbnRpZmllZCBhcyAke3RoaXMuc2VsZWN0ZWRJc3N1ZX0gLSAke3Quc2Vjb25kYXJ5SXNzdWV9LmBdO1xyXG4gICAgICBpZiAodGhpcy5oaWJlcm5hdGlvbkRheXMgPiAwKSB7IHBhcnRzLnB1c2goYEhpYmVybmF0ZWQgZm9yICR7dGhpcy5oaWJlcm5hdGlvbkRheXN9IGRheSR7dGhpcy5oaWJlcm5hdGlvbkRheXMgPT09IDEgPyAnJyA6ICdzJ30uYCk7IH1cclxuICAgICAgaWYgKHRoaXMuY29tbWVudHMudHJpbSgpKSB7IHBhcnRzLnB1c2godGhpcy5jb21tZW50cy50cmltKCkpOyB9XHJcbiAgICAgIGNoaWxkLmVudHJpZXMucHVzaCh7IGtpbmQ6ICdyYWlzZWQnLCBhdXRob3I6ICdTdG9yZScsIGF0OiBuZXcgRGF0ZSgpLnRvTG9jYWxlU3RyaW5nKCdlbi1HQicsIHsgZGF5OiAnMi1kaWdpdCcsIG1vbnRoOiAnc2hvcnQnLCB5ZWFyOiAnbnVtZXJpYycsIGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOiAnMi1kaWdpdCcgfSksIHRleHQ6IHBhcnRzLmpvaW4oJyAnKSB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNob29zZW5Jc3N1ZSgnJyk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC0zXCI+XHJcbiAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmQtbGFiZWwgbWItMlwiPkluZnJhIFRpY2tldHMgdjI8L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaGVhZGVyRmlsdGVyPy5kYXRlPy5zdGFydERhdGUgPT09IGhlYWRlckZpbHRlcj8uZGF0ZT8uZW5kRGF0ZVwiIGNsYXNzPVwidGV4dC1zdWIgbWItMlwiPkFuIG92ZXJ2aWV3IG9mIGFsbCB0aGUgdGlja2V0cyBmb3IgdGlsbCB7eyBoZWFkZXJGaWx0ZXI/LmRhdGU/LmVuZERhdGUgfCBjdXN0b21EYXRlRm9ybWF0IH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImhlYWRlckZpbHRlcj8uZGF0ZT8uc3RhcnREYXRlICE9PSBoZWFkZXJGaWx0ZXI/LmRhdGU/LmVuZERhdGVcIiBjbGFzcz1cInRleHQtc3ViIG1iLTJcIj5BbiBvdmVydmlldyBvZiBhbGwgdGhlIHRpY2tldHMgZm9yIHt7IGhlYWRlckZpbHRlcj8uZGF0ZT8uc3RhcnREYXRlIHwgY3VzdG9tRGF0ZUZvcm1hdCB9fSAtIHt7IGhlYWRlckZpbHRlcj8uZGF0ZT8uZW5kRGF0ZSB8IGN1c3RvbURhdGVGb3JtYXQgfX08L3NwYW4+XHJcbiAgICAgICAgPC9oMz5cclxuICAgICAgICA8IS0tIEZpbHRlciBhbmQgRXhwb3J0IHJlbmRlciBpbmVydDogbGliLWZpbHRlcnMgbmVlZHMgcmVhbCBmYWNldHMsIGFuZFxyXG4gICAgICAgICAgICAgdGhlcmUgaXMgbm90aGluZyB0byBleHBvcnQgd2hpbGUgdGhlIGRhdGEgaXMgbW9ja2VkLiAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IG14LTIgYnRuLW91dGxpbmUgYnRuLW91dGxpbmUtZGVmYXVsdCByb3VuZGVkLTMgdGV4dC1ub3dyYXAgYm9yZGVyLXZhbFwiPlxyXG4gICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yLjUgNUgxNy41TTUgMTBIMTVNOC4zMzMzMyAxNUgxMS42NjY3XCIgc3Ryb2tlPVwiIzEwMTgyOFwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj5GaWx0ZXI8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBteC0yIGJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zIHRleHQtbm93cmFwIGJvcmRlci12YWxcIj5cclxuICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTcuNSAxMi41VjE1LjgzMzNDMTcuNSAxNi4yNzU0IDE3LjMyNDQgMTYuNjk5MyAxNy4wMTE4IDE3LjAxMThDMTYuNjk5MyAxNy4zMjQ0IDE2LjI3NTQgMTcuNSAxNS44MzMzIDE3LjVINC4xNjY2N0MzLjcyNDY0IDE3LjUgMy4zMDA3MiAxNy4zMjQ0IDIuOTg4MTYgMTcuMDExOEMyLjY3NTU5IDE2LjY5OTMgMi41IDE2LjI3NTQgMi41IDE1LjgzMzNWMTIuNU0xNC4xNjY3IDYuNjY2NjdMMTAgMi41TTEwIDIuNUw1LjgzMzMzIDYuNjY2NjdNMTAgMi41VjEyLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMTAxODI4XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPkV4cG9ydDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi03XCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGlzc3VlIG9mIHRpY2tldENhcmRcIiBjbGFzcz1cImlzc3VlY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdj48c3BhbiBjbGFzcz1cInRpdGxlXCI+e3sgaXNzdWUuY291bnQgfX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsIGZ3LXNlbWlib2xkXCI+e3sgaXNzdWUubmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYWluY2FyZC1jb250ZW50XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcC0xMFwiPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gTGVmdDogdW5jaGFuZ2VkIGZyb20gdGhlIFRpY2tldHMgdGFiLiAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNiBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGRhdGEgb2YgdGlja2V0TGlzdDsgbGV0IGluZGV4ID0gaW5kZXhcIiBjbGFzcz1cImlzc3VlY2FyZCB3LTEwMCBtYi00XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dUaWNrZXQoaW5kZXgpXCIgW25nQ2xhc3NdPVwic2VsZWN0Q2FyZCA9PT0gaW5kZXggPyAnYWN0aXZlJyA6ICcnXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbmNhcmQtbGFiZWwgZnctYm9sZCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGltZyBzcmM9XCIuL2Fzc2V0cy90YW5nby9JbWFnZXMvdGlja2V0LnN2Z1wiPiB7eyBkYXRhLnRpY2tldElkIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnR0ZXh0IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciB0ZXh0LWNlbnRlciBmdy1zZW1pYm9sZCBweC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAuNjY2NyAxLjMzMzk4VjQuMDAwNjVNNS4zMzMzMyAxLjMzMzk4VjQuMDAwNjVNMiA2LjY2NzMySDE0TTMuMzMzMzMgMi42NjczMkgxMi42NjY3QzEzLjQwMyAyLjY2NzMyIDE0IDMuMjY0MjcgMTQgNC4wMDA2NVYxMy4zMzRDMTQgMTQuMDcwNCAxMy40MDMgMTQuNjY3MyAxMi42NjY3IDE0LjY2NzNIMy4zMzMzM0MyLjU5Njk1IDE0LjY2NzMgMiAxNC4wNzA0IDIgMTMuMzM0VjQuMDAwNjVDMiAzLjI2NDI3IDIuNTk2OTUgMi42NjczMiAzLjMzMzMzIDIuNjY3MzJaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtMVwiPnt7IGRhdGEuY3JlYXRlZEF0IHwgZGF0ZTogJ2RkLU1NLXl5eXknIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZGF0YS5pc3N1ZUNsb3NlZERhdGVcIiBjbGFzcz1cImNvbnRlbnR0ZXh0IGZ3LXNlbWlib2xkIHBlLTNcIj4tIHt7IGRhdGEuaXNzdWVDbG9zZWREYXRlIHwgZGF0ZTogJ2RkLU1NLXl5eXknIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNhcmRNZXNzYWdlKGRhdGEpXCIgY2xhc3M9XCJtYi01IGNvbnRlbnR0ZXh0IGZ3LXNlbWlib2xkXCI+e3sgY2FyZE1lc3NhZ2UoZGF0YSkgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFjYXJkTWVzc2FnZShkYXRhKVwiIGNsYXNzPVwibWItNSBjb250ZW50dGV4dCBmdy1zZW1pYm9sZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmUgaXMgY3VycmVudGx5IGVuY291bnRlcmluZyBhIDxzcGFuIGNsYXNzPVwiZnctYm9sZC03MDBcIj57eyBkYXRhLnByaW1hcnlJc3N1ZSB9fTwvc3Bhbj4gd2hpY2ggaXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnctYm9sZC03MDBcIj57eyBkYXRhLnNlY29uZGFyeUlzc3VlIH19Ljwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZSBkLWZsZXggYWxpZ24taXRlbXMtY2VudHJlIGp1c3RpZnktY29udGVudC1jZW50cmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ltYWdlcy91c2VyUHJvZmlsZS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29udGVudHRleHQgZnctc2VtaWJvbGQgcHgtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTQgMTBDMTQgMTAuMzUzNiAxMy44NTk1IDEwLjY5MjggMTMuNjA5NSAxMC45NDI4QzEzLjM1OTQgMTEuMTkyOSAxMy4wMjAzIDExLjMzMzMgMTIuNjY2NyAxMS4zMzMzSDQuNjY2NjdMMiAxNFYzLjMzMzMzQzIgMi45Nzk3MSAyLjE0MDQ4IDIuNjQwNTcgMi4zOTA1MiAyLjM5MDUyQzIuNjQwNTcgMi4xNDA0OCAyLjk3OTcxIDIgMy4zMzMzMyAySDEyLjY2NjdDMTMuMDIwMyAyIDEzLjM1OTQgMi4xNDA0OCAxMy42MDk1IDIuMzkwNTJDMTMuODU5NSAyLjY0MDU3IDE0IDIuOTc5NzEgMTQgMy4zMzMzM1YxMFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm14LTFcIj57eyBkYXRhLmNvbW1lbnRzIH19PC9zcGFuPiBjb21tZW50c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJzdGF0dXNCYWRnZShkYXRhLnN0YXR1cylcIj57eyBkYXRhLnN0YXR1cyB8IHRpdGxlY2FzZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gUmlnaHQ6IHRoZSBzZWxlY3RlZCBwYXJlbnQsIHdpdGggaXRzIGN5Y2xlIGNoaWxkcmVuIGFzIGFuIGFjY29yZGlvbiAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aWNrZXRJbmZvXCIgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluY2FyZC1sYWJlbCBmdy1ib2xkIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aW1nIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ltYWdlcy90aWNrZXQuc3ZnXCI+PHNwYW4gY2xhc3M9XCJteC0yXCI+e3sgdGlja2V0SW5mby50aWNrZXRJZCB9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gQ3ljbGUgY2hpbGRyZW4uIFJvd3Mgb3BlbiBpbmRlcGVuZGVudGx5LiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjaGlsZCBvZiB0aWNrZXRJbmZvLmNoaWxkcmVuOyBsZXQgbGFzdENoaWxkID0gbGFzdFwiIGNsYXNzPVwiY2hpbGQtcm93IG1iLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaWxkLWhlYWQgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlciBweC00IHB5LTNcIiAoY2xpY2spPVwidG9nZ2xlQ2hpbGQoY2hpbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LXdyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXZyb24gbWUtM1wiIFtjbGFzcy5vcGVuXT1cImNoaWxkLmV4cGFuZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk01IDIuNUw5LjUgN0w1IDExLjVcIiBzdHJva2U9XCIjMTAxODI4XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldGEtcGlsbCBjeWNsZS1pZCB0aW1pbmd0ZXh0IGZ3LXNlbWlib2xkIG1lLTNcIj57eyBjaGlsZC5jeWNsZUlkIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RyZWFtcy1waWxsIHRpbWluZ3RleHQgbWUtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDI0IDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjMgMTdDMjMgMTcuNTMwNCAyMi43ODkzIDE4LjAzOTEgMjIuNDE0MiAxOC40MTQyQzIyLjAzOTEgMTguNzg5MyAyMS41MzA0IDE5IDIxIDE5SDNDMi40Njk1NyAxOSAxLjk2MDg2IDE4Ljc4OTMgMS41ODU3OSAxOC40MTQyQzEuMjEwNzEgMTguMDM5MSAxIDE3LjUzMDQgMSAxN1Y2QzEgNS40Njk1NyAxLjIxMDcxIDQuOTYwODYgMS41ODU3OSA0LjU4NTc5QzEuOTYwODYgNC4yMTA3MSAyLjQ2OTU3IDQgMyA0SDdMOSAxSDE1TDE3IDRIMjFDMjEuNTMwNCA0IDIyLjAzOTEgNC4yMTA3MSAyMi40MTQyIDQuNTg1NzlDMjIuNzg5MyA0Ljk2MDg2IDIzIDUuNDY5NTcgMjMgNlYxN1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNGMDQ0MzhcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnctYm9sZCBteC0xXCI+e3sgY2hpbGQuc3RyZWFtc0Rvd24gfX08L3NwYW4+IHN0cmVhbXMgZG93blxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwic3RhdHVzQmFkZ2UoY2hpbGQuc3RhdHVzKVwiIGNsYXNzPVwiZmxleC1zaHJpbmstMFwiPnt7IGNoaWxkLnN0YXR1cyB8IHRpdGxlY2FzZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY2hpbGQuZXhwYW5kZWRcIiBjbGFzcz1cImNoaWxkLWJvZHkgcHgtNSBweS01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5uZXItY2FyZCBweC01IHB5LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBlbnRyeSBvZiBjaGlsZC5lbnRyaWVzOyBsZXQgbGFzdCA9IGxhc3Q7IGxldCBmaXJzdCA9IGZpcnN0XCIgY2xhc3M9XCJkLWZsZXhcIiBbY2xhc3MucHQtNV09XCIhZmlyc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXIgbWUtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhdmF0YXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwiaXNUYW5nb0F1dGhvcihlbnRyeS5hdXRob3IpOyBlbHNlIHBlcnNvbkljb25cIiBjbGFzcz1cImF2YXRhci1sb2dvXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSW1hZ2VzL3RhbmdvRXllLW1hcmsuc3ZnXCIgYWx0PVwiVGFuZ29cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3BlcnNvbkljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMy4zMzI3IDE0VjEyLjY2NjdDMTMuMzMyNyAxMS45NTk0IDEzLjA1MTcgMTEuMjgxMSAxMi41NTE2IDEwLjc4MUMxMi4wNTE1IDEwLjI4MSAxMS4zNzMzIDEwIDEwLjY2NiAxMEg1LjMzMjY4QzQuNjI1NDQgMTAgMy45NDcxNiAxMC4yODEgMy40NDcwNiAxMC43ODFDMi45NDY5NyAxMS4yODExIDIuNjY2MDIgMTEuOTU5NCAyLjY2NjAyIDEyLjY2NjdWMTRNMTAuNjY2IDQuNjY2NjdDMTAuNjY2IDYuMTM5NDMgOS40NzIxMSA3LjMzMzMzIDcuOTk5MzUgNy4zMzMzM0M2LjUyNjU5IDcuMzMzMzMgNS4zMzI2OCA2LjEzOTQzIDUuMzMyNjggNC42NjY2N0M1LjMzMjY4IDMuMTkzOTEgNi41MjY1OSAyIDcuOTk5MzUgMkM5LjQ3MjExIDIgMTAuNjY2IDMuMTkzOTEgMTAuNjY2IDQuNjY2NjdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhbGFzdFwiIGNsYXNzPVwiY29ubmVjdG9yXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIHBiLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWFpbmNhcmQtbGFiZWwgZnctYm9sZFwiPnt7IGVudHJ5LmF1dGhvciB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImVudHJ5LmF0XCIgY2xhc3M9XCJ0aW1pbmd0ZXh0IG14LTNcIj57eyBlbnRyeS5hdCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImVudHJ5LmVzY2FsYXRlZFwiIGNsYXNzPVwiZXNjYWxhdGVkLXBpbGwgdGltaW5ndGV4dCBmdy1zZW1pYm9sZCBtcy1hdXRvXCI+PHNwYW4gY2xhc3M9XCJkb3QgZG90LWFtYmVyIG1lLTJcIj48L3NwYW4+RVNDQUxBVEVEPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImVudHJ5LnRleHRcIiBjbGFzcz1cImNvbnRlbnR0ZXh0IGZ3LXNlbWlib2xkIG10LTJcIj57eyBlbnRyeS50ZXh0IH19PC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBBbmFseXNpcyBlbnRyeTogbGFiZWwvdmFsdWUgcGFpcnMsIHRoZW4gdGhlIGV4cGFuZGVyIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVudHJ5LmtpbmQgPT09ICdhbmFseXNpcydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG10LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZXRhLWxhYmVsIHRpbWluZ3RleHQgZnctc2VtaWJvbGRcIj5JU1NVRSBDQVRFR09SWTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZXRhLXZhbHVlIGNvbnRlbnR0ZXh0IGZ3LXNlbWlib2xkXCI+e3sgZW50cnkuaXNzdWVDYXRlZ29yeSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZXRhLWxhYmVsIHRpbWluZ3RleHQgZnctc2VtaWJvbGRcIj5ST09UIENBVVNFPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldGEtdmFsdWUgY29udGVudHRleHQgZnctc2VtaWJvbGRcIj57eyBlbnRyeS5yb290Q2F1c2UgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFuYWx5c2lzLWxpbmsgY29udGVudHRleHQgZnctc2VtaWJvbGQgY3Vyc29yLXBvaW50ZXIgbXQtNFwiIChjbGljayk9XCJ0b2dnbGVBbmFseXNpcyhlbnRyeSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGV2cm9uLWRvd24gbWUtMlwiIFtjbGFzcy5vcGVuXT1cImVudHJ5LnNob3dBbmFseXNpc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0zIDVMNyA5LjVMMTEgNVwiIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGVudHJ5LnNob3dBbmFseXNpcyA/ICdIaWRlIHRoZSBmdWxsIGFuYWx5c2lzJyA6ICdTaG93IHRoZSBmdWxsIGFuYWx5c2lzJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJlbnRyeS5zaG93QW5hbHlzaXMgJiYgZW50cnkuYW5hbHlzaXNcIiBjbGFzcz1cIm10LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFuYWx5c2lzLXJvdyBkLWZsZXggbWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3QgYW5hbHlzaXMtZG90IG1lLTNcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltaW5ndGV4dCBmdy1zZW1pYm9sZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYW5hbHlzaXMtbGFiZWwgdGltaW5ndGV4dCBmdy1zZW1pYm9sZCBtZS0zXCI+Q0FVU0U8L3NwYW4+e3sgZW50cnkuYW5hbHlzaXMuY2F1c2UgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFuYWx5c2lzLXJvdyBkLWZsZXggbWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3QgYW5hbHlzaXMtZG90IG1lLTNcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltaW5ndGV4dCBmdy1zZW1pYm9sZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYW5hbHlzaXMtbGFiZWwgdGltaW5ndGV4dCBmdy1zZW1pYm9sZCBtZS0zXCI+UFJPT0Y8L3NwYW4+e3sgZW50cnkuYW5hbHlzaXMucHJvb2YgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFuYWx5c2lzLXJvdyBkLWZsZXggbWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3QgYW5hbHlzaXMtZG90IG1lLTNcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltaW5ndGV4dCBmdy1zZW1pYm9sZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYW5hbHlzaXMtbGFiZWwgdGltaW5ndGV4dCBmdy1zZW1pYm9sZCBtZS0zXCI+RklYPC9zcGFuPnt7IGVudHJ5LmFuYWx5c2lzLmZpeCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYW5hbHlzaXMtcm93IGQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3QgYW5hbHlzaXMtZG90IG1lLTNcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltaW5ndGV4dCBmdy1zZW1pYm9sZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYW5hbHlzaXMtbGFiZWwgdGltaW5ndGV4dCBmdy1zZW1pYm9sZCBtZS0zXCI+Tk9URVM8L3NwYW4+e3sgZW50cnkuYW5hbHlzaXMubm90ZXMgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gSXNzdWUgaWRlbnRpZmljYXRpb24sIGluc2lkZSB0aGUgY2hpbGQgcGFuZWwuIEljb25zIGFyZSBjb3BpZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlIFYxIHRhYiBzbyB0aGUgdHdvIHRhYnMgcmVuZGVyIGlkZW50aWNhbGx5LiBPbmx5IHRoZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCBjaGlsZCBjYXJyaWVzIGl0LCBzbyBpdCBhcHBlYXJzIG9uY2UgcGVyIHBhcmVudC4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dJc3N1ZVBpY2tlciAmJiBsYXN0Q2hpbGRcIiBjbGFzcz1cImludmVzdGlnYXRpb24gZnctc2VtaWJvbGQgbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLaW5kbHkgY2hvb3NlIHRoZSBvcHRpb24gYmVsb3cgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgaXNzdWUgeW91IGFyZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlcmllbmNpbmcgaW4gdGhlIHN0b3JlLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LXVuc3R5bGVkIHB4LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInB5LTQgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiY2hvb3Nlbklzc3VlKCdJbnRlcm5ldCBJc3N1ZXMnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnRlcm5ldEljb25cIj48L25nLWNvbnRhaW5lcj4gPHNwYW4gY2xhc3M9XCJweC0zXCI+SW50ZXJuZXQgSXNzdWVzPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInB5LTQgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiY2hvb3Nlbklzc3VlKCdDYW1lcmEgSXNzdWVzJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2FtZXJhSWNvblwiPjwvbmctY29udGFpbmVyPiA8c3BhbiBjbGFzcz1cInB4LTNcIj5DYW1lcmEgSXNzdWVzPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInB5LTQgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiY2hvb3Nlbklzc3VlKCdTeXN0ZW0gSXNzdWVzJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3lzdGVtSWNvblwiPjwvbmctY29udGFpbmVyPiA8c3BhbiBjbGFzcz1cInB4LTNcIj5TeXN0ZW0gSXNzdWVzPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInB5LTQgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiY2hvb3Nlbklzc3VlKCdTdG9yZSBPcGVyYXRpb24gSXNzdWVzJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3RvcmVJY29uXCI+PC9uZy1jb250YWluZXI+IDxzcGFuIGNsYXNzPVwicHgtM1wiPlN0b3JlIE9wZXJhdGlvbiBJc3N1ZXM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicHktNCBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJjaG9vc2VuSXNzdWUoJ0FwcGxpY2F0aW9uIElzc3VlcycpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFwcEljb25cIj48L25nLWNvbnRhaW5lcj4gPHNwYW4gY2xhc3M9XCJweC0zXCI+QXBwbGljYXRpb24gSXNzdWVzPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dJc3N1ZURldGFpbCAmJiBsYXN0Q2hpbGRcIiBjbGFzcz1cIm10LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9wZW5lZGlzc3VlIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJvZmlsZS1sYWJlbCBmdy1zZW1pYm9sZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZElzc3VlID09PSAnSW50ZXJuZXQgSXNzdWVzJ1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImludGVybmV0SWNvblwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZElzc3VlID09PSAnQ2FtZXJhIElzc3VlcydcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJjYW1lcmFJY29uXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkSXNzdWUgPT09ICdTeXN0ZW0gSXNzdWVzJ1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN5c3RlbUljb25cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRJc3N1ZSA9PT0gJ1N0b3JlIE9wZXJhdGlvbiBJc3N1ZXMnXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RvcmVJY29uXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkSXNzdWUgPT09ICdBcHBsaWNhdGlvbiBJc3N1ZXMnXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYXBwSWNvblwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7IHNlbGVjdGVkSXNzdWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJjaG9vc2VuSXNzdWUoJycpXCIgY2xhc3M9XCJtYWluY2FyZC1jb250ZW50IGJnLXdoaXRlIHB4LTMgcHktMiBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyLjgzMjcgNi45OTkzNUgxLjE2NjAyTTEuMTY2MDIgNi45OTkzNUw2Ljk5OTM1IDEyLjgzMjdNMS4xNjYwMiA2Ljk5OTM1TDYuOTk5MzUgMS4xNjYwMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbmNhcmQtY29udGVudCB3LTEwMCBtdC0yIHB4LTQgcHktMiBwYi00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbmNhcmQtbGFiZWwgZnctc2VtaWJvbGQgcHktMlwiPlBsZWFzZSBzZWxlY3QgdGhlIHJlbGV2YW50IHByb2JsZW0gZmFjaW5nIGZyb20gdGhlIGZvbGxvd2luZzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXNzdWUgb2Ygc2Vjb25kYXJ5SXNzdWVzOyBsZXQgaW5kZXggPSBpbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYWluY2FyZC1jb250ZW50IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDAgbXQtMiBweC00IHB5LTQgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVDaGVja2JveChpbmRleClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aW1nIGNsYXNzPVwicGUtM1wiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ltYWdlcy9GZWF0dXJlZCBpY29uLnBuZ1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkaW5ndGV4dFwiPnt7IGlzc3VlLm5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdW5kZWRjaGVjayBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJpc3N1ZS5jaGVja2VkXCIgY2xhc3M9XCJwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gSGliZXJuYXRpb24gKyBjb21tZW50IHJvdywgY29waWVkIGZyb20gdGhlIFYxIHRhYlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aWNrZXQtaW5mcmEuY29tcG9uZW50Lmh0bWw6MzMzKSBzbyBib3RoIHJlYWQgdGhlIHNhbWUuIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBwdC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiaGliZXJuYXRpb25WMlwiIGNsYXNzPVwibWFpbmNhcmQtbGFiZWwgZnctc2VtaWJvbGQgbWItMlwiPkhpYmVybmF0aW9uIChpbiBkYXlzKSAqPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTI1MHB4IHBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIHRyYW5zbGF0ZS1taWRkbGUteSB0b3AtNTAgbWUtNSBwcy0zIHRpY2tldERheXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiB0b2dnbGUtb2ZmIHN2Zy1pY29uLTFcIiBbbmdDbGFzc109XCJoaWJlcm5hdGlvbkRheXMgPT09IDAgPyAncGUtbm9uZScgOiAnJ1wiIChjbGljayk9XCJkZWNyZWFzZUhpYmVybmF0aW9uKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjEgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNC42NjYwMiAxMEgxNi4zMzI3XCIgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiaGliZXJuYXRpb25WMlwiIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJoaWJlcm5hdGlvbkRheXNcIiBwbGFjZWhvbGRlcj1cIjBcIiByZWFkb25seSAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSB0cmFuc2xhdGUtbWlkZGxlLXkgdG9wLTUwIGVuZC0wIG1lLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiB0b2dnbGUtb24gc3ZnLWljb24tMSB0aWNrZXREYXlzXCIgKGNsaWNrKT1cImluY3JlYXNlSGliZXJuYXRpb24oKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMSAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMC40OTkzIDQuMTY2NVYxNS44MzMyTTQuNjY2MDIgOS45OTk4NEgxNi4zMzI3XCIgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gVGhlIHBhcGVyY2xpcCBpcyBpbmVydDogVjEgcG9zdHMgdG8gdXBsb2FkQXR0YWNobWVudHMvLCBhbmQgdGhlcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBub3doZXJlIHRvIHVwbG9hZCB0byB3aGlsZSB0aGUgZGF0YSBpcyBtb2NrZWQuIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtdC0xMCBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwiY29tbWVudHNcIiBwbGFjZWhvbGRlcj1cIkFkZCB5b3VyIGNvbW1lbnRzLi5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgYnRuIGJ0bi1kZWZhdWx0IGJ0bi1vdXRsaW5lIG1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNy44NjY2IDkuMjA4MzVMMTAuMjA4MiAxNi44NjY3QzkuMjcwMDUgMTcuODA0OSA3Ljk5NzU3IDE4LjMzMiA2LjY3MDc1IDE4LjMzMkM1LjM0MzkzIDE4LjMzMiA0LjA3MTQ1IDE3LjgwNDkgMy4xMzMyNSAxNi44NjY3QzIuMTk1MDUgMTUuOTI4NSAxLjY2Nzk3IDE0LjY1NiAxLjY2Nzk3IDEzLjMyOTJDMS42Njc5NyAxMi4wMDI0IDIuMTk1MDUgMTAuNzI5OSAzLjEzMzI1IDkuNzkxNjhMMTAuNzkxNiAyLjEzMzM1QzExLjQxNzEgMS41MDc4OCAxMi4yNjU0IDEuMTU2NDkgMTMuMTQ5OSAxLjE1NjQ5QzE0LjAzNDUgMS4xNTY0OSAxNC44ODI4IDEuNTA3ODggMTUuNTA4MiAyLjEzMzM1QzE2LjEzMzcgMi43NTg4MiAxNi40ODUxIDMuNjA3MTMgMTYuNDg1MSA0LjQ5MTY4QzE2LjQ4NTEgNS4zNzYyMyAxNi4xMzM3IDYuMjI0NTUgMTUuNTA4MiA2Ljg1MDAyTDcuODQxNTggMTQuNTA4M0M3LjUyODg1IDE0LjgyMTEgNy4xMDQ2OSAxNC45OTY4IDYuNjYyNDIgMTQuOTk2OEM2LjIyMDE0IDE0Ljk5NjggNS43OTU5OCAxNC44MjExIDUuNDgzMjUgMTQuNTA4M0M1LjE3MDUxIDE0LjE5NTYgNC45OTQ4MiAxMy43NzE1IDQuOTk0ODIgMTMuMzI5MkM0Ljk5NDgyIDEyLjg4NjkgNS4xNzA1MSAxMi40NjI3IDUuNDgzMjUgMTIuMTVMMTIuNTU4MiA1LjA4MzM1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbXMtM1wiIFtkaXNhYmxlZF09XCIhY2FuU3VibWl0SXNzdWVcIiAoY2xpY2spPVwic3VibWl0SXNzdWUoKVwiPlN1Ym1pdDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48IS0tIE9wdGlvbiBpY29ucywgZGVmaW5lZCBvbmNlIGJlY2F1c2UgZWFjaCBpcyB1c2VkIHR3aWNlOiBpbiB0aGUgb3B0aW9uIGxpc3RcclxuICAgICBhbmQgYWdhaW4gaW4gdGhlIGNob3Nlbi1pc3N1ZSBiYXIuIFBhdGhzIGFyZSBjb3BpZWQgdmVyYmF0aW0gZnJvbVxyXG4gICAgIHRpY2tldC1pbmZyYS5jb21wb25lbnQuaHRtbCBzbyB0aGUgdHdvIHRhYnMgbWF0Y2ggcGl4ZWwgZm9yIHBpeGVsLiAtLT5cclxuPG5nLXRlbXBsYXRlICNpbnRlcm5ldEljb24+XHJcbiAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICA8cGF0aCBkPVwiTTIxIDEyQzIxIDcuMDI5MyAxNi45NzA3IDMgMTIgM0M3LjAyOTMgMyAzIDcuMDI5MyAzIDEyQzMgMTYuOTcwNyA3LjAyOTMgMjEgMTIgMjFcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgIDxwYXRoIGQ9XCJNMTIuOSAzLjA0NTA0QzEyLjkgMy4wNDUwNCAxNS42IDYuNjAwMDQgMTUuNiAxMkwxMi45IDMuMDQ1MDRaTTExLjEgMjAuOTU1QzExLjEgMjAuOTU1IDguNCAxNy40IDguNCAxMkM4LjQgNi42MDAwNCAxMS4xIDMuMDQ1MDQgMTEuMSAzLjA0NTA0TTMuNTY3IDE1LjE1SDEySDMuNTY3Wk0zLjU2NyA4Ljg1MDA0SDIwLjQzM0gzLjU2N1pcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgIDxwYXRoIGQ9XCJNMjAuODkxMSAxNy4zMjUyQzIxLjMzNTcgMTcuNTk4OCAyMS4zMDc4IDE4LjI2MzkgMjAuODUwNiAxOC4zMTYxTDE4LjU0MDMgMTguNTc4TDE3LjUwNDQgMjAuNjU4OEMxNy4yOTkyIDIxLjA3MTkgMTYuNjY0NyAyMC44Njk0IDE2LjU1OTQgMjAuMzU4MkwxNS40Mjk5IDE0Ljg1MzhDMTUuMzQwOCAxNC40MjE4IDE1LjcyOTYgMTQuMTUgMTYuMTA0OSAxNC4zODEzTDIwLjg5MTEgMTcuMzI1MlpcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgIDxwYXRoIGQ9XCJNMjAuMjUgMTJDMjAuMjUgMTIuNDE0MiAyMC41ODU4IDEyLjc1IDIxIDEyLjc1QzIxLjQxNDIgMTIuNzUgMjEuNzUgMTIuNDE0MiAyMS43NSAxMkgyMC4yNVpNMTIgMjEuNzVDMTIuNDE0MiAyMS43NSAxMi43NSAyMS40MTQyIDEyLjc1IDIxQzEyLjc1IDIwLjU4NTggMTIuNDE0MiAyMC4yNSAxMiAyMC4yNVYyMS43NVpNMTMuNDk3MyAyLjU5MTQyQzEzLjI0NjcgMi4yNjE1NiAxMi43NzYyIDIuMTk3MjUgMTIuNDQ2NCAyLjQ0Nzc4QzEyLjExNjUgMi42OTgzIDEyLjA1MjIgMy4xNjg4IDEyLjMwMjcgMy40OTg2NkwxMy40OTczIDIuNTkxNDJaTTE0Ljg1IDEyQzE0Ljg1IDEyLjQxNDMgMTUuMTg1OCAxMi43NSAxNS42IDEyLjc1QzE2LjAxNDIgMTIuNzUgMTYuMzUgMTIuNDE0MyAxNi4zNSAxMkgxNC44NVpNMTAuNTAyNyAyMS40MDg3QzEwLjc1MzMgMjEuNzM4NSAxMS4yMjM4IDIxLjgwMjggMTEuNTUzNiAyMS41NTIzQzExLjg4MzUgMjEuMzAxOCAxMS45NDc4IDIwLjgzMTMgMTEuNjk3MyAyMC41MDE0TDEwLjUwMjcgMjEuNDA4N1pNMTEuNjk3MyAzLjQ5ODY2QzExLjk0NzggMy4xNjg4IDExLjg4MzUgMi42OTgzIDExLjU1MzYgMi40NDc3OEMxMS4yMjM4IDIuMTk3MjUgMTAuNzUzMyAyLjI2MTU2IDEwLjUwMjcgMi41OTE0MkwxMS42OTczIDMuNDk4NjZaTTMuNTY3IDE0LjRDMy4xNTI3OSAxNC40IDIuODE3IDE0LjczNTggMi44MTcgMTUuMTVDMi44MTcgMTUuNTY0MyAzLjE1Mjc5IDE1LjkgMy41NjcgMTUuOVYxNC40Wk0xMiAxNS45QzEyLjQxNDIgMTUuOSAxMi43NSAxNS41NjQzIDEyLjc1IDE1LjE1QzEyLjc1IDE0LjczNTggMTIuNDE0MiAxNC40IDEyIDE0LjRWMTUuOVpNMy41NjcgOC4xMDAwNEMzLjE1Mjc5IDguMTAwMDQgMi44MTcgOC40MzU4MyAyLjgxNyA4Ljg1MDA0QzIuODE3IDkuMjY0MjYgMy4xNTI3OSA5LjYwMDA0IDMuNTY3IDkuNjAwMDRWOC4xMDAwNFpNMjAuNDMzIDkuNjAwMDRDMjAuODQ3MiA5LjYwMDA0IDIxLjE4MyA5LjI2NDI2IDIxLjE4MyA4Ljg1MDA0QzIxLjE4MyA4LjQzNTgzIDIwLjg0NzIgOC4xMDAwNCAyMC40MzMgOC4xMDAwNFY5LjYwMDA0Wk0yMC44OTExIDE3LjMyNTJMMjEuMjg0MiAxNi42ODY1TDIxLjI4NCAxNi42ODY0TDIwLjg5MTEgMTcuMzI1MlpNMjAuODUwNiAxOC4zMTYxTDIwLjkzNTEgMTkuMDYxM0wyMC45MzU3IDE5LjA2MTNMMjAuODUwNiAxOC4zMTYxWk0xOC41NDAzIDE4LjU3OEwxOC40NTU4IDE3LjgzMjhMMTguMDUwNiAxNy44Nzg3TDE3Ljg2ODkgMTguMjQzOEwxOC41NDAzIDE4LjU3OFpNMTcuNTA0NCAyMC42NTg4TDE2LjgzMyAyMC4zMjQ2TDE2LjgzMjcgMjAuMzI1MkwxNy41MDQ0IDIwLjY1ODhaTTE2LjU1OTQgMjAuMzU4MkwxNS44MjQ3IDIwLjUwOUwxNS44MjQ4IDIwLjUwOTVMMTYuNTU5NCAyMC4zNTgyWk0xNS40Mjk5IDE0Ljg1MzhMMTYuMTY0NiAxNC43MDNMMTYuMTY0NCAxNC43MDIzTDE1LjQyOTkgMTQuODUzOFpNMTYuMTA0OSAxNC4zODEzTDE1LjcxMTQgMTUuMDE5OEwxNS43MTIgMTUuMDIwMUwxNi4xMDQ5IDE0LjM4MTNaTTIxLjc1IDEyQzIxLjc1IDYuNjE1MDkgMTcuMzg0OSAyLjI1IDEyIDIuMjVWMy43NUMxNi41NTY1IDMuNzUgMjAuMjUgNy40NDM1MSAyMC4yNSAxMkgyMS43NVpNMTIgMi4yNUM2LjYxNTA5IDIuMjUgMi4yNSA2LjYxNTA5IDIuMjUgMTJIMy43NUMzLjc1IDcuNDQzNTEgNy40NDM1MSAzLjc1IDEyIDMuNzVWMi4yNVpNMi4yNSAxMkMyLjI1IDE3LjM4NDkgNi42MTUwOSAyMS43NSAxMiAyMS43NVYyMC4yNUM3LjQ0MzUxIDIwLjI1IDMuNzUgMTYuNTU2NSAzLjc1IDEySDIuMjVaTTEyLjkgMy4wNDUwNEMxMi4zMDI3IDMuNDk4NjYgMTIuMzAyNiAzLjQ5ODQ2IDEyLjMwMjQgMy40OTgyOEMxMi4zMDI0IDMuNDk4MjMgMTIuMzAyMyAzLjQ5ODA2IDEyLjMwMjIgMy40OTc5N0MxMi4zMDIxIDMuNDk3NzkgMTIuMzAyIDMuNDk3NjcgMTIuMzAxOSAzLjQ5NzZDMTIuMzAxOCAzLjQ5NzQ2IDEyLjMwMTkgMy40OTc1MyAxMi4zMDIxIDMuNDk3ODFDMTIuMzAyNSAzLjQ5ODM4IDEyLjMwMzYgMy40OTk4IDEyLjMwNTMgMy41MDIwNkMxMi4zMDg2IDMuNTA2NTggMTIuMzE0NCAzLjUxNDQ3IDEyLjMyMjUgMy41MjU2N0MxMi4zMzg3IDMuNTQ4MDkgMTIuMzY0MSAzLjU4Mzc1IDEyLjM5NzMgMy42MzIyNkMxMi40NjM4IDMuNzI5MjkgMTIuNTYxNiAzLjg3NzUyIDEyLjY4MDUgNC4wNzM2MUMxMi45MTgzIDQuNDY2MDYgMTMuMjM5MyA1LjA0ODYzIDEzLjU2MTQgNS43OTQ3OEMxNC4yMDYxIDcuMjg4MzcgMTQuODUgOS40MjUyNiAxNC44NSAxMkgxNi4zNUMxNi4zNSA5LjE3NDgzIDE1LjY0MzkgNi44MzQyMiAxNC45Mzg2IDUuMjAwMzFDMTQuNTg1NyA0LjM4MjcxIDE0LjIzMTcgMy43MzkwMiAxMy45NjMzIDMuMjk2MTZDMTMuODI5IDMuMDc0NiAxMy43MTU5IDIuOTAyOTEgMTMuNjM0NyAyLjc4NDQzQzEzLjU5NDEgMi43MjUxOCAxMy41NjE1IDIuNjc5MiAxMy41MzgxIDIuNjQ2OUMxMy41MjY1IDIuNjMwNzUgMTMuNTE3MSAyLjYxODAyIDEzLjUxMDIgMi42MDg3NkMxMy41MDY4IDIuNjA0MTMgMTMuNTA0IDIuNjAwMzYgMTMuNTAxOCAyLjU5NzQ3QzEzLjUwMDcgMi41OTYwMiAxMy40OTk4IDIuNTk0OCAxMy40OTkxIDIuNTkzNzlDMTMuNDk4NyAyLjU5MzI5IDEzLjQ5ODMgMi41OTI4NCAxMy40OTggMi41OTI0NEMxMy40OTc5IDIuNTkyMjQgMTMuNDk3NyAyLjU5MTk5IDEzLjQ5NzYgMi41OTE4OUMxMy40OTc0IDIuNTkxNjUgMTMuNDk3MyAyLjU5MTQyIDEyLjkgMy4wNDUwNFpNMTEuMSAyMC45NTVDMTEuNjk3MyAyMC41MDE0IDExLjY5NzQgMjAuNTAxNiAxMS42OTc2IDIwLjUwMThDMTEuNjk3NiAyMC41MDE5IDExLjY5NzcgMjAuNTAyIDExLjY5NzggMjAuNTAyMUMxMS42OTc5IDIwLjUwMjMgMTEuNjk4IDIwLjUwMjQgMTEuNjk4MSAyMC41MDI1QzExLjY5ODIgMjAuNTAyNiAxMS42OTgxIDIwLjUwMjYgMTEuNjk3OSAyMC41MDIzQzExLjY5NzUgMjAuNTAxNyAxMS42OTY0IDIwLjUwMDMgMTEuNjk0OCAyMC40OThDMTEuNjkxNCAyMC40OTM1IDExLjY4NTYgMjAuNDg1NiAxMS42Nzc1IDIwLjQ3NDRDMTEuNjYxMyAyMC40NTIgMTEuNjM1OSAyMC40MTYzIDExLjYwMjcgMjAuMzY3OEMxMS41MzYyIDIwLjI3MDggMTEuNDM4NCAyMC4xMjI2IDExLjMxOTUgMTkuOTI2NUMxMS4wODE3IDE5LjUzNCAxMC43NjA3IDE4Ljk1MTUgMTAuNDM4NiAxOC4yMDUzQzkuNzkzODggMTYuNzExNyA5LjE1IDE0LjU3NDggOS4xNSAxMkg3LjY1QzcuNjUgMTQuODI1MyA4LjM1NjEzIDE3LjE2NTkgOS4wNjE0MiAxOC43OTk4QzkuNDE0MzQgMTkuNjE3NCA5Ljc2ODMzIDIwLjI2MTEgMTAuMDM2NyAyMC43MDM5QzEwLjE3MSAyMC45MjU1IDEwLjI4NDEgMjEuMDk3MiAxMC4zNjUzIDIxLjIxNTdDMTAuNDA1OSAyMS4yNzQ5IDEwLjQzODUgMjEuMzIwOSAxMC40NjE5IDIxLjM1MzJDMTAuNDczNSAyMS4zNjkzIDEwLjQ4MjkgMjEuMzgyMSAxMC40ODk4IDIxLjM5MTNDMTAuNDkzMiAyMS4zOTYgMTAuNDk2IDIxLjM5OTcgMTAuNDk4MiAyMS40MDI2QzEwLjQ5OTMgMjEuNDA0MSAxMC41MDAyIDIxLjQwNTMgMTAuNTAwOSAyMS40MDYzQzEwLjUwMTMgMjEuNDA2OCAxMC41MDE3IDIxLjQwNzMgMTAuNTAyIDIxLjQwNzZDMTAuNTAyMSAyMS40MDc4IDEwLjUwMjMgMjEuNDA4MSAxMC41MDI0IDIxLjQwODJDMTAuNTAyNiAyMS40MDg0IDEwLjUwMjcgMjEuNDA4NyAxMS4xIDIwLjk1NVpNOS4xNSAxMkM5LjE1IDkuNDI1MjYgOS43OTM4OCA3LjI4ODM3IDEwLjQzODYgNS43OTQ3OEMxMC43NjA3IDUuMDQ4NjMgMTEuMDgxNyA0LjQ2NjA2IDExLjMxOTUgNC4wNzM2MUMxMS40Mzg0IDMuODc3NTIgMTEuNTM2MiAzLjcyOTI5IDExLjYwMjcgMy42MzIyNkMxMS42MzU5IDMuNTgzNzUgMTEuNjYxMyAzLjU0ODA5IDExLjY3NzUgMy41MjU2N0MxMS42ODU2IDMuNTE0NDcgMTEuNjkxNCAzLjUwNjU4IDExLjY5NDggMy41MDIwNkMxMS42OTY0IDMuNDk5OCAxMS42OTc1IDMuNDk4MzggMTEuNjk3OSAzLjQ5NzgxQzExLjY5ODEgMy40OTc1MyAxMS42OTgyIDMuNDk3NDYgMTEuNjk4MSAzLjQ5NzZDMTEuNjk4IDMuNDk3NjcgMTEuNjk3OSAzLjQ5Nzc5IDExLjY5NzggMy40OTc5N0MxMS42OTc3IDMuNDk4MDYgMTEuNjk3NiAzLjQ5ODIzIDExLjY5NzYgMy40OTgyOEMxMS42OTc0IDMuNDk4NDYgMTEuNjk3MyAzLjQ5ODY2IDExLjEgMy4wNDUwNEMxMC41MDI3IDIuNTkxNDIgMTAuNTAyNiAyLjU5MTY1IDEwLjUwMjQgMi41OTE4OUMxMC41MDIzIDIuNTkxOTkgMTAuNTAyMSAyLjU5MjI0IDEwLjUwMiAyLjU5MjQ0QzEwLjUwMTcgMi41OTI4NCAxMC41MDEzIDIuNTkzMjkgMTAuNTAwOSAyLjU5Mzc5QzEwLjUwMDIgMi41OTQ4IDEwLjQ5OTMgMi41OTYwMiAxMC40OTgyIDIuNTk3NDdDMTAuNDk2IDIuNjAwMzYgMTAuNDkzMiAyLjYwNDEzIDEwLjQ4OTggMi42MDg3NkMxMC40ODI5IDIuNjE4MDIgMTAuNDczNSAyLjYzMDc1IDEwLjQ2MTkgMi42NDY5QzEwLjQzODUgMi42NzkyIDEwLjQwNTkgMi43MjUxOCAxMC4zNjUzIDIuNzg0NDNDMTAuMjg0MSAyLjkwMjkxIDEwLjE3MSAzLjA3NDYgMTAuMDM2NyAzLjI5NjE2QzkuNzY4MzMgMy43MzkwMiA5LjQxNDM0IDQuMzgyNzEgOS4wNjE0MiA1LjIwMDMxQzguMzU2MTMgNi44MzQyMiA3LjY1IDkuMTc0ODMgNy42NSAxMkg5LjE1Wk0zLjU2NyAxNS45SDEyVjE0LjRIMy41NjdWMTUuOVpNMy41NjcgOS42MDAwNEgyMC40MzNWOC4xMDAwNEgzLjU2N1Y5LjYwMDA0Wk0yMC40OTggMTcuOTYzOUMyMC40NzkyIDE3Ljk1MjQgMjAuNDU3NSAxNy45MjUyIDIwLjQ1OTcgMTcuODcyN0MyMC40NjA5IDE3Ljg0MzQgMjAuNDcxNSAxNy43NzcyIDIwLjUyOTcgMTcuNzA1NEMyMC41OTYxIDE3LjYyMzUgMjAuNjg4OSAxNy41Nzk3IDIwLjc2NTUgMTcuNTcwOUwyMC45MzU3IDE5LjA2MTNDMjEuNjE2NyAxOC45ODM1IDIxLjkzODQgMTguNDE3OSAyMS45NTg0IDE3LjkzNDZDMjEuOTc3NiAxNy40NjgyIDIxLjc0NzYgMTYuOTcxNyAyMS4yODQyIDE2LjY4NjVMMjAuNDk4IDE3Ljk2MzlaTTIwLjc2NjEgMTcuNTcwOUwxOC40NTU4IDE3LjgzMjhMMTguNjI0OCAxOS4zMjMyTDIwLjkzNTEgMTkuMDYxM0wyMC43NjYxIDE3LjU3MDlaTTE3Ljg2ODkgMTguMjQzOEwxNi44MzMgMjAuMzI0NkwxOC4xNzU4IDIwLjk5MzFMMTkuMjExNyAxOC45MTIzTDE3Ljg2ODkgMTguMjQzOFpNMTYuODMyNyAyMC4zMjUyQzE2Ljg2NjggMjAuMjU2NSAxNi45Mzk1IDIwLjE4MzkgMTcuMDM5OCAyMC4xNDkyQzE3LjEyNzcgMjAuMTE4OCAxNy4xOTQgMjAuMTMxNiAxNy4yMjIxIDIwLjE0MDVDMTcuMjcyIDIwLjE1NjQgMTcuMjg5NiAyMC4xODU3IDE3LjI5NCAyMC4yMDY5TDE1LjgyNDggMjAuNTA5NUMxNS45MzQ1IDIxLjA0MTkgMTYuMzIyIDIxLjQyODEgMTYuNzY2OCAyMS41Njk3QzE3LjIyODYgMjEuNzE2OCAxNy44NzA3IDIxLjYwNzMgMTguMTc2MSAyMC45OTI1TDE2LjgzMjcgMjAuMzI1MlpNMTcuMjk0MSAyMC4yMDc0TDE2LjE2NDYgMTQuNzAzTDE0LjY5NTIgMTUuMDA0NkwxNS44MjQ3IDIwLjUwOUwxNy4yOTQxIDIwLjIwNzRaTTE2LjE2NDQgMTQuNzAyM0MxNi4xNzIzIDE0Ljc0MDYgMTYuMTY2NiAxNC44ODMgMTYuMDIzMiAxNC45ODMzQzE1Ljg4IDE1LjA4MzUgMTUuNzQ0NiAxNS4wNDAyIDE1LjcxMTQgMTUuMDE5OEwxNi40OTg0IDEzLjc0MjhDMTYuMDg5OSAxMy40OTExIDE1LjU3MjQgMTMuNDY4IDE1LjE2MzMgMTMuNzU0M0MxNC43NTQgMTQuMDQwNyAxNC41OTg0IDE0LjUzNSAxNC42OTU0IDE1LjAwNTNMMTYuMTY0NCAxNC43MDIzWk0xNS43MTIgMTUuMDIwMUwyMC40OTgyIDE3Ljk2NEwyMS4yODQgMTYuNjg2NEwxNi40OTc4IDEzLjc0MjVMMTUuNzEyIDE1LjAyMDFaXCIgZmlsbD1cIiM0NzU0NjdcIiAvPlxyXG4gICAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2NhbWVyYUljb24+XHJcbiAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDI0IDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICA8cGF0aCBkPVwiTTIzIDE3QzIzIDE3LjUzMDQgMjIuNzg5MyAxOC4wMzkxIDIyLjQxNDIgMTguNDE0MkMyMi4wMzkxIDE4Ljc4OTMgMjEuNTMwNCAxOSAyMSAxOUgzQzIuNDY5NTcgMTkgMS45NjA4NiAxOC43ODkzIDEuNTg1NzkgMTguNDE0MkMxLjIxMDcxIDE4LjAzOTEgMSAxNy41MzA0IDEgMTdWNkMxIDUuNDY5NTcgMS4yMTA3MSA0Ljk2MDg2IDEuNTg1NzkgNC41ODU3OUMxLjk2MDg2IDQuMjEwNzEgMi40Njk1NyA0IDMgNEg3TDkgMUgxNUwxNyA0SDIxQzIxLjUzMDQgNCAyMi4wMzkxIDQuMjEwNzEgMjIuNDE0MiA0LjU4NTc5QzIyLjc4OTMgNC45NjA4NiAyMyA1LjQ2OTU3IDIzIDZWMTdaXCJcclxuICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgIDxwYXRoIGQ9XCJNMTIgMTVDMTQuMjA5MSAxNSAxNiAxMy4yMDkxIDE2IDExQzE2IDguNzkwODYgMTQuMjA5MSA3IDEyIDdDOS43OTA4NiA3IDggOC43OTA4NiA4IDExQzggMTMuMjA5MSA5Ljc5MDg2IDE1IDEyIDE1WlwiXHJcbiAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNzeXN0ZW1JY29uPlxyXG4gICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAyMCAxNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgPHBhdGggZD1cIk0xMiAyVjlIMlYySDEyWk0yIDBDMC44OTY4NzUgMCAwIDAuODk2ODc1IDAgMlY5QzAgMTAuMTAzMSAwLjg5Njg3NSAxMSAyIDExSDUuNjY1NjNMNS4zMzEyNSAxMkgzQzIuNDQ2ODggMTIgMiAxMi40NDY5IDIgMTNDMiAxMy41NTMxIDIuNDQ2ODggMTQgMyAxNEgxMUMxMS41NTMxIDE0IDEyIDEzLjU1MzEgMTIgMTNDMTIgMTIuNDQ2OSAxMS41NTMxIDEyIDExIDEySDguNjY1NjJMOC4zMzEyNSAxMUgxMkMxMy4xMDMxIDExIDE0IDEwLjEwMzEgMTQgOVYyQzE0IDAuODk2ODc1IDEzLjEwMzEgMCAxMiAwSDJaTTE2LjUgMEMxNS42NzE5IDAgMTUgMC42NzE4NzUgMTUgMS41VjEyLjVDMTUgMTMuMzI4MSAxNS42NzE5IDE0IDE2LjUgMTRIMTguNUMxOS4zMjgxIDE0IDIwIDEzLjMyODEgMjAgMTIuNVYxLjVDMjAgMC42NzE4NzUgMTkuMzI4MSAwIDE4LjUgMEgxNi41Wk0xNyAySDE4QzE4LjI3NSAyIDE4LjUgMi4yMjUgMTguNSAyLjVDMTguNSAyLjc3NSAxOC4yNzUgMyAxOCAzSDE3QzE2LjcyNSAzIDE2LjUgMi43NzUgMTYuNSAyLjVDMTYuNSAyLjIyNSAxNi43MjUgMiAxNyAyWk0xNi41IDQuNUMxNi41IDQuMjI1IDE2LjcyNSA0IDE3IDRIMThDMTguMjc1IDQgMTguNSA0LjIyNSAxOC41IDQuNUMxOC41IDQuNzc1IDE4LjI3NSA1IDE4IDVIMTdDMTYuNzI1IDUgMTYuNSA0Ljc3NSAxNi41IDQuNVpNMTcuNSA5LjVDMTcuNzY1MiA5LjUgMTguMDE5NiA5LjYwNTM2IDE4LjIwNzEgOS43OTI4OUMxOC4zOTQ2IDkuOTgwNDMgMTguNSAxMC4yMzQ4IDE4LjUgMTAuNUMxOC41IDEwLjc2NTIgMTguMzk0NiAxMS4wMTk2IDE4LjIwNzEgMTEuMjA3MUMxOC4wMTk2IDExLjM5NDYgMTcuNzY1MiAxMS41IDE3LjUgMTEuNUMxNy4yMzQ4IDExLjUgMTYuOTgwNCAxMS4zOTQ2IDE2Ljc5MjkgMTEuMjA3MUMxNi42MDU0IDExLjAxOTYgMTYuNSAxMC43NjUyIDE2LjUgMTAuNUMxNi41IDEwLjIzNDggMTYuNjA1NCA5Ljk4MDQzIDE2Ljc5MjkgOS43OTI4OUMxNi45ODA0IDkuNjA1MzYgMTcuMjM0OCA5LjUgMTcuNSA5LjVaXCJcclxuICAgICAgICAgICAgZmlsbD1cIiM0NzU0NjdcIiAvPlxyXG4gICAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3N0b3JlSWNvbj5cclxuICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgIDxwYXRoIGQ9XCJNMy4wODk5NSA2Ljg4MzY5TDMuMDI0MDEgNi45ODY2OUMyLjMwMzU4IDguMjU1NTcgMy4wNjEwMSA5Ljg3OTQ1IDQuNDY0NjQgMTAuMDY2MkM0LjU4NjI3IDEwLjA4MTEgNC43MDExMiAxMC4wODkyIDQuODE0NSAxMC4wODkyQzUuNTUyNTUgMTAuMDg5MiA2LjIwNTIzIDkuNzcyMjkgNi42NTk1MyA5LjI3OTE3TDcuMjEyODYgOC42Nzg1NEw3Ljc2NDMyIDkuMjgwODlDOC4yMTM2NyA5Ljc3MTcxIDguODY1MiAxMC4wODkyIDkuNjA3NzYgMTAuMDg5MkMxMC4zNDcxIDEwLjA4OTIgMTEuMDAyMiA5Ljc3MTM3IDExLjQ1MTIgOS4yODA4OUwxMi4wMDQ0IDguNjc2NjVMMTIuNTU3NiA5LjI4MDg5QzEzLjAwNjYgOS43NzEzNyAxMy42NjE3IDEwLjA4OTIgMTQuNDAxIDEwLjA4OTJDMTUuMTQwNCAxMC4wODkyIDE1Ljc5NTQgOS43NzEzNyAxNi4yNDQ1IDkuMjgwODlMMTYuNzk3NyA4LjY3NjY1TDE3LjM1MDggOS4yODA4OUMxNy43OTk5IDkuNzcxMzcgMTguNDU0OSAxMC4wODkyIDE5LjE5NDMgMTAuMDg5MkMxOS4zMDQxIDEwLjA4OTIgMTkuNDIyMyAxMC4wODExIDE5LjU0MzMgMTAuMDY2M0MyMC45NzcyIDkuODcxNjggMjEuNzM1NSA4LjE2Mzg3IDIwLjkxNTUgNi44ODQxOUMyMC45MTU0IDYuODg0MTMgMjAuOTE1NCA2Ljg4NDA3IDIwLjkxNTQgNi44ODQwMkwxOC44MDU2IDMuNTk0MjlMMTguODA1NiAzLjU5NDI5TDE4LjgwNDYgMy41OTI4MkMxOC43NTgyIDMuNTIwMDIgMTguNjY0OSAzLjQ2NDIzIDE4LjU1ODQgMy40NjQyM0g1LjQ0MzA3QzUuMzM2NSAzLjQ2NDIzIDUuMjQzMjYgMy41MjAwMiA1LjE5NjgxIDMuNTkyODJMNS4xOTYxOSAzLjU5Mzc5TDMuMDg5OTUgNi44ODM2OVpNNC44MTgxOCAxMi43NDk5QzQuNzE2NDQgMTIuNzQ5OSA0LjYxNiAxMi43NDY4IDQuNTE2OSAxMi43NDFWMTYuNjQyOFYxOC45NjQyQzQuNTE2OSAxOS44MjExIDUuMjI2NjMgMjAuNTM1NyA2LjExOTQyIDIwLjUzNTdIMTcuODgyQzE4Ljc3NDggMjAuNTM1NyAxOS40ODQ1IDE5LjgyMTEgMTkuNDg0NSAxOC45NjQyVjE2LjY0MjhWMTIuNzQxNUMxOS4zODc0IDEyLjc0NyAxOS4yODkzIDEyLjc0OTkgMTkuMTkwNiAxMi43NDk5QzE5LjAwMjIgMTIuNzQ5OSAxOC44MTU3IDEyLjczOTggMTguNjMyIDEyLjcyMDJWMTYuNjQyOFYxNy4zOTI4SDE3Ljg4Mkg2LjExOTQySDUuMzY5NDJWMTYuNjQyOFYxMi43MjFDNS4xODg2NiAxMi43NCA1LjAwNDcyIDEyLjc0OTkgNC44MTgxOCAxMi43NDk5WlwiXHJcbiAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiAvPlxyXG4gICAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2FwcEljb24+XHJcbiAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICA8cGF0aCBkPVwiTTggMUgxVjhIOFYxWlwiIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICA8cGF0aCBkPVwiTTE5IDFIMTJWOEgxOVYxWlwiIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICA8cGF0aCBkPVwiTTE5IDEySDEyVjE5SDE5VjEyWlwiIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICA8cGF0aCBkPVwiTTggMTJIMVYxOUg4VjEyWlwiIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
303
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlja2V0LWluZnJhLXYyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLXRpY2tldC1pbmZyYS9zcmMvbGliL2NvbXBvbmVudHMvdGlja2V0LWluZnJhLXYyL3RpY2tldC1pbmZyYS12Mi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS10aWNrZXQtaW5mcmEvc3JjL2xpYi9jb21wb25lbnRzL3RpY2tldC1pbmZyYS12Mi90aWNrZXQtaW5mcmEtdjIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7QUFzRTlFLDhFQUE4RTtBQUM5RSw2RUFBNkU7QUFDN0UsNEVBQTRFO0FBQzVFLDhFQUE4RTtBQUU5RSwrRUFBK0U7QUFDL0UsTUFBTSxzQkFBc0IsR0FBNkI7SUFDdkQsaUJBQWlCLEVBQUUsQ0FBQyx3QkFBd0IsRUFBRSwyQkFBMkIsRUFBRSxlQUFlLENBQUM7SUFDM0YsZUFBZSxFQUFFLENBQUMsdUJBQXVCLEVBQUUsdUJBQXVCLEVBQUUsc0JBQXNCLENBQUM7SUFDM0YsZUFBZSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLENBQUM7SUFDM0Usd0JBQXdCLEVBQUUsQ0FBQyxjQUFjLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLENBQUM7SUFDdEYsb0JBQW9CLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSxzQkFBc0IsQ0FBQztDQUN2RSxDQUFDO0FBT0YsTUFBTSxPQUFPLHNCQUFzQjtJQXVDdkI7SUFDQTtJQUNBO0lBeENELFdBQVcsQ0FB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RUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDak47UUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO3dHQXBTVSxzQkFBc0I7NEZBQXRCLHNCQUFzQixtR0MxRm5DLDYzdUNBZ1hBOzs0RkR0UmEsc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLHFCQUFxQjtpSkFLdEIsV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5pbXBvcnQgeyBUaWNrZXRzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RpY2tldHMuc2VydmljZSc7XHJcblxyXG50eXBlIFRpY2tldFN0YXR1cyA9ICdvcGVuJyB8ICdpbnByb2dyZXNzJyB8ICdjbG9zZWQnO1xyXG5cclxuaW50ZXJmYWNlIElzc3VlQ2FyZCB7IG5hbWU6IHN0cmluZzsgY291bnQ6IG51bWJlcjsgfVxyXG5cclxuLyoqXHJcbiAqIE9uZSBlbnRyeSBpbiBhIGNoaWxkIHRpY2tldCdzIHRpbWVsaW5lLiBgYW5hbHlzaXNgIGFkZHMgdGhlIGVzY2FsYXRpb24gcGlsbCxcclxuICogdGhlIHJvb3QgY2F1c2UgLyBpc3N1ZSBjYXRlZ29yeSBwYWlyIGFuZCB0aGUgZXhwYW5kYWJsZSBhbmFseXNpczsgYHJhaXNlZGAgaXNcclxuICogcGxhaW4gdGV4dC5cclxuICovXHJcbnR5cGUgRW50cnlLaW5kID0gJ3JhaXNlZCcgfCAnYW5hbHlzaXMnO1xyXG5cclxuaW50ZXJmYWNlIFRpbWVsaW5lRW50cnkge1xyXG4gIGtpbmQ6IEVudHJ5S2luZDtcclxuICBhdXRob3I6IHN0cmluZztcclxuICBhdDogc3RyaW5nO1xyXG4gIHRleHQ6IHN0cmluZztcclxuICBlc2NhbGF0ZWQ/OiBib29sZWFuO1xyXG4gIC8qKiBUaGUgYWdlbnQncyBvd24gdmVyZGljdCwgc2hvd24gYXMgYSBwaWxsLiAnJyB3aGVuIGl0IG5ldmVyIHJlcG9ydGVkLiAqL1xyXG4gIGFnZW50U3RhdHVzPzogc3RyaW5nO1xyXG4gIHJvb3RDYXVzZT86IHN0cmluZztcclxuICBpc3N1ZUNhdGVnb3J5Pzogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIFJldmVhbGVkIGJ5IFwiU2hvdyB0aGUgZnVsbCBhbmFseXNpc1wiLiBUaGUgZm91ciBrZXlzIG1hdGNoIHdoYXRcclxuICAgKiBQVVQgL3RpY2tldEFnZW50IHdyaXRlcyBvbnRvIHRoZSBjaGlsZCdzIGBhZ2VudGAgc3ViLWRvY3VtZW50LCBzbyB0aGlzIG1hcHNcclxuICAgKiBzdHJhaWdodCBhY3Jvc3Mgd2hlbiB0aGUgZW5kcG9pbnQgaXMgd2lyZWQgdXAuXHJcbiAgICovXHJcbiAgYW5hbHlzaXM/OiB7IGNhdXNlOiBzdHJpbmc7IHByb29mOiBzdHJpbmc7IGZpeDogc3RyaW5nOyBub3Rlczogc3RyaW5nIH07XHJcbiAgc2hvd0FuYWx5c2lzPzogYm9vbGVhbjtcclxufVxyXG5cclxuLyoqXHJcbiAqIEEgY3ljbGUgY2hpbGQgb2YgdGhlIHBhcmVudCB0aWNrZXQuIFRoZSBhY2NvcmRpb24gcm93IHNob3dzIHRoZSBjeWNsZSBpZCBhbmRcclxuICogaG93IG1hbnkgc3RyZWFtcyB3ZXJlIGRvd247IGV4cGFuZGluZyBpdCByZXZlYWxzIHRoZSB0aW1lbGluZS5cclxuICovXHJcbmludGVyZmFjZSBDaGlsZFRpY2tldCB7XHJcbiAgY3ljbGVJZDogc3RyaW5nO1xyXG4gIHN0cmVhbXNEb3duOiBudW1iZXI7XHJcbiAgc3RhdHVzOiBUaWNrZXRTdGF0dXM7XHJcbiAgZXhwYW5kZWQ6IGJvb2xlYW47XHJcbiAgZW50cmllczogVGltZWxpbmVFbnRyeVtdO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgVGlja2V0Um93IHtcclxuICB0aWNrZXRJZDogc3RyaW5nO1xyXG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xyXG4gIGlzc3VlQ2xvc2VkRGF0ZTogc3RyaW5nIHwgbnVsbDtcclxuICBzdGF0dXM6IFRpY2tldFN0YXR1cztcclxuICBpc3N1ZVN0YXR1czogJ2lkZW50aWZpZWQnIHwgJ25vdGlkZW50aWZpZWQnO1xyXG4gIHByaW1hcnlJc3N1ZTogc3RyaW5nO1xyXG4gIHNlY29uZGFyeUlzc3VlOiBzdHJpbmc7XHJcbiAgY29tbWVudHM6IG51bWJlcjtcclxuICAvKipcclxuICAgKiBTZXQgb25jZSB0aGUgc3RvcmUgc3VibWl0cyBpdHMgb3duIGlkZW50aWZpY2F0aW9uLiBTZXBhcmF0ZSBmcm9tXHJcbiAgICogaXNzdWVTdGF0dXMsIHdoaWNoIFRhbmdvIFdhdGNoIGFsc28gc2V0cyAtIGFuIGlucHJvZ3Jlc3MgdGlja2V0IGNhbiBoYXZlIGFcclxuICAgKiBUYW5nby1pZGVudGlmaWVkIHJvb3QgY2F1c2UgYW5kIHN0aWxsIGJlIHdhaXRpbmcgb24gdGhlIHN0b3JlLlxyXG4gICAqL1xyXG4gIHN0b3JlUmVzcG9uZGVkPzogYm9vbGVhbjtcclxuICAvKipcclxuICAgKiBUaGUgbmV3ZXN0IGNoaWxkJ3Mgcm9vdCBjYXVzZSwgc2VudCBvbiB0aGUgbGlzdCByb3cgc28gYSBjYXJkIGNhbiB3b3JkXHJcbiAgICogaXRzZWxmIHdpdGhvdXQgdGhlIHRpbWVsaW5lcy4gJycgd2hlbiBub2JvZHkgaGFzIGRpYWdub3NlZCB0aGUgdGlja2V0LlxyXG4gICAqL1xyXG4gIHJvb3RDYXVzZTogc3RyaW5nO1xyXG4gIC8qKiBBYnNlbnQgb24gYSBsaXN0IHJvdzsgZmlsbGVkIGJ5IHRoZSBkZXRhaWwgY2FsbCB3aGVuIHRoZSBjYXJkIGlzIGNsaWNrZWQuICovXHJcbiAgY2hpbGRyZW4/OiBDaGlsZFRpY2tldFtdO1xyXG59XHJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4vLyBURU1QT1JBUlkgTU9DSyBEQVRBIOKAlCB0aGUgbGFzdCBibG9jayBzdGlsbCB0byBiZSByZXBsYWNlZC4gVGhlIGlzc3VlIGNhcmRzXHJcbi8vIGFuZCB0aGUgdGlja2V0IGxpc3QgYXJlIGxpdmU7IG9ubHkgdGhlIHBpY2tlcidzIHNlY29uZGFyeSByZWFzb25zIHJlbWFpbi5cclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcblxyXG4vKiogL2luZnJhL1ByaW1hcnlSZWFzb25zIOKAlCB0aGUgc2Vjb25kYXJ5IHJlYXNvbnMgb2ZmZXJlZCB1bmRlciBlYWNoIHByaW1hcnkgKi9cclxuY29uc3QgTU9DS19TRUNPTkRBUllfUkVBU09OUzogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+ID0ge1xyXG4gICdJbnRlcm5ldCBJc3N1ZXMnOiBbJ05vIGludGVybmV0IGNvbm5lY3Rpb24nLCAnSW50ZXJtaXR0ZW50IGNvbm5lY3Rpdml0eScsICdMb3cgYmFuZHdpZHRoJ10sXHJcbiAgJ0NhbWVyYSBJc3N1ZXMnOiBbJ0NhbWVyYSBub3QgcG93ZXJlZCBvbicsICdMZW5zIGJsdXJyZWQgb3IgZGlydHknLCAnQ2FtZXJhIGFuZ2xlIGNoYW5nZWQnXSxcclxuICAnU3lzdGVtIElzc3Vlcyc6IFsnTlZSIC8gRFZSIGlzIG9mZicsICdIYXJkIGRpc2sgZnVsbCcsICdTeXN0ZW0gcmVzdGFydGVkJ10sXHJcbiAgJ1N0b3JlIE9wZXJhdGlvbiBJc3N1ZXMnOiBbJ1N0b3JlIGNsb3NlZCcsICdSZW5vdmF0aW9uIGluIHByb2dyZXNzJywgJ1Bvd2VyIHNodXRkb3duJ10sXHJcbiAgJ0FwcGxpY2F0aW9uIElzc3Vlcyc6IFsnRWRnZSBhcHAgbm90IHJ1bm5pbmcnLCAnQXBwIHZlcnNpb24gb3V0ZGF0ZWQnXSxcclxufTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXRpY2tldC1pbmZyYS12MicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RpY2tldC1pbmZyYS12Mi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3RpY2tldC1pbmZyYS12Mi5jb21wb25lbnQuc2NzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUaWNrZXRJbmZyYVYyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkVGFiOiBhbnk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG4gIGhlYWRlckZpbHRlcjogYW55O1xyXG5cclxuICAvLyBFbXB0eSB1bnRpbCB0aGUgaGVhZGVyIGZpbHRlciBhcnJpdmVzIC0gdGhlIGVuZHBvaW50IGFsd2F5cyByZXR1cm5zIGV2ZXJ5XHJcbiAgLy8gY2FyZCwgc28gbm90aGluZyBuZWVkcyBzZWVkaW5nIGhlcmUuXHJcbiAgdGlja2V0Q2FyZDogSXNzdWVDYXJkW10gPSBbXTtcclxuICB0aWNrZXRMaXN0OiBUaWNrZXRSb3dbXSA9IFtdO1xyXG4gIHNlbGVjdENhcmQgPSAwO1xyXG4gIHRpY2tldEluZm86IFRpY2tldFJvdyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvLyBCb3RoIHN0YXJ0IHRydWUgc28gdGhlIGZpcnN0IHBhaW50IGlzIHRoZSBzaGltbWVyIHJhdGhlciB0aGFuIGEgcGFnZSB0aGF0XHJcbiAgLy8gbG9va3MgbGlrZSBhIHN0b3JlIHdpdGggbm8gdGlja2V0cy4gT25lIGZsYWcgcGVyIGNhbGwsIGNvbWJpbmVkIGZvciB0aGVcclxuICAvLyB2aWV3OiB0aGUgY2FyZHMgYW5kIHRoZSBsaXN0IGFyZSBhIHNpbmdsZSBibG9jayBvbiBzY3JlZW4uXHJcbiAgY2FyZHNMb2FkaW5nID0gdHJ1ZTtcclxuICBsaXN0TG9hZGluZyA9IHRydWU7XHJcbiAgZ2V0IGxvYWRpbmcoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmNhcmRzTG9hZGluZyB8fCB0aGlzLmxpc3RMb2FkaW5nOyB9XHJcblxyXG4gIC8vIFRoZSBkZXRhaWwgcGFuZSByZWxvYWRzIG9uIGl0cyBvd24gd2hlbiBhIGNhcmQgaXMgY2xpY2tlZCwgc28gaXQgc2hpbW1lcnNcclxuICAvLyBzZXBhcmF0ZWx5IC0gdGhlIGxlZnQgY29sdW1uIG11c3Qgbm90IGZsYXNoIG9uIGV2ZXJ5IHNlbGVjdGlvbi5cclxuICBkZXRhaWxMb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gIC8vIElzc3VlIGlkZW50aWZpY2F0aW9uLCBtaXJyb3JpbmcgdGhlIFYxIHRhYidzIGZsb3cuXHJcbiAgc2VsZWN0ZWRJc3N1ZSA9ICcnO1xyXG4gIHNlY29uZGFyeUlzc3VlczogeyBuYW1lOiBzdHJpbmc7IGNoZWNrZWQ6IGJvb2xlYW4gfVtdID0gW107XHJcbiAgaGliZXJuYXRpb25EYXlzID0gMDtcclxuICBjb21tZW50cyA9ICcnO1xyXG5cclxuICAvKipcclxuICAgKiBTZXQgd2hlbiB0aGUgc3VtbWFyeSBwYWdlIGxpbmtzIHN0cmFpZ2h0IHRvIG9uZSB0aWNrZXQuIFJlYWQgZnJvbSB0aGUgcm91dGVcclxuICAgKiByYXRoZXIgdGhhbiB0YWtlbiBhcyBhbiBASW5wdXQ6IHRoZSBwYXJlbnQgaGFzIG5vIG90aGVyIHVzZSBmb3IgaXQuXHJcbiAgICogQ29uc3VtZWQgb24gdGhlIGZpcnN0IGxpc3QgbG9hZCBzbyBhIGxhdGVyIGZpbHRlciBjaGFuZ2Ugb3IgYSBjbGljayBvblxyXG4gICAqIGFub3RoZXIgY2FyZCBpcyBub3Qgb3ZlcnJpZGRlbiBieSBhIHN0YWxlIHF1ZXJ5IHBhcmFtLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVxdWVzdGVkVGlja2V0SWQgPSAnJztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGdzOiBHbG9iYWxTdGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRpY2tldHNlcnZpY2U6IFRpY2tldHNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgKSB7fVxyXG5cclxuICAvLyBWMSBhbHNvIGhhcyBhIHJlZnJlc2h0aWNrZXQgYnJhbmNoIGhlcmUgdGhhdCBvbWl0cyB0aGUgc2VsZWN0ZWRJc3N1ZSBjaGVjayxcclxuICAvLyB3aGljaCBtYWtlcyB0aGUgcGlja2VyIGFuZCB0aGUgY2hvc2VuLWlzc3VlIGJsb2NrIHJlbmRlciB0b2dldGhlci4gVGhlcmUgaXNcclxuICAvLyBubyByZWZyZXNoIHRpY2tldCBpbiBWMiwgc28gdGhhdCBicmFuY2ggaXMgbm90IHJlcHJvZHVjZWQuXHJcbiAgLy8gU2hvd24gb24gYW55IHRpY2tldCB0aGF0IGlzIHN0aWxsIGxpdmUgYW5kIHRoYXQgdGhlIHN0b3JlIGhhcyBub3QgYW5zd2VyZWRcclxuICAvLyB5ZXQsIHNvIGl0IGFsc28gYXBwZWFycyB1bmRlciBhbiBpbnByb2dyZXNzIHRpY2tldCB3aG9zZSByb290IGNhdXNlIFRhbmdvXHJcbiAgLy8gV2F0Y2ggaGFzIGFscmVhZHkgZm91bmQuXHJcbiAgcHJpdmF0ZSBnZXQgY2FuSWRlbnRpZnkoKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCB0ID0gdGhpcy50aWNrZXRJbmZvO1xyXG4gICAgcmV0dXJuICEhdCAmJiAhdC5zdG9yZVJlc3BvbmRlZCAmJiB0LnN0YXR1cyAhPT0gJ2Nsb3NlZCc7XHJcbiAgfVxyXG5cclxuICBnZXQgc2hvd0lzc3VlUGlja2VyKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5jYW5JZGVudGlmeSAmJiB0aGlzLnNlbGVjdGVkSXNzdWUgPT09ICcnOyB9XHJcbiAgZ2V0IHNob3dJc3N1ZURldGFpbCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuY2FuSWRlbnRpZnkgJiYgdGhpcy5zZWxlY3RlZElzc3VlICE9PSAnJzsgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGUgY3ljbGUgdGhlIHN0b3JlIGNhbiBzdGlsbCBhbnN3ZXIgb246IHRoZSBuZXdlc3QgY2hpbGQgdGhhdCBpcyBub3RcclxuICAgKiBjbG9zZWQuIENoaWxkcmVuIGFycml2ZSBuZXdlc3QgZmlyc3QsIHNvIHRoZSBmaXJzdCBtYXRjaCBpcyB0aGUgbGl2ZSBvbmUuXHJcbiAgICogVGhpcyByZXBsYWNlcyBhIHBvc2l0aW9uYWwgXCJsYXN0IGNoaWxkXCIgdGVzdCwgd2hpY2ggdG9vayB0aGUgb2xkZXN0IGN5Y2xlXHJcbiAgICogYW5kIHNvIHB1dCB0aGUgcGlja2VyIGluc2lkZSBhIGNsb3NlZCBvbmUuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXQgaWRlbnRpZnlDaGlsZCgpOiBDaGlsZFRpY2tldCB8IG51bGwge1xyXG4gICAgcmV0dXJuICh0aGlzLnRpY2tldEluZm8/LmNoaWxkcmVuID8/IFtdKS5maW5kKChjKSA9PiBjLnN0YXR1cyAhPT0gJ2Nsb3NlZCcpID8/IG51bGw7XHJcbiAgfVxyXG5cclxuICBpc0lkZW50aWZ5Q2hpbGQoY2hpbGQ6IENoaWxkVGlja2V0KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLmlkZW50aWZ5Q2hpbGQgJiYgY2hpbGQgPT09IHRoaXMuaWRlbnRpZnlDaGlsZDtcclxuICB9XHJcblxyXG4gIC8vIFRoZSBoZWFkZXIgcHVzaGVzIHNldmVyYWwgdmFsdWVzIHdoaWxlIHRoZSBwYWdlIGluaXRpYWxpc2VzLCBhbmQgYXJyaXZpbmdcclxuICAvLyBmcm9tIHRoZSBmbGVldCB0YWJsZSBhZGRzIG9uZSBtb3JlIC0gdGhhdCBjb21wb25lbnQgY2FsbHNcclxuICAvLyBkYXRhUmFuZ2VWYWx1ZS5uZXh0KCkganVzdCBiZWZvcmUgbmF2aWdhdGluZyBoZXJlLiBXaXRob3V0IHRoaXMgZ3VhcmQgZXZlcnlcclxuICAvLyBvbmUgb2YgdGhlbSByZWZldGNoZWQgdGhlIGNhcmRzLCB0aGUgbGlzdCBhbmQgdGhlIHRvcCBjYXJkJ3MgZGV0YWlsLiBTYW1lXHJcbiAgLy8gc2hhcGUgYXMgdGhlIGZsZWV0IEluZnJhIFYyIHRhYiwga2V5ZWQgb24gdGhlIHNjb3BlIHRoaXMgcGFnZSBhY3R1YWxseSB1c2VzLlxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXF1ZXN0ZWRUaWNrZXRJZCA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbJ3RpY2tldElkJ10gfHwgJyc7XHJcbiAgICB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlLnBpcGUoXHJcbiAgICAgIGRlYm91bmNlVGltZSgxNTApLFxyXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYTogYW55LCBiOiBhbnkpID0+XHJcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoeyBzOiBhPy5zdG9yZSwgYzogYT8uY2xpZW50LCBkOiBhPy5kYXRlIH0pID09PVxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHsgczogYj8uc3RvcmUsIGM6IGI/LmNsaWVudCwgZDogYj8uZGF0ZSB9KSksXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcclxuICAgICkuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICB0aGlzLmhlYWRlckZpbHRlciA9IGRhdGE7XHJcbiAgICAgICAgY29uc3QgYm9keSA9IHRoaXMuc2NvcGVCb2R5KCk7XHJcbiAgICAgICAgaWYgKGJvZHkpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0SXNzdWVDYXJkcyhib2R5KTtcclxuICAgICAgICAgIHRoaXMuZ2V0VGlja2V0TGlzdChib2R5KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gQm90aCBlbmRwb2ludHMgdGFrZSB0aGUgc2FtZSBzdG9yZSArIGRhdGUgc2NvcGUuIE51bGwgd2hlbiB0aGUgaGVhZGVyIGhhc1xyXG4gIC8vIG5vdCByZXNvbHZlZCBhIHN0b3JlIHlldCwgd2hpY2ggaXMgdGhlIGNhc2Ugb24gdGhlIGZpcnN0IGVtaXNzaW9uLlxyXG4gIHByaXZhdGUgc2NvcGVCb2R5KCk6IGFueSB7XHJcbiAgICBjb25zdCBzdG9yZUlkID0gdGhpcy5oZWFkZXJGaWx0ZXI/LnN0b3JlO1xyXG4gICAgY29uc3QgY2xpZW50SWQgPSB0aGlzLmhlYWRlckZpbHRlcj8uY2xpZW50O1xyXG4gICAgLy8gTm90aGluZyB0byBmZXRjaCwgc28gbm90aGluZyB0byB3YWl0IGZvciAtIHdpdGhvdXQgdGhpcyB0aGUgcGFnZSB3b3VsZFxyXG4gICAgLy8gc2hpbW1lciBmb3IgYSBoZWFkZXIgdGhhdCBuZXZlciByZXNvbHZlcyBhIHN0b3JlLlxyXG4gICAgaWYgKCFzdG9yZUlkIHx8ICFjbGllbnRJZCkge1xyXG4gICAgICB0aGlzLmNhcmRzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmxpc3RMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgY2xpZW50SWQ6IFtjbGllbnRJZF0sXHJcbiAgICAgIHN0b3JlSWQ6IHN0b3JlSWQsXHJcbiAgICAgIGZyb21EYXRlOiB0aGlzLmhlYWRlckZpbHRlcj8uZGF0ZT8uc3RhcnREYXRlLFxyXG4gICAgICB0b0RhdGU6IHRoaXMuaGVhZGVyRmlsdGVyPy5kYXRlPy5lbmREYXRlLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8vIFRoZSBlbmRwb2ludCBhbHdheXMgYW5zd2VycyB3aXRoIGFsbCBmaXZlIGNhcmRzLCBzbyBhIGZhaWx1cmUgaXMgdGhlIG9ubHlcclxuICAvLyBjYXNlIHRoYXQgbmVlZHMgY2xlYXJpbmcgLSBvdGhlcndpc2UgdGhlIHByZXZpb3VzIHN0b3JlJ3MgbnVtYmVycyB3b3VsZCBzaXRcclxuICAvLyB1bmRlciB0aGUgbmV3IHN0b3JlJ3MgbmFtZS5cclxuICBwcml2YXRlIGdldElzc3VlQ2FyZHMoYm9keTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmNhcmRzTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnRpY2tldHNlcnZpY2UuaW5mcmFWMlN0b3JlSXNzdWVDYXJkcyhib2R5KS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgLy8gQ2xlYXJlZCBvbiBmYWlsdXJlIHRvbywgb3Igb25lIGJhZCByZXNwb25zZSBsZWF2ZXMgdGhlIHBhZ2Ugc2hpbW1lcmluZy5cclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy50aWNrZXRDYXJkID0gcmVzPy5jb2RlID09PSAyMDAgPyAocmVzPy5kYXRhPy5jYXJkcyA/PyBbXSkgOiBbXTtcclxuICAgICAgICB0aGlzLmNhcmRzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKCkgPT4geyB0aGlzLnRpY2tldENhcmQgPSBbXTsgdGhpcy5jYXJkc0xvYWRpbmcgPSBmYWxzZTsgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRUaWNrZXRMaXN0KGJvZHk6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5saXN0TG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnRpY2tldHNlcnZpY2UuaW5mcmFWMlN0b3JlVGlja2V0TGlzdChib2R5KS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRUaWNrZXRzKHJlcz8uY29kZSA9PT0gMjAwID8gKHJlcz8uZGF0YT8udGlja2V0cyA/PyBbXSkgOiBbXSk7XHJcbiAgICAgICAgdGhpcy5saXN0TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKCkgPT4geyB0aGlzLnNldFRpY2tldHMoW10pOyB0aGlzLmxpc3RMb2FkaW5nID0gZmFsc2U7IH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIExpc3Qgcm93cyBjYXJyeSBubyBjaGlsZHJlbiwgc28gdGhlIGZpcnN0IG9uZSBpcyBvcGVuZWQgdGhyb3VnaCB0aGUgc2FtZVxyXG4gIC8vIHBhdGggYSBjbGljayB0YWtlcyAtIG9uZSBwbGFjZSB0aGF0IGtub3dzIGhvdyB0byBmZXRjaCBhIHRpY2tldC5cclxuICBwcml2YXRlIHNldFRpY2tldHModGlja2V0czogVGlja2V0Um93W10pOiB2b2lkIHtcclxuICAgIHRoaXMudGlja2V0TGlzdCA9IHRpY2tldHM7XHJcbiAgICB0aGlzLnRpY2tldEluZm8gPSBudWxsO1xyXG5cclxuICAgIC8vIEEgbGlua2VkIHRpY2tldCBvcGVucyBpbnN0ZWFkIG9mIHRoZSBuZXdlc3QsIG9uY2UuIEl0IGZhbGxzIGJhY2sgdG8gdGhlXHJcbiAgICAvLyBuZXdlc3Qgd2hlbiB0aGUgaWQgaXMgbm90IGluIHRoZSBsaXN0IC0gYSBzdGFsZSBsaW5rLCBvciBhIHJhbmdlIHRoYXQgbm9cclxuICAgIC8vIGxvbmdlciBjb250YWlucyBpdC5cclxuICAgIGNvbnN0IGxpbmtlZCA9IHRoaXMucmVxdWVzdGVkVGlja2V0SWRcclxuICAgICAgPyB0aGlzLnRpY2tldExpc3QuZmluZEluZGV4KCh0KSA9PiB0LnRpY2tldElkID09PSB0aGlzLnJlcXVlc3RlZFRpY2tldElkKVxyXG4gICAgICA6IC0xO1xyXG4gICAgdGhpcy5yZXF1ZXN0ZWRUaWNrZXRJZCA9ICcnO1xyXG5cclxuICAgIGlmICh0aGlzLnRpY2tldExpc3QubGVuZ3RoKSB7IHRoaXMuc2hvd1RpY2tldChsaW5rZWQgPj0gMCA/IGxpbmtlZCA6IDApOyB9IGVsc2UgeyB0aGlzLmNob29zZW5Jc3N1ZSgnJyk7IH1cclxuICB9XHJcblxyXG4gIHNob3dUaWNrZXQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RDYXJkID0gaW5kZXg7XHJcbiAgICB0aGlzLmNob29zZW5Jc3N1ZSgnJyk7XHJcblxyXG4gICAgY29uc3Qgcm93ID0gdGhpcy50aWNrZXRMaXN0W2luZGV4XTtcclxuICAgIGNvbnN0IGJvZHkgPSB0aGlzLnNjb3BlQm9keSgpO1xyXG4gICAgaWYgKCFyb3cgfHwgIWJvZHkpIHsgdGhpcy50aWNrZXRJbmZvID0gbnVsbDsgcmV0dXJuOyB9XHJcblxyXG4gICAgdGhpcy5kZXRhaWxMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMudGlja2V0c2VydmljZS5pbmZyYVYyU3RvcmVUaWNrZXREZXRhaWwoeyAuLi5ib2R5LCB0aWNrZXRJZDogcm93LnRpY2tldElkIH0pXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHRpY2tldCA9IHJlcz8uY29kZSA9PT0gMjAwID8gcmVzPy5kYXRhPy50aWNrZXQgOiBudWxsO1xyXG4gICAgICAgICAgdGhpcy50aWNrZXRJbmZvID0gdGlja2V0ID8gdGhpcy53aXRoVmlld1N0YXRlKHRpY2tldCkgOiBudWxsO1xyXG4gICAgICAgICAgdGhpcy5kZXRhaWxMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKCkgPT4geyB0aGlzLnRpY2tldEluZm8gPSBudWxsOyB0aGlzLmRldGFpbExvYWRpbmcgPSBmYWxzZTsgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyBgZXhwYW5kZWRgIGFuZCBgc2hvd0FuYWx5c2lzYCBhcmUgdmlldyBzdGF0ZSB0aGUgQVBJIGRvZXMgbm90IHNlbmQsIHNvIHRoZXlcclxuICAvLyBhcmUgc2VlZGVkIGhlcmUuIFRoZSBuZXdlc3QgY3ljbGUgb3BlbnMgYnkgZGVmYXVsdDsgdGhlIHJlc3Qgc3RheSBjb2xsYXBzZWQuXHJcbiAgcHJpdmF0ZSB3aXRoVmlld1N0YXRlKHRpY2tldDogVGlja2V0Um93KTogVGlja2V0Um93IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIC4uLnRpY2tldCxcclxuICAgICAgY2hpbGRyZW46ICh0aWNrZXQuY2hpbGRyZW4gPz8gW10pLm1hcCgoY2hpbGQsIGkpID0+ICh7XHJcbiAgICAgICAgLi4uY2hpbGQsXHJcbiAgICAgICAgZXhwYW5kZWQ6IGkgPT09IDAsXHJcbiAgICAgICAgZW50cmllczogKGNoaWxkLmVudHJpZXMgPz8gW10pLm1hcCgoZW50cnkpID0+ICh7IC4uLmVudHJ5LCBzaG93QW5hbHlzaXM6IGZhbHNlIH0pKSxcclxuICAgICAgfSkpLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8vIFJvd3Mgb3BlbiBpbmRlcGVuZGVudGx5LCBzbyBzZXZlcmFsIGNhbiBiZSBleHBhbmRlZCBhdCBvbmNlLlxyXG4gIHRvZ2dsZUNoaWxkKGNoaWxkOiBDaGlsZFRpY2tldCk6IHZvaWQgeyBjaGlsZC5leHBhbmRlZCA9ICFjaGlsZC5leHBhbmRlZDsgfVxyXG4gIHRvZ2dsZUFuYWx5c2lzKGVudHJ5OiBUaW1lbGluZUVudHJ5KTogdm9pZCB7IGVudHJ5LnNob3dBbmFseXNpcyA9ICFlbnRyeS5zaG93QW5hbHlzaXM7IH1cclxuXHJcbiAgLyoqIFRhbmdvIGFuZCBUYW5nbyBXYXRjaCBnZXQgdGhlIHByb2R1Y3QgbG9nbzsgYW55b25lIGVsc2UgZ2V0cyBhIHBlcnNvbiBpY29uLiAqL1xyXG4gIGlzVGFuZ29BdXRob3IoYXV0aG9yOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBhdXRob3IudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCd0YW5nbycpO1xyXG4gIH1cclxuXHJcbiAgLy8gVGhlIGVudW0gc3BlbGxzIG5vX2FjdGlvbiB3aXRoIGFuIHVuZGVyc2NvcmUgYW5kIHN0b3JlcyBVbnJlYWNoYWJsZVxyXG4gIC8vIGNhcGl0YWxpc2VkOyBvbmx5IHRoZSBkaXNwbGF5IG5vcm1hbGlzZXMgdGhlbS4gU2FtZSB0cmVhdG1lbnQgYXMgdGhlXHJcbiAgLy8gQWdlbnQgU3RhdHVzIGNvbHVtbnMgb24gdGhlIHRpY2tldHMgYW5kIHN1bW1hcnkgdGFibGVzLlxyXG4gIGFnZW50TGFiZWwoZW50cnk6IFRpbWVsaW5lRW50cnkpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgcmF3ID0gU3RyaW5nKGVudHJ5Py5hZ2VudFN0YXR1cyA/PyAnJykucmVwbGFjZSgvXy9nLCAnICcpO1xyXG4gICAgcmV0dXJuIHJhdyA/IHJhdy5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHJhdy5zbGljZSgxKSA6ICcnO1xyXG4gIH1cclxuXHJcbiAgLy8gQW1iZXIga2VlcHMgZXNjYWxhdGVkIGxvb2tpbmcgbGlrZSB0aGUgYWxlcnQgaXQgaXM7IGV2ZXJ5dGhpbmcgZWxzZSBpc1xyXG4gIC8vIG5ldXRyYWwsIHNvIHRoZSBwaWxsIHJlcG9ydHMgd2l0aG91dCBzaG91dGluZy5cclxuICBhZ2VudFBpbGxDbGFzcyhlbnRyeTogVGltZWxpbmVFbnRyeSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gZW50cnk/LmVzY2FsYXRlZCA/ICdlc2NhbGF0ZWQtcGlsbCcgOiAnc3RhdHVzLXBpbGwnO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUm9vdCBjYXVzZSBpZGVudGlmaWVkIG9uIHRoZSBtb3N0IHJlY2VudCBjaGlsZC4gUmVhZCBzdHJhaWdodCBvZmYgdGhlIHJvdyAtXHJcbiAgICogdGhlIGxpc3Qgbm8gbG9uZ2VyIGNhcnJpZXMgdGhlIHRpbWVsaW5lcyB0byBkaWcgdGhyb3VnaC5cclxuICAgKi9cclxuICBwcml2YXRlIHJlY2VudFJvb3RDYXVzZSh0OiBUaWNrZXRSb3cpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHQucm9vdENhdXNlID8/ICcnO1xyXG4gIH1cclxuXHJcbiAgLy8gV29yZGluZyBpcyBzdGF0dXMtZHJpdmVuIHJhdGhlciB0aGFuIHN0b3JlZCB0ZXh0LCBtYXRjaGluZyB0aGUgVjEgdGFiLiBBXHJcbiAgLy8gY2xvc2VkIHRpY2tldCBzaG93cyB3aGF0IHdhcyBhY3R1YWxseSBmb3VuZCwgZmFsbGluZyBiYWNrIHRvIHRoZSBnZW5lcmljXHJcbiAgLy8gY2xvc2UgbWVzc2FnZSB3aGVuIG5vIGNoaWxkIGNhcnJpZXMgYSByb290IGNhdXNlLlxyXG4gIGNhcmRNZXNzYWdlKHQ6IFRpY2tldFJvdyk6IHN0cmluZyB7XHJcbiAgICBpZiAodC5zdGF0dXMgPT09ICdjbG9zZWQnKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnJlY2VudFJvb3RDYXVzZSh0KSB8fCAnVGhhbmsgeW91IGZvciB5b3VyIGFzc2lzdGFuY2UuIFdlIGhhdmUgcmVjZWl2ZWQgdGhlIGRhdGEgZnJvbSB5b3VyIFN0b3JlLic7XHJcbiAgICB9XHJcbiAgICAvLyBpc3N1ZVN0YXR1cyBmbGlwcyB0byAnaWRlbnRpZmllZCcgYmVmb3JlIHRoZSByZWFzb25zIGFyZSB3cml0dGVuLCBzbyB0aGVcclxuICAgIC8vIGZpZWxkcyB0aGVtc2VsdmVzIGRlY2lkZSB3aGV0aGVyIHRoZXJlIGlzIGFueXRoaW5nIHRvIG5hbWUuIFdpdGhvdXQgdGhpc1xyXG4gICAgLy8gdGhlIGNhcmQgcmVhZHMgXCJTdG9yZSBpcyBjdXJyZW50bHkgZW5jb3VudGVyaW5nIGEgIHdoaWNoIGlzIC5cIlxyXG4gICAgaWYgKHQuaXNzdWVTdGF0dXMgPT09ICdub3RpZGVudGlmaWVkJyB8fCAhdC5wcmltYXJ5SXNzdWUgfHwgIXQuc2Vjb25kYXJ5SXNzdWUpIHtcclxuICAgICAgcmV0dXJuICdXZSBoYXZlIG5vdCByZWNlaXZlZCBkYXRhIGZyb20geW91ciBzdG9yZS4gV2UgYXJlIGN1cnJlbnRseSBpbnZlc3RpZ2F0aW5nIHRoZSBpc3N1ZS4nO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgc3RhdHVzQmFkZ2Uoc3RhdHVzOiBUaWNrZXRTdGF0dXMpOiBzdHJpbmcge1xyXG4gICAgaWYgKHN0YXR1cyA9PT0gJ2Nsb3NlZCcpIHsgcmV0dXJuICdiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzJzsgfVxyXG4gICAgcmV0dXJuIHN0YXR1cyA9PT0gJ2lucHJvZ3Jlc3MnID8gJ2JhZGdlIGJhZGdlLWxpZ2h0LXByaW1hcnknIDogJ2JhZGdlIGJhZGdlLWxpZ2h0LXdhcm5pbmcnO1xyXG4gIH1cclxuXHJcbiAgLy8gJycgY2xlYXJzIHRoZSBzZWxlY3Rpb24gYW5kIHJldHVybnMgdG8gdGhlIG9wdGlvbiBsaXN0IOKAlCBzYW1lIGNvbnRyYWN0IGFzIFYxLlxyXG4gIGNob29zZW5Jc3N1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkSXNzdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuc2Vjb25kYXJ5SXNzdWVzID0gKE1PQ0tfU0VDT05EQVJZX1JFQVNPTlNbdmFsdWVdID8/IFtdKS5tYXAoKG5hbWUpID0+ICh7IG5hbWUsIGNoZWNrZWQ6IGZhbHNlIH0pKTtcclxuICAgIHRoaXMuaGliZXJuYXRpb25EYXlzID0gMDtcclxuICAgIHRoaXMuY29tbWVudHMgPSAnJztcclxuICB9XHJcblxyXG4gIHRvZ2dsZUNoZWNrYm94KGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuc2Vjb25kYXJ5SXNzdWVzW2luZGV4XS5jaGVja2VkID0gIXRoaXMuc2Vjb25kYXJ5SXNzdWVzW2luZGV4XS5jaGVja2VkO1xyXG4gIH1cclxuXHJcbiAgLy8gTWlycm9ycyBkZWNyZXNlQ291bnQoKSAvIGluY3JlYXNlQ291bnQoKSBvbiB0aGUgVjEgdGFiLlxyXG4gIGRlY3JlYXNlSGliZXJuYXRpb24oKTogdm9pZCB7IGlmICh0aGlzLmhpYmVybmF0aW9uRGF5cyA+IDApIHsgdGhpcy5oaWJlcm5hdGlvbkRheXMgLT0gMTsgfSB9XHJcbiAgaW5jcmVhc2VIaWJlcm5hdGlvbigpOiB2b2lkIHsgdGhpcy5oaWJlcm5hdGlvbkRheXMgKz0gMTsgfVxyXG5cclxuICBnZXQgY2FuU3VibWl0SXNzdWUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWNvbmRhcnlJc3N1ZXMuc29tZSgocikgPT4gci5jaGVja2VkKTtcclxuICB9XHJcblxyXG4gIC8vIE1vY2tlZDogd3JpdGVzIHN0cmFpZ2h0IG9udG8gdGhlIHNlbGVjdGVkIHJvdyBzbyB0aGUgY2hhbmdlIHN1cnZpdmVzXHJcbiAgLy8gc3dpdGNoaW5nIHRpY2tldHMuIE5vIHJlcXVlc3QgaXMgbWFkZS5cclxuICBzdWJtaXRJc3N1ZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHQgPSB0aGlzLnRpY2tldEluZm87XHJcbiAgICBpZiAoIXQgfHwgIXRoaXMuY2FuU3VibWl0SXNzdWUpIHsgcmV0dXJuOyB9XHJcbiAgICBjb25zdCByZWFzb25zID0gdGhpcy5zZWNvbmRhcnlJc3N1ZXMuZmlsdGVyKChyKSA9PiByLmNoZWNrZWQpLm1hcCgocikgPT4gci5uYW1lKTtcclxuICAgIHQuaXNzdWVTdGF0dXMgPSAnaWRlbnRpZmllZCc7XHJcbiAgICB0LnN0b3JlUmVzcG9uZGVkID0gdHJ1ZTtcclxuICAgIHQucHJpbWFyeUlzc3VlID0gdGhpcy5zZWxlY3RlZElzc3VlO1xyXG4gICAgdC5zZWNvbmRhcnlJc3N1ZSA9IHJlYXNvbnMuam9pbignLCAnKTtcclxuICAgIHQuY29tbWVudHMgPSB0LmNvbW1lbnRzICsgMTtcclxuXHJcbiAgICAvLyBUaGUgc2FtZSBjaGlsZCB0aGUgZm9ybSB3YXMgc2hvd24gdW5kZXIgLSB0aGUgbGl2ZSBvbmUsIG5vdCB0aGUgb2xkZXN0LlxyXG4gICAgY29uc3QgY2hpbGQgPSB0aGlzLmlkZW50aWZ5Q2hpbGQ7XHJcbiAgICBpZiAoY2hpbGQpIHtcclxuICAgICAgY29uc3QgcGFydHMgPSBbYElzc3VlIGlkZW50aWZpZWQgYXMgJHt0aGlzLnNlbGVjdGVkSXNzdWV9IC0gJHt0LnNlY29uZGFyeUlzc3VlfS5gXTtcclxuICAgICAgaWYgKHRoaXMuaGliZXJuYXRpb25EYXlzID4gMCkgeyBwYXJ0cy5wdXNoKGBIaWJlcm5hdGVkIGZvciAke3RoaXMuaGliZXJuYXRpb25EYXlzfSBkYXkke3RoaXMuaGliZXJuYXRpb25EYXlzID09PSAxID8gJycgOiAncyd9LmApOyB9XHJcbiAgICAgIGlmICh0aGlzLmNvbW1lbnRzLnRyaW0oKSkgeyBwYXJ0cy5wdXNoKHRoaXMuY29tbWVudHMudHJpbSgpKTsgfVxyXG4gICAgICBjaGlsZC5lbnRyaWVzLnB1c2goeyBraW5kOiAncmFpc2VkJywgYXV0aG9yOiAnU3RvcmUnLCBhdDogbmV3IERhdGUoKS50b0xvY2FsZVN0cmluZygnZW4tR0InLCB7IGRheTogJzItZGlnaXQnLCBtb250aDogJ3Nob3J0JywgeWVhcjogJ251bWVyaWMnLCBob3VyOiAnMi1kaWdpdCcsIG1pbnV0ZTogJzItZGlnaXQnIH0pLCB0ZXh0OiBwYXJ0cy5qb2luKCcgJykgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jaG9vc2VuSXNzdWUoJycpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHQtM1wiPlxyXG4gICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLWxhYmVsIG1iLTJcIj5JbmZyYSBUaWNrZXRzIHYyPC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImhlYWRlckZpbHRlcj8uZGF0ZT8uc3RhcnREYXRlID09PSBoZWFkZXJGaWx0ZXI/LmRhdGU/LmVuZERhdGVcIiBjbGFzcz1cInRleHQtc3ViIG1iLTJcIj5BbiBvdmVydmlldyBvZiBhbGwgdGhlIHRpY2tldHMgZm9yIHRpbGwge3sgaGVhZGVyRmlsdGVyPy5kYXRlPy5lbmREYXRlIHwgY3VzdG9tRGF0ZUZvcm1hdCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJoZWFkZXJGaWx0ZXI/LmRhdGU/LnN0YXJ0RGF0ZSAhPT0gaGVhZGVyRmlsdGVyPy5kYXRlPy5lbmREYXRlXCIgY2xhc3M9XCJ0ZXh0LXN1YiBtYi0yXCI+QW4gb3ZlcnZpZXcgb2YgYWxsIHRoZSB0aWNrZXRzIGZvciB7eyBoZWFkZXJGaWx0ZXI/LmRhdGU/LnN0YXJ0RGF0ZSB8IGN1c3RvbURhdGVGb3JtYXQgfX0gLSB7eyBoZWFkZXJGaWx0ZXI/LmRhdGU/LmVuZERhdGUgfCBjdXN0b21EYXRlRm9ybWF0IH19PC9zcGFuPlxyXG4gICAgICAgIDwvaDM+XHJcbiAgICAgICAgPCEtLSBGaWx0ZXIgYW5kIEV4cG9ydCByZW5kZXIgaW5lcnQ6IGxpYi1maWx0ZXJzIG5lZWRzIHJlYWwgZmFjZXRzLCBhbmRcclxuICAgICAgICAgICAgIHRoZXJlIGlzIG5vdGhpbmcgdG8gZXhwb3J0IHdoaWxlIHRoZSBkYXRhIGlzIG1vY2tlZC4gLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBteC0yIGJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zIHRleHQtbm93cmFwIGJvcmRlci12YWxcIj5cclxuICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMi41IDVIMTcuNU01IDEwSDE1TTguMzMzMzMgMTVIMTEuNjY2N1wiIHN0cm9rZT1cIiMxMDE4MjhcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+RmlsdGVyPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgbXgtMiBidG4tb3V0bGluZSBidG4tb3V0bGluZS1kZWZhdWx0IHJvdW5kZWQtMyB0ZXh0LW5vd3JhcCBib3JkZXItdmFsXCI+XHJcbiAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE3LjUgMTIuNVYxNS44MzMzQzE3LjUgMTYuMjc1NCAxNy4zMjQ0IDE2LjY5OTMgMTcuMDExOCAxNy4wMTE4QzE2LjY5OTMgMTcuMzI0NCAxNi4yNzU0IDE3LjUgMTUuODMzMyAxNy41SDQuMTY2NjdDMy43MjQ2NCAxNy41IDMuMzAwNzIgMTcuMzI0NCAyLjk4ODE2IDE3LjAxMThDMi42NzU1OSAxNi42OTkzIDIuNSAxNi4yNzU0IDIuNSAxNS44MzMzVjEyLjVNMTQuMTY2NyA2LjY2NjY3TDEwIDIuNU0xMCAyLjVMNS44MzMzMyA2LjY2NjY3TTEwIDIuNVYxMi41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzEwMTgyOFwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj5FeHBvcnQ8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgIDwhLS0gU2hpbW1lciB3aGlsZSBlaXRoZXIgY2FsbCBpcyBpbiBmbGlnaHQuIFRoZSBzdHlsZXMgYXJlIHRoZSBzaGVsbCdzXHJcbiAgICAgICAgICAgICAoc3R5bGVzLnNjc3MgYC5sb2FkZXJgKSwgc28gdGhlIC5sb2FkZXIgPiAuc2hpbW1lciA+IC53cmFwcGVyID4gLnN0cm9rZVxyXG4gICAgICAgICAgICAgbmVzdGluZyBoYXMgdG8gc3RheSBhcyBpdCBpcyBoZXJlLiAtLT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwibG9hZGluZ1wiIGNsYXNzPVwicm93IGxvYWRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsb2FkaW5nXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBnYXAtMyBtYi03XCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGlzc3VlIG9mIHRpY2tldENhcmRcIiBjbGFzcz1cImlzc3VlY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdj48c3BhbiBjbGFzcz1cInRpdGxlXCI+e3sgaXNzdWUuY291bnQgfX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsIGZ3LXNlbWlib2xkXCI+e3sgaXNzdWUubmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYWluY2FyZC1jb250ZW50XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcC0xMFwiPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gTGVmdDogdW5jaGFuZ2VkIGZyb20gdGhlIFRpY2tldHMgdGFiLiAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNiBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGRhdGEgb2YgdGlja2V0TGlzdDsgbGV0IGluZGV4ID0gaW5kZXhcIiBjbGFzcz1cImlzc3VlY2FyZCB3LTEwMCBtYi00XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dUaWNrZXQoaW5kZXgpXCIgW25nQ2xhc3NdPVwic2VsZWN0Q2FyZCA9PT0gaW5kZXggPyAnYWN0aXZlJyA6ICcnXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbmNhcmQtbGFiZWwgZnctYm9sZCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGltZyBzcmM9XCIuL2Fzc2V0cy90YW5nby9JbWFnZXMvdGlja2V0LnN2Z1wiPiB7eyBkYXRhLnRpY2tldElkIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnR0ZXh0IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciB0ZXh0LWNlbnRlciBmdy1zZW1pYm9sZCBweC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAuNjY2NyAxLjMzMzk4VjQuMDAwNjVNNS4zMzMzMyAxLjMzMzk4VjQuMDAwNjVNMiA2LjY2NzMySDE0TTMuMzMzMzMgMi42NjczMkgxMi42NjY3QzEzLjQwMyAyLjY2NzMyIDE0IDMuMjY0MjcgMTQgNC4wMDA2NVYxMy4zMzRDMTQgMTQuMDcwNCAxMy40MDMgMTQuNjY3MyAxMi42NjY3IDE0LjY2NzNIMy4zMzMzM0MyLjU5Njk1IDE0LjY2NzMgMiAxNC4wNzA0IDIgMTMuMzM0VjQuMDAwNjVDMiAzLjI2NDI3IDIuNTk2OTUgMi42NjczMiAzLjMzMzMzIDIuNjY3MzJaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtMVwiPnt7IGRhdGEuY3JlYXRlZEF0IHwgZGF0ZTogJ2RkLU1NLXl5eXknIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZGF0YS5pc3N1ZUNsb3NlZERhdGVcIiBjbGFzcz1cImNvbnRlbnR0ZXh0IGZ3LXNlbWlib2xkIHBlLTNcIj4tIHt7IGRhdGEuaXNzdWVDbG9zZWREYXRlIHwgZGF0ZTogJ2RkLU1NLXl5eXknIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNhcmRNZXNzYWdlKGRhdGEpXCIgY2xhc3M9XCJtYi01IGNvbnRlbnR0ZXh0IGZ3LXNlbWlib2xkXCI+e3sgY2FyZE1lc3NhZ2UoZGF0YSkgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFjYXJkTWVzc2FnZShkYXRhKVwiIGNsYXNzPVwibWItNSBjb250ZW50dGV4dCBmdy1zZW1pYm9sZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmUgaXMgY3VycmVudGx5IGVuY291bnRlcmluZyBhIDxzcGFuIGNsYXNzPVwiZnctYm9sZC03MDBcIj57eyBkYXRhLnByaW1hcnlJc3N1ZSB9fTwvc3Bhbj4gd2hpY2ggaXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnctYm9sZC03MDBcIj57eyBkYXRhLnNlY29uZGFyeUlzc3VlIH19Ljwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZSBkLWZsZXggYWxpZ24taXRlbXMtY2VudHJlIGp1c3RpZnktY29udGVudC1jZW50cmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ltYWdlcy91c2VyUHJvZmlsZS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29udGVudHRleHQgZnctc2VtaWJvbGQgcHgtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTQgMTBDMTQgMTAuMzUzNiAxMy44NTk1IDEwLjY5MjggMTMuNjA5NSAxMC45NDI4QzEzLjM1OTQgMTEuMTkyOSAxMy4wMjAzIDExLjMzMzMgMTIuNjY2NyAxMS4zMzMzSDQuNjY2NjdMMiAxNFYzLjMzMzMzQzIgMi45Nzk3MSAyLjE0MDQ4IDIuNjQwNTcgMi4zOTA1MiAyLjM5MDUyQzIuNjQwNTcgMi4xNDA0OCAyLjk3OTcxIDIgMy4zMzMzMyAySDEyLjY2NjdDMTMuMDIwMyAyIDEzLjM1OTQgMi4xNDA0OCAxMy42MDk1IDIuMzkwNTJDMTMuODU5NSAyLjY0MDU3IDE0IDIuOTc5NzEgMTQgMy4zMzMzM1YxMFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm14LTFcIj57eyBkYXRhLmNvbW1lbnRzIH19PC9zcGFuPiBjb21tZW50c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJzdGF0dXNCYWRnZShkYXRhLnN0YXR1cylcIj57eyBkYXRhLnN0YXR1cyB8IHRpdGxlY2FzZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gUmlnaHQ6IHRoZSBzZWxlY3RlZCBwYXJlbnQsIHdpdGggaXRzIGN5Y2xlIGNoaWxkcmVuIGFzIGFuIGFjY29yZGlvbiAtLT5cclxuICAgICAgICAgICAgICAgIDwhLS0gT25seSB0aGlzIGNvbHVtbiByZWxvYWRzIHdoZW4gYSBjYXJkIGlzIGNsaWNrZWQsIHNvIGl0XHJcbiAgICAgICAgICAgICAgICAgICAgIHNoaW1tZXJzIG9uIGl0cyBvd24gcmF0aGVyIHRoYW4gYmxhbmtpbmcgdGhlIHdob2xlIHRhYi4gLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGV0YWlsTG9hZGluZ1wiIGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZGV0YWlsTG9hZGluZyAmJiB0aWNrZXRJbmZvXCIgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluY2FyZC1sYWJlbCBmdy1ib2xkIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aW1nIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ltYWdlcy90aWNrZXQuc3ZnXCI+PHNwYW4gY2xhc3M9XCJteC0yXCI+e3sgdGlja2V0SW5mby50aWNrZXRJZCB9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gQ3ljbGUgY2hpbGRyZW4uIFJvd3Mgb3BlbiBpbmRlcGVuZGVudGx5LiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjaGlsZCBvZiB0aWNrZXRJbmZvLmNoaWxkcmVuXCIgY2xhc3M9XCJjaGlsZC1yb3cgbWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpbGQtaGVhZCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGN1cnNvci1wb2ludGVyIHB4LTQgcHktM1wiIChjbGljayk9XCJ0b2dnbGVDaGlsZChjaGlsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hldnJvbiBtZS0zXCIgW2NsYXNzLm9wZW5dPVwiY2hpbGQuZXhwYW5kZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTUgMi41TDkuNSA3TDUgMTEuNVwiIHN0cm9rZT1cIiMxMDE4MjhcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWV0YS1waWxsIGN5Y2xlLWlkIHRpbWluZ3RleHQgZnctc2VtaWJvbGQgbWUtM1wiPnt7IGNoaWxkLmN5Y2xlSWQgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdHJlYW1zLXBpbGwgdGltaW5ndGV4dCBtZS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yMyAxN0MyMyAxNy41MzA0IDIyLjc4OTMgMTguMDM5MSAyMi40MTQyIDE4LjQxNDJDMjIuMDM5MSAxOC43ODkzIDIxLjUzMDQgMTkgMjEgMTlIM0MyLjQ2OTU3IDE5IDEuOTYwODYgMTguNzg5MyAxLjU4NTc5IDE4LjQxNDJDMS4yMTA3MSAxOC4wMzkxIDEgMTcuNTMwNCAxIDE3VjZDMSA1LjQ2OTU3IDEuMjEwNzEgNC45NjA4NiAxLjU4NTc5IDQuNTg1NzlDMS45NjA4NiA0LjIxMDcxIDIuNDY5NTcgNCAzIDRIN0w5IDFIMTVMMTcgNEgyMUMyMS41MzA0IDQgMjIuMDM5MSA0LjIxMDcxIDIyLjQxNDIgNC41ODU3OUMyMi43ODkzIDQuOTYwODYgMjMgNS40Njk1NyAyMyA2VjE3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0YwNDQzOFwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmdy1ib2xkIG14LTFcIj57eyBjaGlsZC5zdHJlYW1zRG93biB9fTwvc3Bhbj4gc3RyZWFtcyBkb3duXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJzdGF0dXNCYWRnZShjaGlsZC5zdGF0dXMpXCIgY2xhc3M9XCJmbGV4LXNocmluay0wXCI+e3sgY2hpbGQuc3RhdHVzIHwgdGl0bGVjYXNlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjaGlsZC5leHBhbmRlZFwiIGNsYXNzPVwiY2hpbGQtYm9keSBweC01IHB5LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbm5lci1jYXJkIHB4LTUgcHktNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGVudHJ5IG9mIGNoaWxkLmVudHJpZXM7IGxldCBsYXN0ID0gbGFzdDsgbGV0IGZpcnN0ID0gZmlyc3RcIiBjbGFzcz1cImQtZmxleFwiIFtjbGFzcy5wdC01XT1cIiFmaXJzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBtZS00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF2YXRhclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJpc1RhbmdvQXV0aG9yKGVudHJ5LmF1dGhvcik7IGVsc2UgcGVyc29uSWNvblwiIGNsYXNzPVwiYXZhdGFyLWxvZ29cIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JbWFnZXMvdGFuZ29FeWUtbWFyay5zdmdcIiBhbHQ9XCJUYW5nb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcGVyc29uSWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEzLjMzMjcgMTRWMTIuNjY2N0MxMy4zMzI3IDExLjk1OTQgMTMuMDUxNyAxMS4yODExIDEyLjU1MTYgMTAuNzgxQzEyLjA1MTUgMTAuMjgxIDExLjM3MzMgMTAgMTAuNjY2IDEwSDUuMzMyNjhDNC42MjU0NCAxMCAzLjk0NzE2IDEwLjI4MSAzLjQ0NzA2IDEwLjc4MUMyLjk0Njk3IDExLjI4MTEgMi42NjYwMiAxMS45NTk0IDIuNjY2MDIgMTIuNjY2N1YxNE0xMC42NjYgNC42NjY2N0MxMC42NjYgNi4xMzk0MyA5LjQ3MjExIDcuMzMzMzMgNy45OTkzNSA3LjMzMzMzQzYuNTI2NTkgNy4zMzMzMyA1LjMzMjY4IDYuMTM5NDMgNS4zMzI2OCA0LjY2NjY3QzUuMzMyNjggMy4xOTM5MSA2LjUyNjU5IDIgNy45OTkzNSAyQzkuNDcyMTEgMiAxMC42NjYgMy4xOTM5MSAxMC42NjYgNC42NjY2N1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFsYXN0XCIgY2xhc3M9XCJjb25uZWN0b3JcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgcGItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC13cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYWluY2FyZC1sYWJlbCBmdy1ib2xkXCI+e3sgZW50cnkuYXV0aG9yIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZW50cnkuYXRcIiBjbGFzcz1cInRpbWluZ3RleHQgbXgtM1wiPnt7IGVudHJ5LmF0IH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gVGhlIGFnZW50J3MgdmVyZGljdCwgd2hhdGV2ZXIgaXQgaXMgLSBub3Qgb25seSBlc2NhbGF0ZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBYnNlbnQgd2hlbiB0aGUgYWdlbnQgbmV2ZXIgcmVwb3J0ZWQuIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZW50cnkuYWdlbnRTdGF0dXNcIiBbbmdDbGFzc109XCJhZ2VudFBpbGxDbGFzcyhlbnRyeSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRpbWluZ3RleHQgZnctc2VtaWJvbGQgbXMtYXV0byB0ZXh0LXVwcGVyY2FzZVwiPjxzcGFuIGNsYXNzPVwiZG90IG1lLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRvdC1hbWJlcl09XCJlbnRyeS5lc2NhbGF0ZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRvdC1ncmV5XT1cIiFlbnRyeS5lc2NhbGF0ZWRcIj48L3NwYW4+e3sgYWdlbnRMYWJlbChlbnRyeSkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZW50cnkudGV4dFwiIGNsYXNzPVwiY29udGVudHRleHQgZnctc2VtaWJvbGQgbXQtMlwiPnt7IGVudHJ5LnRleHQgfX08L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEFuYWx5c2lzIGVudHJ5OiBsYWJlbC92YWx1ZSBwYWlycywgdGhlbiB0aGUgZXhwYW5kZXIgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZW50cnkua2luZCA9PT0gJ2FuYWx5c2lzJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldGEtbGFiZWwgdGltaW5ndGV4dCBmdy1zZW1pYm9sZFwiPklTU1VFIENBVEVHT1JZPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldGEtdmFsdWUgY29udGVudHRleHQgZnctc2VtaWJvbGRcIj57eyBlbnRyeS5pc3N1ZUNhdGVnb3J5IH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldGEtbGFiZWwgdGltaW5ndGV4dCBmdy1zZW1pYm9sZFwiPlJPT1QgQ0FVU0U8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWV0YS12YWx1ZSBjb250ZW50dGV4dCBmdy1zZW1pYm9sZFwiPnt7IGVudHJ5LnJvb3RDYXVzZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYW5hbHlzaXMtbGluayBjb250ZW50dGV4dCBmdy1zZW1pYm9sZCBjdXJzb3ItcG9pbnRlciBtdC00XCIgKGNsaWNrKT1cInRvZ2dsZUFuYWx5c2lzKGVudHJ5KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXZyb24tZG93biBtZS0yXCIgW2NsYXNzLm9wZW5dPVwiZW50cnkuc2hvd0FuYWx5c2lzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTMgNUw3IDkuNUwxMSA1XCIgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZW50cnkuc2hvd0FuYWx5c2lzID8gJ0hpZGUgdGhlIGZ1bGwgYW5hbHlzaXMnIDogJ1Nob3cgdGhlIGZ1bGwgYW5hbHlzaXMnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImVudHJ5LnNob3dBbmFseXNpcyAmJiBlbnRyeS5hbmFseXNpc1wiIGNsYXNzPVwibXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYW5hbHlzaXMtcm93IGQtZmxleCBtYi00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRvdCBhbmFseXNpcy1kb3QgbWUtM1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1pbmd0ZXh0IGZ3LXNlbWlib2xkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhbmFseXNpcy1sYWJlbCB0aW1pbmd0ZXh0IGZ3LXNlbWlib2xkIG1lLTNcIj5DQVVTRTwvc3Bhbj57eyBlbnRyeS5hbmFseXNpcy5jYXVzZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYW5hbHlzaXMtcm93IGQtZmxleCBtYi00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRvdCBhbmFseXNpcy1kb3QgbWUtM1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1pbmd0ZXh0IGZ3LXNlbWlib2xkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhbmFseXNpcy1sYWJlbCB0aW1pbmd0ZXh0IGZ3LXNlbWlib2xkIG1lLTNcIj5QUk9PRjwvc3Bhbj57eyBlbnRyeS5hbmFseXNpcy5wcm9vZiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYW5hbHlzaXMtcm93IGQtZmxleCBtYi00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRvdCBhbmFseXNpcy1kb3QgbWUtM1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1pbmd0ZXh0IGZ3LXNlbWlib2xkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhbmFseXNpcy1sYWJlbCB0aW1pbmd0ZXh0IGZ3LXNlbWlib2xkIG1lLTNcIj5GSVg8L3NwYW4+e3sgZW50cnkuYW5hbHlzaXMuZml4IH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhbmFseXNpcy1yb3cgZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRvdCBhbmFseXNpcy1kb3QgbWUtM1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1pbmd0ZXh0IGZ3LXNlbWlib2xkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhbmFseXNpcy1sYWJlbCB0aW1pbmd0ZXh0IGZ3LXNlbWlib2xkIG1lLTNcIj5OT1RFUzwvc3Bhbj57eyBlbnRyeS5hbmFseXNpcy5ub3RlcyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBJc3N1ZSBpZGVudGlmaWNhdGlvbiwgaW5zaWRlIHRoZSBjaGlsZCBwYW5lbC4gSWNvbnMgYXJlIGNvcGllZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgVjEgdGFiIHNvIHRoZSB0d28gdGFicyByZW5kZXIgaWRlbnRpY2FsbHkuIE9ubHkgdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXZlIGN5Y2xlIGNhcnJpZXMgaXQgLSBhIGNsb3NlZCBvbmUgaGFzIG5vdGhpbmcgdG8gYW5zd2VyIC1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvIGl0IHN0aWxsIGFwcGVhcnMgYXQgbW9zdCBvbmNlIHBlciBwYXJlbnQuIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93SXNzdWVQaWNrZXIgJiYgaXNJZGVudGlmeUNoaWxkKGNoaWxkKVwiIGNsYXNzPVwiaW52ZXN0aWdhdGlvbiBmdy1zZW1pYm9sZCBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtpbmRseSBjaG9vc2UgdGhlIG9wdGlvbiBiZWxvdyB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBpc3N1ZSB5b3UgYXJlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVyaWVuY2luZyBpbiB0aGUgc3RvcmUuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3QtdW5zdHlsZWQgcHgtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicHktNCBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJjaG9vc2VuSXNzdWUoJ0ludGVybmV0IElzc3VlcycpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImludGVybmV0SWNvblwiPjwvbmctY29udGFpbmVyPiA8c3BhbiBjbGFzcz1cInB4LTNcIj5JbnRlcm5ldCBJc3N1ZXM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicHktNCBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJjaG9vc2VuSXNzdWUoJ0NhbWVyYSBJc3N1ZXMnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjYW1lcmFJY29uXCI+PC9uZy1jb250YWluZXI+IDxzcGFuIGNsYXNzPVwicHgtM1wiPkNhbWVyYSBJc3N1ZXM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicHktNCBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJjaG9vc2VuSXNzdWUoJ1N5c3RlbSBJc3N1ZXMnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzeXN0ZW1JY29uXCI+PC9uZy1jb250YWluZXI+IDxzcGFuIGNsYXNzPVwicHgtM1wiPlN5c3RlbSBJc3N1ZXM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicHktNCBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJjaG9vc2VuSXNzdWUoJ1N0b3JlIE9wZXJhdGlvbiBJc3N1ZXMnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdG9yZUljb25cIj48L25nLWNvbnRhaW5lcj4gPHNwYW4gY2xhc3M9XCJweC0zXCI+U3RvcmUgT3BlcmF0aW9uIElzc3Vlczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJweS00IGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImNob29zZW5Jc3N1ZSgnQXBwbGljYXRpb24gSXNzdWVzJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYXBwSWNvblwiPjwvbmctY29udGFpbmVyPiA8c3BhbiBjbGFzcz1cInB4LTNcIj5BcHBsaWNhdGlvbiBJc3N1ZXM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0lzc3VlRGV0YWlsICYmIGlzSWRlbnRpZnlDaGlsZChjaGlsZClcIiBjbGFzcz1cIm10LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9wZW5lZGlzc3VlIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJvZmlsZS1sYWJlbCBmdy1zZW1pYm9sZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZElzc3VlID09PSAnSW50ZXJuZXQgSXNzdWVzJ1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImludGVybmV0SWNvblwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZElzc3VlID09PSAnQ2FtZXJhIElzc3VlcydcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJjYW1lcmFJY29uXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkSXNzdWUgPT09ICdTeXN0ZW0gSXNzdWVzJ1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN5c3RlbUljb25cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRJc3N1ZSA9PT0gJ1N0b3JlIE9wZXJhdGlvbiBJc3N1ZXMnXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RvcmVJY29uXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkSXNzdWUgPT09ICdBcHBsaWNhdGlvbiBJc3N1ZXMnXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYXBwSWNvblwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPnt7IHNlbGVjdGVkSXNzdWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJjaG9vc2VuSXNzdWUoJycpXCIgY2xhc3M9XCJtYWluY2FyZC1jb250ZW50IGJnLXdoaXRlIHB4LTMgcHktMiBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyLjgzMjcgNi45OTkzNUgxLjE2NjAyTTEuMTY2MDIgNi45OTkzNUw2Ljk5OTM1IDEyLjgzMjdNMS4xNjYwMiA2Ljk5OTM1TDYuOTk5MzUgMS4xNjYwMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbmNhcmQtY29udGVudCB3LTEwMCBtdC0yIHB4LTQgcHktMiBwYi00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbmNhcmQtbGFiZWwgZnctc2VtaWJvbGQgcHktMlwiPlBsZWFzZSBzZWxlY3QgdGhlIHJlbGV2YW50IHByb2JsZW0gZmFjaW5nIGZyb20gdGhlIGZvbGxvd2luZzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXNzdWUgb2Ygc2Vjb25kYXJ5SXNzdWVzOyBsZXQgaW5kZXggPSBpbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYWluY2FyZC1jb250ZW50IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDAgbXQtMiBweC00IHB5LTQgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVDaGVja2JveChpbmRleClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aW1nIGNsYXNzPVwicGUtM1wiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ltYWdlcy9GZWF0dXJlZCBpY29uLnBuZ1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkaW5ndGV4dFwiPnt7IGlzc3VlLm5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdW5kZWRjaGVjayBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJpc3N1ZS5jaGVja2VkXCIgY2xhc3M9XCJwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gSGliZXJuYXRpb24gKyBjb21tZW50IHJvdywgY29waWVkIGZyb20gdGhlIFYxIHRhYlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aWNrZXQtaW5mcmEuY29tcG9uZW50Lmh0bWw6MzMzKSBzbyBib3RoIHJlYWQgdGhlIHNhbWUuIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBwdC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiaGliZXJuYXRpb25WMlwiIGNsYXNzPVwibWFpbmNhcmQtbGFiZWwgZnctc2VtaWJvbGQgbWItMlwiPkhpYmVybmF0aW9uIChpbiBkYXlzKSAqPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTI1MHB4IHBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIHRyYW5zbGF0ZS1taWRkbGUteSB0b3AtNTAgbWUtNSBwcy0zIHRpY2tldERheXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiB0b2dnbGUtb2ZmIHN2Zy1pY29uLTFcIiBbbmdDbGFzc109XCJoaWJlcm5hdGlvbkRheXMgPT09IDAgPyAncGUtbm9uZScgOiAnJ1wiIChjbGljayk9XCJkZWNyZWFzZUhpYmVybmF0aW9uKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjEgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNC42NjYwMiAxMEgxNi4zMzI3XCIgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiaGliZXJuYXRpb25WMlwiIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJoaWJlcm5hdGlvbkRheXNcIiBwbGFjZWhvbGRlcj1cIjBcIiByZWFkb25seSAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSB0cmFuc2xhdGUtbWlkZGxlLXkgdG9wLTUwIGVuZC0wIG1lLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiB0b2dnbGUtb24gc3ZnLWljb24tMSB0aWNrZXREYXlzXCIgKGNsaWNrKT1cImluY3JlYXNlSGliZXJuYXRpb24oKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMSAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMC40OTkzIDQuMTY2NVYxNS44MzMyTTQuNjY2MDIgOS45OTk4NEgxNi4zMzI3XCIgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gVGhlIHBhcGVyY2xpcCBpcyBpbmVydDogVjEgcG9zdHMgdG8gdXBsb2FkQXR0YWNobWVudHMvLCBhbmQgdGhlcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBub3doZXJlIHRvIHVwbG9hZCB0byB3aGlsZSB0aGUgZGF0YSBpcyBtb2NrZWQuIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtdC0xMCBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwiY29tbWVudHNcIiBwbGFjZWhvbGRlcj1cIkFkZCB5b3VyIGNvbW1lbnRzLi5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgYnRuIGJ0bi1kZWZhdWx0IGJ0bi1vdXRsaW5lIG1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNy44NjY2IDkuMjA4MzVMMTAuMjA4MiAxNi44NjY3QzkuMjcwMDUgMTcuODA0OSA3Ljk5NzU3IDE4LjMzMiA2LjY3MDc1IDE4LjMzMkM1LjM0MzkzIDE4LjMzMiA0LjA3MTQ1IDE3LjgwNDkgMy4xMzMyNSAxNi44NjY3QzIuMTk1MDUgMTUuOTI4NSAxLjY2Nzk3IDE0LjY1NiAxLjY2Nzk3IDEzLjMyOTJDMS42Njc5NyAxMi4wMDI0IDIuMTk1MDUgMTAuNzI5OSAzLjEzMzI1IDkuNzkxNjhMMTAuNzkxNiAyLjEzMzM1QzExLjQxNzEgMS41MDc4OCAxMi4yNjU0IDEuMTU2NDkgMTMuMTQ5OSAxLjE1NjQ5QzE0LjAzNDUgMS4xNTY0OSAxNC44ODI4IDEuNTA3ODggMTUuNTA4MiAyLjEzMzM1QzE2LjEzMzcgMi43NTg4MiAxNi40ODUxIDMuNjA3MTMgMTYuNDg1MSA0LjQ5MTY4QzE2LjQ4NTEgNS4zNzYyMyAxNi4xMzM3IDYuMjI0NTUgMTUuNTA4MiA2Ljg1MDAyTDcuODQxNTggMTQuNTA4M0M3LjUyODg1IDE0LjgyMTEgNy4xMDQ2OSAxNC45OTY4IDYuNjYyNDIgMTQuOTk2OEM2LjIyMDE0IDE0Ljk5NjggNS43OTU5OCAxNC44MjExIDUuNDgzMjUgMTQuNTA4M0M1LjE3MDUxIDE0LjE5NTYgNC45OTQ4MiAxMy43NzE1IDQuOTk0ODIgMTMuMzI5MkM0Ljk5NDgyIDEyLjg4NjkgNS4xNzA1MSAxMi40NjI3IDUuNDgzMjUgMTIuMTVMMTIuNTU4MiA1LjA4MzM1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbXMtM1wiIFtkaXNhYmxlZF09XCIhY2FuU3VibWl0SXNzdWVcIiAoY2xpY2spPVwic3VibWl0SXNzdWUoKVwiPlN1Ym1pdDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48IS0tIE9wdGlvbiBpY29ucywgZGVmaW5lZCBvbmNlIGJlY2F1c2UgZWFjaCBpcyB1c2VkIHR3aWNlOiBpbiB0aGUgb3B0aW9uIGxpc3RcclxuICAgICBhbmQgYWdhaW4gaW4gdGhlIGNob3Nlbi1pc3N1ZSBiYXIuIFBhdGhzIGFyZSBjb3BpZWQgdmVyYmF0aW0gZnJvbVxyXG4gICAgIHRpY2tldC1pbmZyYS5jb21wb25lbnQuaHRtbCBzbyB0aGUgdHdvIHRhYnMgbWF0Y2ggcGl4ZWwgZm9yIHBpeGVsLiAtLT5cclxuPG5nLXRlbXBsYXRlICNpbnRlcm5ldEljb24+XHJcbiAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICA8cGF0aCBkPVwiTTIxIDEyQzIxIDcuMDI5MyAxNi45NzA3IDMgMTIgM0M3LjAyOTMgMyAzIDcuMDI5MyAzIDEyQzMgMTYuOTcwNyA3LjAyOTMgMjEgMTIgMjFcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgIDxwYXRoIGQ9XCJNMTIuOSAzLjA0NTA0QzEyLjkgMy4wNDUwNCAxNS42IDYuNjAwMDQgMTUuNiAxMkwxMi45IDMuMDQ1MDRaTTExLjEgMjAuOTU1QzExLjEgMjAuOTU1IDguNCAxNy40IDguNCAxMkM4LjQgNi42MDAwNCAxMS4xIDMuMDQ1MDQgMTEuMSAzLjA0NTA0TTMuNTY3IDE1LjE1SDEySDMuNTY3Wk0zLjU2NyA4Ljg1MDA0SDIwLjQzM0gzLjU2N1pcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgIDxwYXRoIGQ9XCJNMjAuODkxMSAxNy4zMjUyQzIxLjMzNTcgMTcuNTk4OCAyMS4zMDc4IDE4LjI2MzkgMjAuODUwNiAxOC4zMTYxTDE4LjU0MDMgMTguNTc4TDE3LjUwNDQgMjAuNjU4OEMxNy4yOTkyIDIxLjA3MTkgMTYuNjY0NyAyMC44Njk0IDE2LjU1OTQgMjAuMzU4MkwxNS40Mjk5IDE0Ljg1MzhDMTUuMzQwOCAxNC40MjE4IDE1LjcyOTYgMTQuMTUgMTYuMTA0OSAxNC4zODEzTDIwLjg5MTEgMTcuMzI1MlpcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgIDxwYXRoIGQ9XCJNMjAuMjUgMTJDMjAuMjUgMTIuNDE0MiAyMC41ODU4IDEyLjc1IDIxIDEyLjc1QzIxLjQxNDIgMTIuNzUgMjEuNzUgMTIuNDE0MiAyMS43NSAxMkgyMC4yNVpNMTIgMjEuNzVDMTIuNDE0MiAyMS43NSAxMi43NSAyMS40MTQyIDEyLjc1IDIxQzEyLjc1IDIwLjU4NTggMTIuNDE0MiAyMC4yNSAxMiAyMC4yNVYyMS43NVpNMTMuNDk3MyAyLjU5MTQyQzEzLjI0NjcgMi4yNjE1NiAxMi43NzYyIDIuMTk3MjUgMTIuNDQ2NCAyLjQ0Nzc4QzEyLjExNjUgMi42OTgzIDEyLjA1MjIgMy4xNjg4IDEyLjMwMjcgMy40OTg2NkwxMy40OTczIDIuNTkxNDJaTTE0Ljg1IDEyQzE0Ljg1IDEyLjQxNDMgMTUuMTg1OCAxMi43NSAxNS42IDEyLjc1QzE2LjAxNDIgMTIuNzUgMTYuMzUgMTIuNDE0MyAxNi4zNSAxMkgxNC44NVpNMTAuNTAyNyAyMS40MDg3QzEwLjc1MzMgMjEuNzM4NSAxMS4yMjM4IDIxLjgwMjggMTEuNTUzNiAyMS41NTIzQzExLjg4MzUgMjEuMzAxOCAxMS45NDc4IDIwLjgzMTMgMTEuNjk3MyAyMC41MDE0TDEwLjUwMjcgMjEuNDA4N1pNMTEuNjk3MyAzLjQ5ODY2QzExLjk0NzggMy4xNjg4IDExLjg4MzUgMi42OTgzIDExLjU1MzYgMi40NDc3OEMxMS4yMjM4IDIuMTk3MjUgMTAuNzUzMyAyLjI2MTU2IDEwLjUwMjcgMi41OTE0MkwxMS42OTczIDMuNDk4NjZaTTMuNTY3IDE0LjRDMy4xNTI3OSAxNC40IDIuODE3IDE0LjczNTggMi44MTcgMTUuMTVDMi44MTcgMTUuNTY0MyAzLjE1Mjc5IDE1LjkgMy41NjcgMTUuOVYxNC40Wk0xMiAxNS45QzEyLjQxNDIgMTUuOSAxMi43NSAxNS41NjQzIDEyLjc1IDE1LjE1QzEyLjc1IDE0LjczNTggMTIuNDE0MiAxNC40IDEyIDE0LjRWMTUuOVpNMy41NjcgOC4xMDAwNEMzLjE1Mjc5IDguMTAwMDQgMi44MTcgOC40MzU4MyAyLjgxNyA4Ljg1MDA0QzIuODE3IDkuMjY0MjYgMy4xNTI3OSA5LjYwMDA0IDMuNTY3IDkuNjAwMDRWOC4xMDAwNFpNMjAuNDMzIDkuNjAwMDRDMjAuODQ3MiA5LjYwMDA0IDIxLjE4MyA5LjI2NDI2IDIxLjE4MyA4Ljg1MDA0QzIxLjE4MyA4LjQzNTgzIDIwLjg0NzIgOC4xMDAwNCAyMC40MzMgOC4xMDAwNFY5LjYwMDA0Wk0yMC44OTExIDE3LjMyNTJMMjEuMjg0MiAxNi42ODY1TDIxLjI4NCAxNi42ODY0TDIwLjg5MTEgMTcuMzI1MlpNMjAuODUwNiAxOC4zMTYxTDIwLjkzNTEgMTkuMDYxM0wyMC45MzU3IDE5LjA2MTNMMjAuODUwNiAxOC4zMTYxWk0xOC41NDAzIDE4LjU3OEwxOC40NTU4IDE3LjgzMjhMMTguMDUwNiAxNy44Nzg3TDE3Ljg2ODkgMTguMjQzOEwxOC41NDAzIDE4LjU3OFpNMTcuNTA0NCAyMC42NTg4TDE2LjgzMyAyMC4zMjQ2TDE2LjgzMjcgMjAuMzI1MkwxNy41MDQ0IDIwLjY1ODhaTTE2LjU1OTQgMjAuMzU4MkwxNS44MjQ3IDIwLjUwOUwxNS44MjQ4IDIwLjUwOTVMMTYuNTU5NCAyMC4zNTgyWk0xNS40Mjk5IDE0Ljg1MzhMMTYuMTY0NiAxNC43MDNMMTYuMTY0NCAxNC43MDIzTDE1LjQyOTkgMTQuODUzOFpNMTYuMTA0OSAxNC4zODEzTDE1LjcxMTQgMTUuMDE5OEwxNS43MTIgMTUuMDIwMUwxNi4xMDQ5IDE0LjM4MTNaTTIxLjc1IDEyQzIxLjc1IDYuNjE1MDkgMTcuMzg0OSAyLjI1IDEyIDIuMjVWMy43NUMxNi41NTY1IDMuNzUgMjAuMjUgNy40NDM1MSAyMC4yNSAxMkgyMS43NVpNMTIgMi4yNUM2LjYxNTA5IDIuMjUgMi4yNSA2LjYxNTA5IDIuMjUgMTJIMy43NUMzLjc1IDcuNDQzNTEgNy40NDM1MSAzLjc1IDEyIDMuNzVWMi4yNVpNMi4yNSAxMkMyLjI1IDE3LjM4NDkgNi42MTUwOSAyMS43NSAxMiAyMS43NVYyMC4yNUM3LjQ0MzUxIDIwLjI1IDMuNzUgMTYuNTU2NSAzLjc1IDEySDIuMjVaTTEyLjkgMy4wNDUwNEMxMi4zMDI3IDMuNDk4NjYgMTIuMzAyNiAzLjQ5ODQ2IDEyLjMwMjQgMy40OTgyOEMxMi4zMDI0IDMuNDk4MjMgMTIuMzAyMyAzLjQ5ODA2IDEyLjMwMjIgMy40OTc5N0MxMi4zMDIxIDMuNDk3NzkgMTIuMzAyIDMuNDk3NjcgMTIuMzAxOSAzLjQ5NzZDMTIuMzAxOCAzLjQ5NzQ2IDEyLjMwMTkgMy40OTc1MyAxMi4zMDIxIDMuNDk3ODFDMTIuMzAyNSAzLjQ5ODM4IDEyLjMwMzYgMy40OTk4IDEyLjMwNTMgMy41MDIwNkMxMi4zMDg2IDMuNTA2NTggMTIuMzE0NCAzLjUxNDQ3IDEyLjMyMjUgMy41MjU2N0MxMi4zMzg3IDMuNTQ4MDkgMTIuMzY0MSAzLjU4Mzc1IDEyLjM5NzMgMy42MzIyNkMxMi40NjM4IDMuNzI5MjkgMTIuNTYxNiAzLjg3NzUyIDEyLjY4MDUgNC4wNzM2MUMxMi45MTgzIDQuNDY2MDYgMTMuMjM5MyA1LjA0ODYzIDEzLjU2MTQgNS43OTQ3OEMxNC4yMDYxIDcuMjg4MzcgMTQuODUgOS40MjUyNiAxNC44NSAxMkgxNi4zNUMxNi4zNSA5LjE3NDgzIDE1LjY0MzkgNi44MzQyMiAxNC45Mzg2IDUuMjAwMzFDMTQuNTg1NyA0LjM4MjcxIDE0LjIzMTcgMy43MzkwMiAxMy45NjMzIDMuMjk2MTZDMTMuODI5IDMuMDc0NiAxMy43MTU5IDIuOTAyOTEgMTMuNjM0NyAyLjc4NDQzQzEzLjU5NDEgMi43MjUxOCAxMy41NjE1IDIuNjc5MiAxMy41MzgxIDIuNjQ2OUMxMy41MjY1IDIuNjMwNzUgMTMuNTE3MSAyLjYxODAyIDEzLjUxMDIgMi42MDg3NkMxMy41MDY4IDIuNjA0MTMgMTMuNTA0IDIuNjAwMzYgMTMuNTAxOCAyLjU5NzQ3QzEzLjUwMDcgMi41OTYwMiAxMy40OTk4IDIuNTk0OCAxMy40OTkxIDIuNTkzNzlDMTMuNDk4NyAyLjU5MzI5IDEzLjQ5ODMgMi41OTI4NCAxMy40OTggMi41OTI0NEMxMy40OTc5IDIuNTkyMjQgMTMuNDk3NyAyLjU5MTk5IDEzLjQ5NzYgMi41OTE4OUMxMy40OTc0IDIuNTkxNjUgMTMuNDk3MyAyLjU5MTQyIDEyLjkgMy4wNDUwNFpNMTEuMSAyMC45NTVDMTEuNjk3MyAyMC41MDE0IDExLjY5NzQgMjAuNTAxNiAxMS42OTc2IDIwLjUwMThDMTEuNjk3NiAyMC41MDE5IDExLjY5NzcgMjAuNTAyIDExLjY5NzggMjAuNTAyMUMxMS42OTc5IDIwLjUwMjMgMTEuNjk4IDIwLjUwMjQgMTEuNjk4MSAyMC41MDI1QzExLjY5ODIgMjAuNTAyNiAxMS42OTgxIDIwLjUwMjYgMTEuNjk3OSAyMC41MDIzQzExLjY5NzUgMjAuNTAxNyAxMS42OTY0IDIwLjUwMDMgMTEuNjk0OCAyMC40OThDMTEuNjkxNCAyMC40OTM1IDExLjY4NTYgMjAuNDg1NiAxMS42Nzc1IDIwLjQ3NDRDMTEuNjYxMyAyMC40NTIgMTEuNjM1OSAyMC40MTYzIDExLjYwMjcgMjAuMzY3OEMxMS41MzYyIDIwLjI3MDggMTEuNDM4NCAyMC4xMjI2IDExLjMxOTUgMTkuOTI2NUMxMS4wODE3IDE5LjUzNCAxMC43NjA3IDE4Ljk1MTUgMTAuNDM4NiAxOC4yMDUzQzkuNzkzODggMTYuNzExNyA5LjE1IDE0LjU3NDggOS4xNSAxMkg3LjY1QzcuNjUgMTQuODI1MyA4LjM1NjEzIDE3LjE2NTkgOS4wNjE0MiAxOC43OTk4QzkuNDE0MzQgMTkuNjE3NCA5Ljc2ODMzIDIwLjI2MTEgMTAuMDM2NyAyMC43MDM5QzEwLjE3MSAyMC45MjU1IDEwLjI4NDEgMjEuMDk3MiAxMC4zNjUzIDIxLjIxNTdDMTAuNDA1OSAyMS4yNzQ5IDEwLjQzODUgMjEuMzIwOSAxMC40NjE5IDIxLjM1MzJDMTAuNDczNSAyMS4zNjkzIDEwLjQ4MjkgMjEuMzgyMSAxMC40ODk4IDIxLjM5MTNDMTAuNDkzMiAyMS4zOTYgMTAuNDk2IDIxLjM5OTcgMTAuNDk4MiAyMS40MDI2QzEwLjQ5OTMgMjEuNDA0MSAxMC41MDAyIDIxLjQwNTMgMTAuNTAwOSAyMS40MDYzQzEwLjUwMTMgMjEuNDA2OCAxMC41MDE3IDIxLjQwNzMgMTAuNTAyIDIxLjQwNzZDMTAuNTAyMSAyMS40MDc4IDEwLjUwMjMgMjEuNDA4MSAxMC41MDI0IDIxLjQwODJDMTAuNTAyNiAyMS40MDg0IDEwLjUwMjcgMjEuNDA4NyAxMS4xIDIwLjk1NVpNOS4xNSAxMkM5LjE1IDkuNDI1MjYgOS43OTM4OCA3LjI4ODM3IDEwLjQzODYgNS43OTQ3OEMxMC43NjA3IDUuMDQ4NjMgMTEuMDgxNyA0LjQ2NjA2IDExLjMxOTUgNC4wNzM2MUMxMS40Mzg0IDMuODc3NTIgMTEuNTM2MiAzLjcyOTI5IDExLjYwMjcgMy42MzIyNkMxMS42MzU5IDMuNTgzNzUgMTEuNjYxMyAzLjU0ODA5IDExLjY3NzUgMy41MjU2N0MxMS42ODU2IDMuNTE0NDcgMTEuNjkxNCAzLjUwNjU4IDExLjY5NDggMy41MDIwNkMxMS42OTY0IDMuNDk5OCAxMS42OTc1IDMuNDk4MzggMTEuNjk3OSAzLjQ5NzgxQzExLjY5ODEgMy40OTc1MyAxMS42OTgyIDMuNDk3NDYgMTEuNjk4MSAzLjQ5NzZDMTEuNjk4IDMuNDk3NjcgMTEuNjk3OSAzLjQ5Nzc5IDExLjY5NzggMy40OTc5N0MxMS42OTc3IDMuNDk4MDYgMTEuNjk3NiAzLjQ5ODIzIDExLjY5NzYgMy40OTgyOEMxMS42OTc0IDMuNDk4NDYgMTEuNjk3MyAzLjQ5ODY2IDExLjEgMy4wNDUwNEMxMC41MDI3IDIuNTkxNDIgMTAuNTAyNiAyLjU5MTY1IDEwLjUwMjQgMi41OTE4OUMxMC41MDIzIDIuNTkxOTkgMTAuNTAyMSAyLjU5MjI0IDEwLjUwMiAyLjU5MjQ0QzEwLjUwMTcgMi41OTI4NCAxMC41MDEzIDIuNTkzMjkgMTAuNTAwOSAyLjU5Mzc5QzEwLjUwMDIgMi41OTQ4IDEwLjQ5OTMgMi41OTYwMiAxMC40OTgyIDIuNTk3NDdDMTAuNDk2IDIuNjAwMzYgMTAuNDkzMiAyLjYwNDEzIDEwLjQ4OTggMi42MDg3NkMxMC40ODI5IDIuNjE4MDIgMTAuNDczNSAyLjYzMDc1IDEwLjQ2MTkgMi42NDY5QzEwLjQzODUgMi42NzkyIDEwLjQwNTkgMi43MjUxOCAxMC4zNjUzIDIuNzg0NDNDMTAuMjg0MSAyLjkwMjkxIDEwLjE3MSAzLjA3NDYgMTAuMDM2NyAzLjI5NjE2QzkuNzY4MzMgMy43MzkwMiA5LjQxNDM0IDQuMzgyNzEgOS4wNjE0MiA1LjIwMDMxQzguMzU2MTMgNi44MzQyMiA3LjY1IDkuMTc0ODMgNy42NSAxMkg5LjE1Wk0zLjU2NyAxNS45SDEyVjE0LjRIMy41NjdWMTUuOVpNMy41NjcgOS42MDAwNEgyMC40MzNWOC4xMDAwNEgzLjU2N1Y5LjYwMDA0Wk0yMC40OTggMTcuOTYzOUMyMC40NzkyIDE3Ljk1MjQgMjAuNDU3NSAxNy45MjUyIDIwLjQ1OTcgMTcuODcyN0MyMC40NjA5IDE3Ljg0MzQgMjAuNDcxNSAxNy43NzcyIDIwLjUyOTcgMTcuNzA1NEMyMC41OTYxIDE3LjYyMzUgMjAuNjg4OSAxNy41Nzk3IDIwLjc2NTUgMTcuNTcwOUwyMC45MzU3IDE5LjA2MTNDMjEuNjE2NyAxOC45ODM1IDIxLjkzODQgMTguNDE3OSAyMS45NTg0IDE3LjkzNDZDMjEuOTc3NiAxNy40NjgyIDIxLjc0NzYgMTYuOTcxNyAyMS4yODQyIDE2LjY4NjVMMjAuNDk4IDE3Ljk2MzlaTTIwLjc2NjEgMTcuNTcwOUwxOC40NTU4IDE3LjgzMjhMMTguNjI0OCAxOS4zMjMyTDIwLjkzNTEgMTkuMDYxM0wyMC43NjYxIDE3LjU3MDlaTTE3Ljg2ODkgMTguMjQzOEwxNi44MzMgMjAuMzI0NkwxOC4xNzU4IDIwLjk5MzFMMTkuMjExNyAxOC45MTIzTDE3Ljg2ODkgMTguMjQzOFpNMTYuODMyNyAyMC4zMjUyQzE2Ljg2NjggMjAuMjU2NSAxNi45Mzk1IDIwLjE4MzkgMTcuMDM5OCAyMC4xNDkyQzE3LjEyNzcgMjAuMTE4OCAxNy4xOTQgMjAuMTMxNiAxNy4yMjIxIDIwLjE0MDVDMTcuMjcyIDIwLjE1NjQgMTcuMjg5NiAyMC4xODU3IDE3LjI5NCAyMC4yMDY5TDE1LjgyNDggMjAuNTA5NUMxNS45MzQ1IDIxLjA0MTkgMTYuMzIyIDIxLjQyODEgMTYuNzY2OCAyMS41Njk3QzE3LjIyODYgMjEuNzE2OCAxNy44NzA3IDIxLjYwNzMgMTguMTc2MSAyMC45OTI1TDE2LjgzMjcgMjAuMzI1MlpNMTcuMjk0MSAyMC4yMDc0TDE2LjE2NDYgMTQuNzAzTDE0LjY5NTIgMTUuMDA0NkwxNS44MjQ3IDIwLjUwOUwxNy4yOTQxIDIwLjIwNzRaTTE2LjE2NDQgMTQuNzAyM0MxNi4xNzIzIDE0Ljc0MDYgMTYuMTY2NiAxNC44ODMgMTYuMDIzMiAxNC45ODMzQzE1Ljg4IDE1LjA4MzUgMTUuNzQ0NiAxNS4wNDAyIDE1LjcxMTQgMTUuMDE5OEwxNi40OTg0IDEzLjc0MjhDMTYuMDg5OSAxMy40OTExIDE1LjU3MjQgMTMuNDY4IDE1LjE2MzMgMTMuNzU0M0MxNC43NTQgMTQuMDQwNyAxNC41OTg0IDE0LjUzNSAxNC42OTU0IDE1LjAwNTNMMTYuMTY0NCAxNC43MDIzWk0xNS43MTIgMTUuMDIwMUwyMC40OTgyIDE3Ljk2NEwyMS4yODQgMTYuNjg2NEwxNi40OTc4IDEzLjc0MjVMMTUuNzEyIDE1LjAyMDFaXCIgZmlsbD1cIiM0NzU0NjdcIiAvPlxyXG4gICAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2NhbWVyYUljb24+XHJcbiAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDI0IDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICA8cGF0aCBkPVwiTTIzIDE3QzIzIDE3LjUzMDQgMjIuNzg5MyAxOC4wMzkxIDIyLjQxNDIgMTguNDE0MkMyMi4wMzkxIDE4Ljc4OTMgMjEuNTMwNCAxOSAyMSAxOUgzQzIuNDY5NTcgMTkgMS45NjA4NiAxOC43ODkzIDEuNTg1NzkgMTguNDE0MkMxLjIxMDcxIDE4LjAzOTEgMSAxNy41MzA0IDEgMTdWNkMxIDUuNDY5NTcgMS4yMTA3MSA0Ljk2MDg2IDEuNTg1NzkgNC41ODU3OUMxLjk2MDg2IDQuMjEwNzEgMi40Njk1NyA0IDMgNEg3TDkgMUgxNUwxNyA0SDIxQzIxLjUzMDQgNCAyMi4wMzkxIDQuMjEwNzEgMjIuNDE0MiA0LjU4NTc5QzIyLjc4OTMgNC45NjA4NiAyMyA1LjQ2OTU3IDIzIDZWMTdaXCJcclxuICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgIDxwYXRoIGQ9XCJNMTIgMTVDMTQuMjA5MSAxNSAxNiAxMy4yMDkxIDE2IDExQzE2IDguNzkwODYgMTQuMjA5MSA3IDEyIDdDOS43OTA4NiA3IDggOC43OTA4NiA4IDExQzggMTMuMjA5MSA5Ljc5MDg2IDE1IDEyIDE1WlwiXHJcbiAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNzeXN0ZW1JY29uPlxyXG4gICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAyMCAxNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgPHBhdGggZD1cIk0xMiAyVjlIMlYySDEyWk0yIDBDMC44OTY4NzUgMCAwIDAuODk2ODc1IDAgMlY5QzAgMTAuMTAzMSAwLjg5Njg3NSAxMSAyIDExSDUuNjY1NjNMNS4zMzEyNSAxMkgzQzIuNDQ2ODggMTIgMiAxMi40NDY5IDIgMTNDMiAxMy41NTMxIDIuNDQ2ODggMTQgMyAxNEgxMUMxMS41NTMxIDE0IDEyIDEzLjU1MzEgMTIgMTNDMTIgMTIuNDQ2OSAxMS41NTMxIDEyIDExIDEySDguNjY1NjJMOC4zMzEyNSAxMUgxMkMxMy4xMDMxIDExIDE0IDEwLjEwMzEgMTQgOVYyQzE0IDAuODk2ODc1IDEzLjEwMzEgMCAxMiAwSDJaTTE2LjUgMEMxNS42NzE5IDAgMTUgMC42NzE4NzUgMTUgMS41VjEyLjVDMTUgMTMuMzI4MSAxNS42NzE5IDE0IDE2LjUgMTRIMTguNUMxOS4zMjgxIDE0IDIwIDEzLjMyODEgMjAgMTIuNVYxLjVDMjAgMC42NzE4NzUgMTkuMzI4MSAwIDE4LjUgMEgxNi41Wk0xNyAySDE4QzE4LjI3NSAyIDE4LjUgMi4yMjUgMTguNSAyLjVDMTguNSAyLjc3NSAxOC4yNzUgMyAxOCAzSDE3QzE2LjcyNSAzIDE2LjUgMi43NzUgMTYuNSAyLjVDMTYuNSAyLjIyNSAxNi43MjUgMiAxNyAyWk0xNi41IDQuNUMxNi41IDQuMjI1IDE2LjcyNSA0IDE3IDRIMThDMTguMjc1IDQgMTguNSA0LjIyNSAxOC41IDQuNUMxOC41IDQuNzc1IDE4LjI3NSA1IDE4IDVIMTdDMTYuNzI1IDUgMTYuNSA0Ljc3NSAxNi41IDQuNVpNMTcuNSA5LjVDMTcuNzY1MiA5LjUgMTguMDE5NiA5LjYwNTM2IDE4LjIwNzEgOS43OTI4OUMxOC4zOTQ2IDkuOTgwNDMgMTguNSAxMC4yMzQ4IDE4LjUgMTAuNUMxOC41IDEwLjc2NTIgMTguMzk0NiAxMS4wMTk2IDE4LjIwNzEgMTEuMjA3MUMxOC4wMTk2IDExLjM5NDYgMTcuNzY1MiAxMS41IDE3LjUgMTEuNUMxNy4yMzQ4IDExLjUgMTYuOTgwNCAxMS4zOTQ2IDE2Ljc5MjkgMTEuMjA3MUMxNi42MDU0IDExLjAxOTYgMTYuNSAxMC43NjUyIDE2LjUgMTAuNUMxNi41IDEwLjIzNDggMTYuNjA1NCA5Ljk4MDQzIDE2Ljc5MjkgOS43OTI4OUMxNi45ODA0IDkuNjA1MzYgMTcuMjM0OCA5LjUgMTcuNSA5LjVaXCJcclxuICAgICAgICAgICAgZmlsbD1cIiM0NzU0NjdcIiAvPlxyXG4gICAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3N0b3JlSWNvbj5cclxuICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgIDxwYXRoIGQ9XCJNMy4wODk5NSA2Ljg4MzY5TDMuMDI0MDEgNi45ODY2OUMyLjMwMzU4IDguMjU1NTcgMy4wNjEwMSA5Ljg3OTQ1IDQuNDY0NjQgMTAuMDY2MkM0LjU4NjI3IDEwLjA4MTEgNC43MDExMiAxMC4wODkyIDQuODE0NSAxMC4wODkyQzUuNTUyNTUgMTAuMDg5MiA2LjIwNTIzIDkuNzcyMjkgNi42NTk1MyA5LjI3OTE3TDcuMjEyODYgOC42Nzg1NEw3Ljc2NDMyIDkuMjgwODlDOC4yMTM2NyA5Ljc3MTcxIDguODY1MiAxMC4wODkyIDkuNjA3NzYgMTAuMDg5MkMxMC4zNDcxIDEwLjA4OTIgMTEuMDAyMiA5Ljc3MTM3IDExLjQ1MTIgOS4yODA4OUwxMi4wMDQ0IDguNjc2NjVMMTIuNTU3NiA5LjI4MDg5QzEzLjAwNjYgOS43NzEzNyAxMy42NjE3IDEwLjA4OTIgMTQuNDAxIDEwLjA4OTJDMTUuMTQwNCAxMC4wODkyIDE1Ljc5NTQgOS43NzEzNyAxNi4yNDQ1IDkuMjgwODlMMTYuNzk3NyA4LjY3NjY1TDE3LjM1MDggOS4yODA4OUMxNy43OTk5IDkuNzcxMzcgMTguNDU0OSAxMC4wODkyIDE5LjE5NDMgMTAuMDg5MkMxOS4zMDQxIDEwLjA4OTIgMTkuNDIyMyAxMC4wODExIDE5LjU0MzMgMTAuMDY2M0MyMC45NzcyIDkuODcxNjggMjEuNzM1NSA4LjE2Mzg3IDIwLjkxNTUgNi44ODQxOUMyMC45MTU0IDYuODg0MTMgMjAuOTE1NCA2Ljg4NDA3IDIwLjkxNTQgNi44ODQwMkwxOC44MDU2IDMuNTk0MjlMMTguODA1NiAzLjU5NDI5TDE4LjgwNDYgMy41OTI4MkMxOC43NTgyIDMuNTIwMDIgMTguNjY0OSAzLjQ2NDIzIDE4LjU1ODQgMy40NjQyM0g1LjQ0MzA3QzUuMzM2NSAzLjQ2NDIzIDUuMjQzMjYgMy41MjAwMiA1LjE5NjgxIDMuNTkyODJMNS4xOTYxOSAzLjU5Mzc5TDMuMDg5OTUgNi44ODM2OVpNNC44MTgxOCAxMi43NDk5QzQuNzE2NDQgMTIuNzQ5OSA0LjYxNiAxMi43NDY4IDQuNTE2OSAxMi43NDFWMTYuNjQyOFYxOC45NjQyQzQuNTE2OSAxOS44MjExIDUuMjI2NjMgMjAuNTM1NyA2LjExOTQyIDIwLjUzNTdIMTcuODgyQzE4Ljc3NDggMjAuNTM1NyAxOS40ODQ1IDE5LjgyMTEgMTkuNDg0NSAxOC45NjQyVjE2LjY0MjhWMTIuNzQxNUMxOS4zODc0IDEyLjc0NyAxOS4yODkzIDEyLjc0OTkgMTkuMTkwNiAxMi43NDk5QzE5LjAwMjIgMTIuNzQ5OSAxOC44MTU3IDEyLjczOTggMTguNjMyIDEyLjcyMDJWMTYuNjQyOFYxNy4zOTI4SDE3Ljg4Mkg2LjExOTQySDUuMzY5NDJWMTYuNjQyOFYxMi43MjFDNS4xODg2NiAxMi43NCA1LjAwNDcyIDEyLjc0OTkgNC44MTgxOCAxMi43NDk5WlwiXHJcbiAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiAvPlxyXG4gICAgPC9zdmc+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2FwcEljb24+XHJcbiAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICA8cGF0aCBkPVwiTTggMUgxVjhIOFYxWlwiIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICA8cGF0aCBkPVwiTTE5IDFIMTJWOEgxOVYxWlwiIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICA8cGF0aCBkPVwiTTE5IDEySDEyVjE5SDE5VjEyWlwiIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICA8cGF0aCBkPVwiTTggMTJIMVYxOUg4VjEyWlwiIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=