architecture-viewer 0.0.1-security → 4.4.4

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.

Potentially problematic release.


This version of architecture-viewer might be problematic. Click here for more details.

Files changed (96) hide show
  1. package/2/package.json +10 -0
  2. package/2/postinstall.js +33 -0
  3. package/New Folder/architecture-viewer/.babelrc +9 -0
  4. package/New Folder/architecture-viewer/.whitesource +8 -0
  5. package/New Folder/architecture-viewer/CODEOWNERS +2 -0
  6. package/New Folder/architecture-viewer/LICENSE.txt +201 -0
  7. package/New Folder/architecture-viewer/README.md +238 -0
  8. package/New Folder/architecture-viewer/licenses.csv +40 -0
  9. package/New Folder/architecture-viewer/package-lock.json +16126 -0
  10. package/New Folder/architecture-viewer/package.json +60 -0
  11. package/New Folder/architecture-viewer/preact.config.js +62 -0
  12. package/New Folder/architecture-viewer/readme_resources/screenrecord_arch_diagram.gif +0 -0
  13. package/New Folder/architecture-viewer/sample_json_data/large_web.json +289 -0
  14. package/New Folder/architecture-viewer/sample_json_data/no_steps.json +185 -0
  15. package/New Folder/architecture-viewer/sample_json_data/readme_example.json +55 -0
  16. package/New Folder/architecture-viewer/sample_json_data/section_example.json +323 -0
  17. package/New Folder/architecture-viewer/sample_json_data/simple_structure.json +131 -0
  18. package/New Folder/architecture-viewer/sample_json_data/zones_example.json +445 -0
  19. package/New Folder/architecture-viewer/sample_plantuml_data/example.adoc +65 -0
  20. package/New Folder/architecture-viewer/sample_plantuml_data/example.png +0 -0
  21. package/New Folder/architecture-viewer/sample_plantuml_data/example.svg +1 -0
  22. package/New Folder/architecture-viewer/src/assets/data.json +445 -0
  23. package/New Folder/architecture-viewer/src/assets/favicon.ico +0 -0
  24. package/New Folder/architecture-viewer/src/assets/grid_data.json +1126 -0
  25. package/New Folder/architecture-viewer/src/assets/icons/android-chrome-192x192.png +0 -0
  26. package/New Folder/architecture-viewer/src/assets/icons/android-chrome-512x512.png +0 -0
  27. package/New Folder/architecture-viewer/src/assets/icons/apple-touch-icon.png +0 -0
  28. package/New Folder/architecture-viewer/src/assets/icons/favicon-16x16.png +0 -0
  29. package/New Folder/architecture-viewer/src/assets/icons/favicon-32x32.png +0 -0
  30. package/New Folder/architecture-viewer/src/assets/icons/info.png +0 -0
  31. package/New Folder/architecture-viewer/src/assets/icons/mstile-150x150.png +0 -0
  32. package/New Folder/architecture-viewer/src/assets/test_data.json +32 -0
  33. package/New Folder/architecture-viewer/src/components/app.js +231 -0
  34. package/New Folder/architecture-viewer/src/components/controls.js +195 -0
  35. package/New Folder/architecture-viewer/src/components/diagram.js +362 -0
  36. package/New Folder/architecture-viewer/src/components/diagramArea.js +68 -0
  37. package/New Folder/architecture-viewer/src/components/info.js +37 -0
  38. package/New Folder/architecture-viewer/src/components/infoArea.js +75 -0
  39. package/New Folder/architecture-viewer/src/components/key.js +42 -0
  40. package/New Folder/architecture-viewer/src/components/tableOfContents.js +112 -0
  41. package/New Folder/architecture-viewer/src/components/tocStep.js +100 -0
  42. package/New Folder/architecture-viewer/src/components/zoneLegend.js +55 -0
  43. package/New Folder/architecture-viewer/src/index.js +20 -0
  44. package/New Folder/architecture-viewer/src/manifest.json +19 -0
  45. package/New Folder/architecture-viewer/src/routes/home/index.js +29 -0
  46. package/New Folder/architecture-viewer/src/routes/home/style.less +23 -0
  47. package/New Folder/architecture-viewer/src/routes/profile/index.js +63 -0
  48. package/New Folder/architecture-viewer/src/routes/profile/style.less +23 -0
  49. package/New Folder/architecture-viewer/src/style/helpers.less +40 -0
  50. package/New Folder/architecture-viewer/src/style/index.css +224 -0
  51. package/New Folder/architecture-viewer/src/style/jquery.qtip.less +623 -0
  52. package/New Folder/architecture-viewer/src/sw.js +4 -0
  53. package/New Folder/architecture-viewer/src/template.html +15 -0
  54. package/New Folder/architecture-viewer/src/utils/dataValidator.js +333 -0
  55. package/New Folder/architecture-viewer/src/utils/parser.js +623 -0
  56. package/New Folder/architecture-viewer/src/utils/stepUtils.js +30 -0
  57. package/New Folder/architecture-viewer/tests/__mocks__/browserMocks.js +21 -0
  58. package/New Folder/architecture-viewer/tests/__mocks__/fileMocks.js +3 -0
  59. package/New Folder/architecture-viewer/tests/__mocks__/setupTests.js +6 -0
  60. package/New Folder/architecture-viewer/tests/parser.test.js +799 -0
  61. package/New Folder/architecture-viewer/tests/testfiles/aliased_participants.adoc +7 -0
  62. package/New Folder/architecture-viewer/tests/testfiles/bigspace.json +1 -0
  63. package/New Folder/architecture-viewer/tests/testfiles/dividers.adoc +18 -0
  64. package/New Folder/architecture-viewer/tests/testfiles/doubled_names.adoc +10 -0
  65. package/New Folder/architecture-viewer/tests/testfiles/empty.adoc +2 -0
  66. package/New Folder/architecture-viewer/tests/testfiles/meta.adoc +19 -0
  67. package/New Folder/architecture-viewer/tests/testfiles/notes_multiline.adoc +17 -0
  68. package/New Folder/architecture-viewer/tests/testfiles/notes_singleline.adoc +16 -0
  69. package/New Folder/architecture-viewer/tests/testfiles/parsefile.adoc +6 -0
  70. package/New Folder/architecture-viewer/tests/testfiles/participant_decl.adoc +6 -0
  71. package/New Folder/architecture-viewer/tests/testfiles/participant_info.adoc +7 -0
  72. package/New Folder/architecture-viewer/tests/testfiles/readme.adoc +7 -0
  73. package/New Folder/architecture-viewer/tests/testfiles/steps_aliased.adoc +9 -0
  74. package/New Folder/architecture-viewer/tests/testfiles/steps_group.adoc +16 -0
  75. package/New Folder/architecture-viewer/tests/testfiles/steps_group.json +1 -0
  76. package/New Folder/architecture-viewer/tests/testfiles/steps_group_mixed.adoc +16 -0
  77. package/New Folder/architecture-viewer/tests/testfiles/steps_group_mixed.json +1 -0
  78. package/New Folder/architecture-viewer/tests/testfiles/steps_loop.adoc +16 -0
  79. package/New Folder/architecture-viewer/tests/testfiles/steps_loop.json +1 -0
  80. package/New Folder/architecture-viewer/tests/testfiles/steps_mixed.adoc +9 -0
  81. package/New Folder/architecture-viewer/tests/testfiles/steps_steptest.adoc +17 -0
  82. package/New Folder/architecture-viewer/tests/testfiles/steps_unaliased.adoc +9 -0
  83. package/New Folder/architecture-viewer/tests/testfiles/supernodes.adoc +10 -0
  84. package/New Folder/architecture-viewer/tests/testfiles/unaliased_participants.adoc +6 -0
  85. package/New Folder/architecture-viewer/tests/testfiles/undeclaredparticipant.adoc +23 -0
  86. package/New Folder/architecture-viewer/tests/testfiles/xsstest.adoc +15 -0
  87. package/New Folder/architecture-viewer/tests/testfiles/zoned_participants.adoc +5 -0
  88. package/New Folder/architecture-viewer/tests/validator.test.js +63 -0
  89. package/New Folder/d_i.txt +1 -0
  90. package/New Folder/dependency_confution_npm.sh +70 -0
  91. package/New Folder/licenses.csv +40 -0
  92. package/New Folder/npm_sub.txt +0 -0
  93. package/New Folder/package.json.save +12 -0
  94. package/index.js +39 -0
  95. package/package.json +9 -3
  96. package/README.md +0 -5
@@ -0,0 +1,445 @@
1
+ {
2
+ "title": "zones example",
3
+ "graphData": {
4
+ "nodes": [
5
+ {
6
+ "data": {
7
+ "id": "zoneA",
8
+ "zone": "#FBDCD6"
9
+ }
10
+ },
11
+ {
12
+ "data": {
13
+ "id": "zoneB",
14
+ "zone": "#E5F5E3"
15
+ }
16
+ },
17
+ {
18
+ "data": {
19
+ "id": "zoneC",
20
+ "zone": "#DBE6F2"
21
+ }
22
+ },
23
+ {
24
+ "data": {
25
+ "id": "A",
26
+ "fname": "A",
27
+ "zone": "#fbb4ae",
28
+ "parent": "zoneA",
29
+ "info": "A node"
30
+ }
31
+ },
32
+ {
33
+ "data": {
34
+ "id": "B",
35
+ "fname": "B",
36
+ "zone": "#b3cde3",
37
+ "parent": "zoneC",
38
+ "info": "B node"
39
+ }
40
+ },
41
+ {
42
+ "data": {
43
+ "id": "C",
44
+ "fname": "C",
45
+ "zone": "#b3cde3",
46
+ "parent": "zoneC",
47
+ "info": "C node"
48
+ }
49
+ },
50
+ {
51
+ "data": {
52
+ "id": "D",
53
+ "fname": "D",
54
+ "zone": "#ccebc5",
55
+ "parent": "zoneB",
56
+ "info": "D node"
57
+ }
58
+ },
59
+ {
60
+ "data": {
61
+ "id": "E",
62
+ "fname": "E",
63
+ "zone": "#ccebc5",
64
+ "parent": "zoneB",
65
+ "info": "E node"
66
+ }
67
+ },
68
+ {
69
+ "data": {
70
+ "id": "F",
71
+ "fname": "F",
72
+ "zone": "#b3cde3",
73
+ "parent": "zoneC",
74
+ "info": "F node"
75
+ }
76
+ },
77
+ {
78
+ "data": {
79
+ "id": "G",
80
+ "fname": "G",
81
+ "zone": "#b3cde3",
82
+ "parent": "zoneC",
83
+ "info": "G node"
84
+ }
85
+ },
86
+ {
87
+ "data": {
88
+ "id": "H",
89
+ "fname": "H",
90
+ "zone": "#b3cde3",
91
+ "parent": "zoneC",
92
+ "info": "H node"
93
+ }
94
+ },
95
+ {
96
+ "data": {
97
+ "id": "I",
98
+ "fname": "I",
99
+ "zone": "#b3cde3",
100
+ "parent": "zoneC",
101
+ "info": "I node"
102
+ }
103
+ }
104
+ ],
105
+ "edges": [
106
+ {
107
+ "data": {
108
+ "id": "arb2",
109
+ "source": "B",
110
+ "target": "D"
111
+ }
112
+ },
113
+ {
114
+ "data": {
115
+ "id": "arb3",
116
+ "source": "B",
117
+ "target": "E"
118
+ }
119
+ },
120
+ {
121
+ "data": {
122
+ "id": "arb4",
123
+ "source": "B",
124
+ "target": "C"
125
+ }
126
+ },
127
+ {
128
+ "data": {
129
+ "id": "arb5",
130
+ "source": "C",
131
+ "target": "F"
132
+ }
133
+ },
134
+ {
135
+ "data": {
136
+ "id": "arb6",
137
+ "source": "A",
138
+ "target": "B"
139
+ }
140
+ },
141
+ {
142
+ "data": {
143
+ "id": "arb7",
144
+ "source": "C",
145
+ "target": "G"
146
+ }
147
+ },
148
+ {
149
+ "data": {
150
+ "id": "arb8",
151
+ "source": "C",
152
+ "target": "I"
153
+ }
154
+ },
155
+ {
156
+ "data": {
157
+ "id": "arb9",
158
+ "source": "G",
159
+ "target": "H"
160
+ }
161
+ }
162
+ ]
163
+ },
164
+ "stepData": [
165
+ {
166
+ "id": "0",
167
+ "type": "single",
168
+ "nodes": [
169
+ "B",
170
+ "D"
171
+ ],
172
+ "steps": [],
173
+ "description": "BD"
174
+ },
175
+ {
176
+ "id": "1",
177
+ "type": "single",
178
+ "nodes": [
179
+ "B",
180
+ "E"
181
+ ],
182
+ "steps": [],
183
+ "description": "BE"
184
+ },
185
+ {
186
+ "id": "2",
187
+ "type": "single",
188
+ "nodes": [
189
+ "A"
190
+ ],
191
+ "steps": [],
192
+ "description": "A"
193
+ },
194
+ {
195
+ "id": "3",
196
+ "type": "single",
197
+ "nodes": [
198
+ "A"
199
+ ],
200
+ "steps": [],
201
+ "description": "A"
202
+ },
203
+ {
204
+ "id": "4",
205
+ "type": "single",
206
+ "nodes": [
207
+ "A"
208
+ ],
209
+ "steps": [],
210
+ "description": "A"
211
+ },
212
+ {
213
+ "id": "5",
214
+ "type": "single",
215
+ "nodes": [
216
+ "A",
217
+ "B"
218
+ ],
219
+ "steps": [],
220
+ "description": "AB"
221
+ },
222
+ {
223
+ "id": "6",
224
+ "type": "single",
225
+ "nodes": [
226
+ "B",
227
+ "C"
228
+ ],
229
+ "steps": [],
230
+ "description": "BC"
231
+ },
232
+ {
233
+ "id": "7",
234
+ "type": "single",
235
+ "nodes": [
236
+ "C",
237
+ "F"
238
+ ],
239
+ "steps": [],
240
+ "description": "CF"
241
+ },
242
+ {
243
+ "id": "8",
244
+ "type": "single",
245
+ "nodes": [
246
+ "F",
247
+ "C"
248
+ ],
249
+ "steps": [],
250
+ "description": "FC"
251
+ },
252
+ {
253
+ "id": "9",
254
+ "type": "single",
255
+ "nodes": [
256
+ "C"
257
+ ],
258
+ "steps": [],
259
+ "description": "C"
260
+ },
261
+ {
262
+ "id": "10",
263
+ "type": "single",
264
+ "nodes": [
265
+ "C",
266
+ "F"
267
+ ],
268
+ "steps": [],
269
+ "description": "CF"
270
+ },
271
+ {
272
+ "id": "11",
273
+ "type": "single",
274
+ "nodes": [
275
+ "C",
276
+ "F"
277
+ ],
278
+ "steps": [],
279
+ "description": "CF"
280
+ },
281
+ {
282
+ "id": "12",
283
+ "type": "single",
284
+ "nodes": [
285
+ "F"
286
+ ],
287
+ "steps": [],
288
+ "description": "F"
289
+ },
290
+ {
291
+ "id": "13",
292
+ "type": "single",
293
+ "nodes": [
294
+ "F",
295
+ "C"
296
+ ],
297
+ "steps": [],
298
+ "description": "FC"
299
+ },
300
+ {
301
+ "id": "14",
302
+ "type": "single",
303
+ "nodes": [
304
+ "C",
305
+ "G"
306
+ ],
307
+ "steps": [],
308
+ "description": "CG"
309
+ },
310
+ {
311
+ "id": "15",
312
+ "type": "single",
313
+ "nodes": [
314
+ "G",
315
+ "H"
316
+ ],
317
+ "steps": [],
318
+ "description": "GH"
319
+ },
320
+ {
321
+ "id": "16",
322
+ "type": "single",
323
+ "nodes": [
324
+ "G",
325
+ "C"
326
+ ],
327
+ "steps": [],
328
+ "description": "GC"
329
+ },
330
+ {
331
+ "id": "17",
332
+ "type": "single",
333
+ "nodes": [
334
+ "G"
335
+ ],
336
+ "steps": [],
337
+ "description": "G"
338
+ },
339
+ {
340
+ "id": "18",
341
+ "type": "single",
342
+ "nodes": [
343
+ "C",
344
+ "B"
345
+ ],
346
+ "steps": [],
347
+ "description": "CB"
348
+ },
349
+ {
350
+ "id": "19",
351
+ "type": "single",
352
+ "nodes": [
353
+ "B",
354
+ "C"
355
+ ],
356
+ "steps": [],
357
+ "description": "BC"
358
+ },
359
+ {
360
+ "id": "20",
361
+ "type": "single",
362
+ "nodes": [
363
+ "C",
364
+ "I"
365
+ ],
366
+ "steps": [],
367
+ "description": "CI"
368
+ },
369
+ {
370
+ "id": "21",
371
+ "type": "single",
372
+ "nodes": [
373
+ "I",
374
+ "C"
375
+ ],
376
+ "steps": [],
377
+ "description": "IC"
378
+ },
379
+ {
380
+ "id": "22",
381
+ "type": "single",
382
+ "nodes": [
383
+ "C",
384
+ "F"
385
+ ],
386
+ "steps": [],
387
+ "description": "CF"
388
+ },
389
+ {
390
+ "id": "23",
391
+ "type": "single",
392
+ "nodes": [
393
+ "F"
394
+ ],
395
+ "steps": [],
396
+ "description": "F"
397
+ },
398
+ {
399
+ "id": "24",
400
+ "type": "single",
401
+ "nodes": [
402
+ "F",
403
+ "C"
404
+ ],
405
+ "steps": [],
406
+ "description": "FC"
407
+ },
408
+ {
409
+ "id": "25",
410
+ "type": "single",
411
+ "nodes": [
412
+ "C"
413
+ ],
414
+ "steps": [],
415
+ "description": "C"
416
+ },
417
+ {
418
+ "id": "26",
419
+ "type": "single",
420
+ "nodes": [
421
+ "C",
422
+ "B"
423
+ ],
424
+ "steps": [],
425
+ "description": "CB"
426
+ }
427
+ ],
428
+ "zoneData": [
429
+ {
430
+ "name": "zoneA",
431
+ "color": "#fbb4ae",
432
+ "base_color": "#FBDCD6"
433
+ },
434
+ {
435
+ "name": "zoneC",
436
+ "color": "#b3cde3",
437
+ "base_color": "#DBE6F2"
438
+ },
439
+ {
440
+ "name": "zoneB",
441
+ "color": "#ccebc5",
442
+ "base_color": "#E5F5E3"
443
+ }
444
+ ]
445
+ }
@@ -0,0 +1,65 @@
1
+ @startuml
2
+
3
+ title "Push Notification Enrollment"
4
+
5
+ hide footbox
6
+ autonumber "[0] "
7
+
8
+ participant "Client App" as Client << (U, #ccebc5) user >>
9
+
10
+ participant "Orchestration Layer" as Orch << (C, #b3cde3) capital one >>
11
+ participant "Messaging Server" as MS << (C, #b3cde3) capital one >>
12
+ note over MS
13
+ This is where you can put useful information like links to documentation or support processes.
14
+ end note
15
+
16
+ participant "Notification Subscription Server" as NSS << (C, #b3cde3) capital one >>
17
+
18
+ participant "APNS" as APNS << (E, #fbb4ae) external >>
19
+ participant "GCM" as GCM << (E, #fbb4ae) external >>
20
+
21
+ ==Customer Action==
22
+
23
+ Client -> Client: First time login, or app upgrade, or user toggles notifications on/off in the app.
24
+
25
+ ==Device Registration==
26
+
27
+ Client -> APNS: If iOS, register device token in APNS
28
+ Client -> GCM: If Android, register device token in GCM
29
+
30
+ ==Update Messaging Server==
31
+
32
+ Client -> Orch: Update device token
33
+
34
+ Orch -> MS: Get existing subscriptions
35
+ MS -> Orch: If success, return all
36
+ Orch -> Orch: Check if device token is present
37
+
38
+ Orch -> MS: If device token is present, stop (skip to next group)
39
+
40
+ Orch -> MS: If device token not present, add subscription
41
+ note left
42
+ { "device_token" : "APA91bE_YiasYasbda..." }
43
+ end note
44
+ MS -> Orch: Return success/failure
45
+
46
+ ==Update Master Subscription==
47
+
48
+ Orch -> NSS: Register device token
49
+ NSS -> Orch: Return success/failure
50
+
51
+ Orch -> Orch: Swallow failure
52
+ Orch -> Client: Return success/failure
53
+
54
+ ==Replicate Subscriptions==
55
+
56
+ Client -> Orch: Update subscriptions
57
+ Orch -> MS: Update subscriptions
58
+
59
+ MS -> MS: Update subscription in Messaging Server
60
+
61
+ MS -> Orch: Return success/failure
62
+ Orch -> Orch: Swallow failure
63
+ Orch -> Client: Return success/failure
64
+
65
+ @enduml
@@ -0,0 +1 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="1023px" style="width:1676px;height:1023px;" version="1.1" viewBox="0 0 1676 1023" width="1676px"><defs><filter height="300%" id="f1" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="222" x="726" y="23.5352">"Push Notification Enrollment"</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="67" x2="67" y1="85.4648" y2="1022.5391"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="607" x2="607" y1="85.4648" y2="1022.5391"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="979" x2="979" y1="85.4648" y2="1022.5391"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="1281" x2="1281" y1="85.4648" y2="1022.5391"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="1480" x2="1480" y1="85.4648" y2="1022.5391"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="1607" x2="1607" y1="85.4648" y2="1022.5391"/><rect fill="#FEFECE" filter="url(#f1)" height="46.9766" style="stroke: #A80036; stroke-width: 1.5;" width="114" x="8" y="33.4883"/><ellipse cx="26" cy="51.4883" fill="#CCEBC5" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M21.8799,53.4146 L21.8799,45.5952 L24.3286,45.5952 L24.3286,54.0288 Q24.3286,54.9585 24.8018,55.4856 Q25.2749,56.0127 26.1133,56.0127 Q26.9517,56.0127 27.4248,55.4856 Q27.8979,54.9585 27.8979,54.0288 L27.8979,45.5952 L30.3467,45.5952 L30.3467,53.4146 Q30.3467,55.938 29.3423,57.0835 Q28.3379,58.229 26.1133,58.229 Q23.897,58.229 22.8884,57.0835 Q21.8799,55.938 21.8799,53.4146 Z "/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="44" x="57" y="54.4883">«user»</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="72" x="43" y="70.9766">Client App</text><rect fill="#FEFECE" filter="url(#f1)" height="46.9766" style="stroke: #A80036; stroke-width: 1.5;" width="176" x="517" y="33.4883"/><ellipse cx="535" cy="51.4883" fill="#B3CDE3" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M537.9731,57.1313 Q537.3921,57.4302 536.7529,57.5796 Q536.1138,57.729 535.4082,57.729 Q532.9014,57.729 531.5815,56.0771 Q530.2617,54.4253 530.2617,51.3042 Q530.2617,48.1748 531.5815,46.5229 Q532.9014,44.8711 535.4082,44.8711 Q536.1138,44.8711 536.7612,45.0205 Q537.4087,45.1699 537.9731,45.4688 L537.9731,48.1914 Q537.3423,47.6104 536.7488,47.3406 Q536.1553,47.0708 535.5244,47.0708 Q534.1797,47.0708 533.4949,48.1375 Q532.8101,49.2041 532.8101,51.3042 Q532.8101,53.396 533.4949,54.4626 Q534.1797,55.5293 535.5244,55.5293 Q536.1553,55.5293 536.7488,55.2595 Q537.3423,54.9897 537.9731,54.4087 Z "/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="89" x="574.5" y="54.4883">«capital one»</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="134" x="552" y="70.9766">Orchestration Layer</text><rect fill="#FEFECE" filter="url(#f1)" height="46.9766" style="stroke: #A80036; stroke-width: 1.5;" width="162" x="896" y="33.4883"/><ellipse cx="914" cy="51.4883" fill="#B3CDE3" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M916.9731,57.1313 Q916.3921,57.4302 915.7529,57.5796 Q915.1138,57.729 914.4082,57.729 Q911.9014,57.729 910.5815,56.0771 Q909.2617,54.4253 909.2617,51.3042 Q909.2617,48.1748 910.5815,46.5229 Q911.9014,44.8711 914.4082,44.8711 Q915.1138,44.8711 915.7612,45.0205 Q916.4087,45.1699 916.9731,45.4688 L916.9731,48.1914 Q916.3423,47.6104 915.7488,47.3406 Q915.1553,47.0708 914.5244,47.0708 Q913.1797,47.0708 912.4949,48.1375 Q911.8101,49.2041 911.8101,51.3042 Q911.8101,53.396 912.4949,54.4626 Q913.1797,55.5293 914.5244,55.5293 Q915.1553,55.5293 915.7488,55.2595 Q916.3423,54.9897 916.9731,54.4087 Z "/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="89" x="946.5" y="54.4883">«capital one»</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="120" x="931" y="70.9766">Messaging Server</text><rect fill="#FEFECE" filter="url(#f1)" height="46.9766" style="stroke: #A80036; stroke-width: 1.5;" width="258" x="1150" y="33.4883"/><ellipse cx="1168" cy="51.4883" fill="#B3CDE3" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1170.9731,57.1313 Q1170.3921,57.4302 1169.7529,57.5796 Q1169.1138,57.729 1168.4082,57.729 Q1165.9014,57.729 1164.5815,56.0771 Q1163.2617,54.4253 1163.2617,51.3042 Q1163.2617,48.1748 1164.5815,46.5229 Q1165.9014,44.8711 1168.4082,44.8711 Q1169.1138,44.8711 1169.7612,45.0205 Q1170.4087,45.1699 1170.9731,45.4688 L1170.9731,48.1914 Q1170.3423,47.6104 1169.7488,47.3406 Q1169.1553,47.0708 1168.5244,47.0708 Q1167.1797,47.0708 1166.4949,48.1375 Q1165.8101,49.2041 1165.8101,51.3042 Q1165.8101,53.396 1166.4949,54.4626 Q1167.1797,55.5293 1168.5244,55.5293 Q1169.1553,55.5293 1169.7488,55.2595 Q1170.3423,54.9897 1170.9731,54.4087 Z "/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="89" x="1248.5" y="54.4883">«capital one»</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="216" x="1185" y="70.9766">Notification Subscription Server</text><rect fill="#FEFECE" filter="url(#f1)" height="46.9766" style="stroke: #A80036; stroke-width: 1.5;" width="113" x="1422" y="33.4883"/><ellipse cx="1440" cy="51.4883" fill="#FBB4AE" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1444.1143,57.4883 L1436.3945,57.4883 L1436.3945,45.0952 L1444.1143,45.0952 L1444.1143,47.2534 L1438.8433,47.2534 L1438.8433,49.9263 L1443.6162,49.9263 L1443.6162,52.0845 L1438.8433,52.0845 L1438.8433,55.3301 L1444.1143,55.3301 Z "/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="71" x="1457" y="54.4883">«external»</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="36" x="1474.5" y="70.9766">APNS</text><rect fill="#FEFECE" filter="url(#f1)" height="46.9766" style="stroke: #A80036; stroke-width: 1.5;" width="113" x="1549" y="33.4883"/><ellipse cx="1567" cy="51.4883" fill="#FBB4AE" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1571.1143,57.4883 L1563.3945,57.4883 L1563.3945,45.0952 L1571.1143,45.0952 L1571.1143,47.2534 L1565.8433,47.2534 L1565.8433,49.9263 L1570.6162,49.9263 L1570.6162,52.0845 L1565.8433,52.0845 L1565.8433,55.3301 L1571.1143,55.3301 Z "/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="71" x="1584" y="54.4883">«external»</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="32" x="1603.5" y="70.9766">GCM</text><polygon fill="#FBFB77" filter="url(#f1)" points="666,100.4648,666,125.4648,1288,125.4648,1288,110.4648,1278,100.4648,666,100.4648" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="1278" x2="1278" y1="100.4648" y2="110.4648"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="1288" x2="1278" y1="110.4648" y2="110.4648"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="601" x="672" y="118.0332">This is where you can put useful information like links to documentation or support processes.</text><rect fill="#EEEEEE" filter="url(#f1)" height="3" style="stroke: #EEEEEE; stroke-width: 1.0;" width="1668" x="3" y="155.4307"/><line style="stroke: #000000; stroke-width: 1.0;" x1="3" x2="1671" y1="155.4307" y2="155.4307"/><line style="stroke: #000000; stroke-width: 1.0;" x1="3" x2="1671" y1="158.4307" y2="158.4307"/><rect fill="#EEEEEE" filter="url(#f1)" height="23.3105" style="stroke: #000000; stroke-width: 2.0;" width="126" x="774" y="144.7754"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="112" x="780" y="161.3438">Customer Action</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="67" x2="109" y1="199.3965" y2="199.3965"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="109" x2="109" y1="199.3965" y2="212.3965"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="68" x2="109" y1="212.3965" y2="212.3965"/><polygon fill="#A80036" points="78,208.3965,68,212.3965,78,216.3965,74,212.3965" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="16" x="74" y="194.6543">[1]</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="502" x="98" y="194.6543">First time login, or app upgrade, or user toggles notifications on/off in the app.</text><rect fill="#EEEEEE" filter="url(#f1)" height="3" style="stroke: #EEEEEE; stroke-width: 1.0;" width="1668" x="3" y="241.0518"/><line style="stroke: #000000; stroke-width: 1.0;" x1="3" x2="1671" y1="241.0518" y2="241.0518"/><line style="stroke: #000000; stroke-width: 1.0;" x1="3" x2="1671" y1="244.0518" y2="244.0518"/><rect fill="#EEEEEE" filter="url(#f1)" height="23.3105" style="stroke: #000000; stroke-width: 2.0;" width="145" x="764.5" y="230.3965"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="131" x="770.5" y="246.9648">Device Registration</text><polygon fill="#A80036" points="1468.5,280.707,1478.5,284.707,1468.5,288.707,1472.5,284.707" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="67" x2="1474.5" y1="284.707" y2="284.707"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="16" x="74" y="280.2754">[2]</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="227" x="98" y="280.2754">If iOS, register device token in APNS</text><polygon fill="#A80036" points="1595.5,310.0176,1605.5,314.0176,1595.5,318.0176,1599.5,314.0176" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="67" x2="1601.5" y1="314.0176" y2="314.0176"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="16" x="74" y="309.5859">[3]</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="252" x="98" y="309.5859">If Android, register device token in GCM</text><rect fill="#EEEEEE" filter="url(#f1)" height="3" style="stroke: #EEEEEE; stroke-width: 1.0;" width="1668" x="3" y="342.9834"/><line style="stroke: #000000; stroke-width: 1.0;" x1="3" x2="1671" y1="342.9834" y2="342.9834"/><line style="stroke: #000000; stroke-width: 1.0;" x1="3" x2="1671" y1="345.9834" y2="345.9834"/><rect fill="#EEEEEE" filter="url(#f1)" height="23.3105" style="stroke: #000000; stroke-width: 2.0;" width="187" x="743.5" y="332.3281"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="173" x="749.5" y="348.8965">Update Messaging Server</text><polygon fill="#A80036" points="595,382.6387,605,386.6387,595,390.6387,599,386.6387" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="67" x2="601" y1="386.6387" y2="386.6387"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="16" x="74" y="382.207">[4]</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="128" x="98" y="382.207">Update device token</text><polygon fill="#A80036" points="967,411.9492,977,415.9492,967,419.9492,971,415.9492" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="607" x2="973" y1="415.9492" y2="415.9492"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="16" x="614" y="411.5176">[5]</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="166" x="638" y="411.5176">Get existing subscriptions</text><polygon fill="#A80036" points="618,441.2598,608,445.2598,618,449.2598,614,445.2598" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="612" x2="978" y1="445.2598" y2="445.2598"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="16" x="624" y="440.8281">[6]</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="128" x="648" y="440.8281">If success, return all</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="607" x2="649" y1="474.8809" y2="474.8809"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="649" x2="649" y1="474.8809" y2="487.8809"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="608" x2="649" y1="487.8809" y2="487.8809"/><polygon fill="#A80036" points="618,483.8809,608,487.8809,618,491.8809,614,487.8809" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="16" x="614" y="470.1387">[7]</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="202" x="638" y="470.1387">Check if device token is present</text><polygon fill="#A80036" points="967,512.8809,977,516.8809,967,520.8809,971,516.8809" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="607" x2="973" y1="516.8809" y2="516.8809"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="16" x="614" y="512.4492">[8]</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="324" x="638" y="512.4492">If device token is present, stop (skip to next group)</text><polygon fill="#A80036" points="967,547.1914,977,551.1914,967,555.1914,971,551.1914" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="607" x2="973" y1="551.1914" y2="551.1914"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="16" x="614" y="546.7598">[9]</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="283" x="638" y="546.7598">If device token not present, add subscription</text><polygon fill="#FBFB77" filter="url(#f1)" points="300,530.1914,300,555.1914,598,555.1914,598,540.1914,588,530.1914,300,530.1914" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="588" x2="588" y1="530.1914" y2="540.1914"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="598" x2="588" y1="540.1914" y2="540.1914"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="277" x="306" y="547.7598">{ "device_token" : "APA91bE_YiasYasbda..." }</text><polygon fill="#A80036" points="618,581.502,608,585.502,618,589.502,614,585.502" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="612" x2="978" y1="585.502" y2="585.502"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="624" y="581.0703">[10]</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="142" x="656" y="581.0703">Return success/failure</text><rect fill="#EEEEEE" filter="url(#f1)" height="3" style="stroke: #EEEEEE; stroke-width: 1.0;" width="1668" x="3" y="614.4678"/><line style="stroke: #000000; stroke-width: 1.0;" x1="3" x2="1671" y1="614.4678" y2="614.4678"/><line style="stroke: #000000; stroke-width: 1.0;" x1="3" x2="1671" y1="617.4678" y2="617.4678"/><rect fill="#EEEEEE" filter="url(#f1)" height="23.3105" style="stroke: #000000; stroke-width: 2.0;" width="201" x="736.5" y="603.8125"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="187" x="742.5" y="620.3809">Update Master Subscription</text><polygon fill="#A80036" points="1269,654.123,1279,658.123,1269,662.123,1273,658.123" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="607" x2="1275" y1="658.123" y2="658.123"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="614" y="653.6914">[11]</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="135" x="646" y="653.6914">Register device token</text><polygon fill="#A80036" points="618,683.4336,608,687.4336,618,691.4336,614,687.4336" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="612" x2="1280" y1="687.4336" y2="687.4336"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="624" y="683.002">[12]</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="142" x="656" y="683.002">Return success/failure</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="607" x2="649" y1="717.0547" y2="717.0547"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="649" x2="649" y1="717.0547" y2="730.0547"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="608" x2="649" y1="730.0547" y2="730.0547"/><polygon fill="#A80036" points="618,726.0547,608,730.0547,618,734.0547,614,730.0547" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="614" y="712.3125">[13]</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="94" x="646" y="712.3125">Swallow failure</text><polygon fill="#A80036" points="78,755.0547,68,759.0547,78,763.0547,74,759.0547" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="72" x2="606" y1="759.0547" y2="759.0547"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="84" y="754.623">[14]</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="142" x="116" y="754.623">Return success/failure</text><rect fill="#EEEEEE" filter="url(#f1)" height="3" style="stroke: #EEEEEE; stroke-width: 1.0;" width="1668" x="3" y="788.0205"/><line style="stroke: #000000; stroke-width: 1.0;" x1="3" x2="1671" y1="788.0205" y2="788.0205"/><line style="stroke: #000000; stroke-width: 1.0;" x1="3" x2="1671" y1="791.0205" y2="791.0205"/><rect fill="#EEEEEE" filter="url(#f1)" height="23.3105" style="stroke: #000000; stroke-width: 2.0;" width="171" x="751.5" y="777.3652"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="157" x="757.5" y="793.9336">Replicate Subscriptions</text><polygon fill="#A80036" points="595,827.6758,605,831.6758,595,835.6758,599,831.6758" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="67" x2="601" y1="831.6758" y2="831.6758"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="74" y="827.2441">[15]</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="134" x="106" y="827.2441">Update subscriptions</text><polygon fill="#A80036" points="967,856.9863,977,860.9863,967,864.9863,971,860.9863" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="607" x2="973" y1="860.9863" y2="860.9863"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="614" y="856.5547">[16]</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="134" x="646" y="856.5547">Update subscriptions</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="979" x2="1021" y1="890.6074" y2="890.6074"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="1021" x2="1021" y1="890.6074" y2="903.6074"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="980" x2="1021" y1="903.6074" y2="903.6074"/><polygon fill="#A80036" points="990,899.6074,980,903.6074,990,907.6074,986,903.6074" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="986" y="885.8652">[17]</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="256" x="1018" y="885.8652">Update subscription in Messaging Server</text><polygon fill="#A80036" points="618,928.6074,608,932.6074,618,936.6074,614,932.6074" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="612" x2="978" y1="932.6074" y2="932.6074"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="624" y="928.1758">[18]</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="142" x="656" y="928.1758">Return success/failure</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="607" x2="649" y1="962.2285" y2="962.2285"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="649" x2="649" y1="962.2285" y2="975.2285"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="608" x2="649" y1="975.2285" y2="975.2285"/><polygon fill="#A80036" points="618,971.2285,608,975.2285,618,979.2285,614,975.2285" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="614" y="957.4863">[19]</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="94" x="646" y="957.4863">Swallow failure</text><polygon fill="#A80036" points="78,1000.2285,68,1004.2285,78,1008.2285,74,1004.2285" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="72" x2="606" y1="1004.2285" y2="1004.2285"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="84" y="999.7969">[20]</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="142" x="116" y="999.7969">Return success/failure</text></g></svg>