etude_for_aws 0.7.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.
Files changed (124) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +103 -0
  3. data/.rspec +2 -0
  4. data/.ruby-version +1 -0
  5. data/.yardopts +10 -0
  6. data/Dockerfile +17 -0
  7. data/Dockerfile-dev +20 -0
  8. data/Gemfile +6 -0
  9. data/Gemfile.lock +89 -0
  10. data/Guardfile +22 -0
  11. data/Jenkinsfile +11 -0
  12. data/README.md +26 -0
  13. data/Rakefile +12 -0
  14. data/Vagrantfile +15 -0
  15. data/bin/aws_console.rb +10 -0
  16. data/bin/console +14 -0
  17. data/bin/setup +8 -0
  18. data/circle.yml +22 -0
  19. data/config.yml +124 -0
  20. data/docker-compose.yml +9 -0
  21. data/docs/README.md +54 -0
  22. data/docs/_config.yml +6 -0
  23. data/docs/dev/cfm/cfm.md +9 -0
  24. data/docs/dev/cfm/images/vpc_core_model.png +0 -0
  25. data/docs/dev/cfm/images/vpc_type1.png +0 -0
  26. data/docs/dev/cfm/images/vpc_type2.png +0 -0
  27. data/docs/dev/cfm/images/vpc_type3.png +0 -0
  28. data/docs/dev/cfm/images/vpc_type4.png +0 -0
  29. data/docs/dev/cfm/images/vpc_type5.png +0 -0
  30. data/docs/dev/cfm/images/vpc_type6.png +0 -0
  31. data/docs/dev/cfm/images/vpc_type7.png +0 -0
  32. data/docs/dev/cfm/vpc/core_model.puml +35 -0
  33. data/docs/dev/cfm/vpc/vpc.md +39 -0
  34. data/docs/dev/cfm/vpc/vpc_type1.puml +17 -0
  35. data/docs/dev/cfm/vpc/vpc_type2.puml +23 -0
  36. data/docs/dev/cfm/vpc/vpc_type3.puml +24 -0
  37. data/docs/dev/cfm/vpc/vpc_type4.puml +23 -0
  38. data/docs/dev/cfm/vpc/vpc_type5.puml +25 -0
  39. data/docs/dev/cfm/vpc/vpc_type6.puml +26 -0
  40. data/docs/dev/cfm/vpc/vpc_type7.puml +39 -0
  41. data/docs/dev/ec2/core_model.puml +43 -0
  42. data/docs/dev/ec2/ec2.md +36 -0
  43. data/docs/dev/ec2/ec2_type1.puml +27 -0
  44. data/docs/dev/ec2/ec2_type2.puml +43 -0
  45. data/docs/dev/ec2/ec2_type3.puml +44 -0
  46. data/docs/dev/ec2/ec2_type4.puml +43 -0
  47. data/docs/dev/ec2/ec2_type5.puml +45 -0
  48. data/docs/dev/ec2/ec2_type6.puml +46 -0
  49. data/docs/dev/ec2/ec2_type7.puml +79 -0
  50. data/docs/dev/ec2/images/.keep +0 -0
  51. data/docs/dev/ec2/images/ec2_core_model.png +0 -0
  52. data/docs/dev/ec2/images/ec2_type1.png +0 -0
  53. data/docs/dev/ec2/images/ec2_type2.png +0 -0
  54. data/docs/dev/ec2/images/ec2_type3.png +0 -0
  55. data/docs/dev/ec2/images/ec2_type4.png +0 -0
  56. data/docs/dev/ec2/images/ec2_type5.png +0 -0
  57. data/docs/dev/ec2/images/ec2_type6.png +0 -0
  58. data/docs/dev/ec2/images/ec2_type7.png +0 -0
  59. data/docs/dev/vpc/core_model.puml +49 -0
  60. data/docs/dev/vpc/images/core_model.png +0 -0
  61. data/docs/dev/vpc/images/simple.png +0 -0
  62. data/docs/dev/vpc/images/standard.png +0 -0
  63. data/docs/dev/vpc/simple.puml +17 -0
  64. data/docs/dev/vpc/standard.puml +24 -0
  65. data/docs/dev/vpc/vpc.md +19 -0
  66. data/docs/ops/build_aws_sdk_repl.md +19 -0
  67. data/docs/ops/images/.keep +0 -0
  68. data/docs/ops/run_rake_task.md +89 -0
  69. data/docs/ops/ship_circleci.md +9 -0
  70. data/docs/ops/ship_jenkins.md +20 -0
  71. data/docs/ops/ship_ruby_gem.md +26 -0
  72. data/docs/template_catalog.md +6 -0
  73. data/docs/template_pattern.md +13 -0
  74. data/docs/template_recipe.md +6 -0
  75. data/docs/template_spec.md +8 -0
  76. data/etude_for_aws.gemspec +41 -0
  77. data/etude_for_aws.iml +42 -0
  78. data/exe/etude_for_aws +3 -0
  79. data/lib/etude_for_aws.rb +38 -0
  80. data/lib/etude_for_aws/cfm/configuration.rb +39 -0
  81. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-1az-1subnet-pub.template +529 -0
  82. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-1az-2subnet-pub-pri.template +790 -0
  83. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-1az-2subnet-pub.template +634 -0
  84. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-2az-2subnet-pri.template +645 -0
  85. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-2az-2subnet-pub-pri.template +611 -0
  86. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-2az-2subnet-pub.template +646 -0
  87. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-2az-4subnet-pub-pri.template +1010 -0
  88. data/lib/etude_for_aws/cfm/vpc/null_vpc.rb +13 -0
  89. data/lib/etude_for_aws/cfm/vpc/one_az_one_public_subnet_vpc.rb +45 -0
  90. data/lib/etude_for_aws/cfm/vpc/one_az_two_public_and_private_subnet_vpc.rb +47 -0
  91. data/lib/etude_for_aws/cfm/vpc/one_az_two_public_subnet_vpc.rb +47 -0
  92. data/lib/etude_for_aws/cfm/vpc/two_az_one_public_subnet_and_private_subnet_vpc.rb +52 -0
  93. data/lib/etude_for_aws/cfm/vpc/two_az_two_private_subnet_vpc.rb +38 -0
  94. data/lib/etude_for_aws/cfm/vpc/two_az_two_public_subnet_and_private_subnet_vpc.rb +38 -0
  95. data/lib/etude_for_aws/cfm/vpc/two_az_two_public_subnet_vpc.rb +38 -0
  96. data/lib/etude_for_aws/cfm/vpc/vpc.rb +104 -0
  97. data/lib/etude_for_aws/ec2/configuration.rb +66 -0
  98. data/lib/etude_for_aws/ec2/ec2.rb +218 -0
  99. data/lib/etude_for_aws/ec2/ec2_api_gateway.rb +127 -0
  100. data/lib/etude_for_aws/ec2/ec2_instance.rb +107 -0
  101. data/lib/etude_for_aws/ec2/key_pair.rb +46 -0
  102. data/lib/etude_for_aws/ec2/security_group.rb +75 -0
  103. data/lib/etude_for_aws/ec2/vpc_interface.rb +11 -0
  104. data/lib/etude_for_aws/helpers/certification_helper.rb +16 -0
  105. data/lib/etude_for_aws/helpers/configuration_helper.rb +103 -0
  106. data/lib/etude_for_aws/tasks/cfm.rake +73 -0
  107. data/lib/etude_for_aws/tasks/ec2.rake +210 -0
  108. data/lib/etude_for_aws/tasks/vpc.rake +47 -0
  109. data/lib/etude_for_aws/version.rb +3 -0
  110. data/lib/etude_for_aws/vpc/configuration.rb +77 -0
  111. data/lib/etude_for_aws/vpc/customer_gateway.rb +28 -0
  112. data/lib/etude_for_aws/vpc/internet_gateway.rb +15 -0
  113. data/lib/etude_for_aws/vpc/route_table.rb +42 -0
  114. data/lib/etude_for_aws/vpc/simple_vpc.rb +57 -0
  115. data/lib/etude_for_aws/vpc/standard_vpc.rb +94 -0
  116. data/lib/etude_for_aws/vpc/subnet.rb +22 -0
  117. data/lib/etude_for_aws/vpc/vpc.rb +147 -0
  118. data/lib/etude_for_aws/vpc/vpc_api_gateway.rb +277 -0
  119. data/lib/etude_for_aws/vpc/vpc_director.rb +43 -0
  120. data/lib/etude_for_aws/vpc/vpn.rb +244 -0
  121. data/lib/etude_for_aws/vpc/vpn_connection.rb +28 -0
  122. data/lib/etude_for_aws/vpc/vpn_director.rb +47 -0
  123. data/lib/etude_for_aws/vpc/vpn_gateway.rb +36 -0
  124. metadata +280 -0
@@ -0,0 +1,645 @@
1
+ {
2
+ "AWSTemplateFormatVersion": "2010-09-09",
3
+ "Description": "AWS CloudFormation Sample Template.",
4
+ "Parameters" : {
5
+ "AZ1" : {
6
+ "Default" : "ap-northeast-1a",
7
+ "Description" : "AZ",
8
+ "Type" : "String",
9
+ "AllowedValues" : [ "ap-northeast-1a","ap-northeast-1c","us-west-2a","us-west-2b","us-west-2c" ],
10
+ "ConstraintDescription" : "must select a valid availability zone."
11
+ },
12
+ "AZ2" : {
13
+ "Default" : "ap-northeast-1c",
14
+ "Description" : "AZ",
15
+ "Type" : "String",
16
+ "AllowedValues" : [ "ap-northeast-1a","ap-northeast-1c","us-west-2a","us-west-2b","us-west-2c" ],
17
+ "ConstraintDescription" : "must select a valid availability zone."
18
+ }
19
+ },
20
+ "Mappings": {
21
+ "SubnetConfig": {
22
+ "VPC": {
23
+ "CIDR": "10.0.0.0/16"
24
+ },
25
+ "Private-1a": {
26
+ "CIDR": "10.0.2.0/24"
27
+ },
28
+ "Private-1c": {
29
+ "CIDR": "10.0.3.0/24"
30
+ }
31
+ }
32
+ },
33
+ "Resources": {
34
+ "VPC": {
35
+ "Type": "AWS::EC2::VPC",
36
+ "Properties": {
37
+ "CidrBlock": {
38
+ "Fn::FindInMap": [
39
+ "SubnetConfig",
40
+ "VPC",
41
+ "CIDR"
42
+ ]
43
+ },
44
+ "Tags": [
45
+ {
46
+ "Key": "Application",
47
+ "Value": {
48
+ "Ref": "AWS::StackId"
49
+ }
50
+ },
51
+ {
52
+ "Key": "Network",
53
+ "Value": "Public"
54
+ }
55
+ ]
56
+ },
57
+ "Metadata": {
58
+ "AWS::CloudFormation::Designer": {
59
+ "id": "36f558fe-7a2b-4a24-9edb-3b9a10d33217"
60
+ }
61
+ }
62
+ },
63
+ "PrivateSubnet1a": {
64
+ "Type": "AWS::EC2::Subnet",
65
+ "Properties": {
66
+ "VpcId": {
67
+ "Ref": "VPC"
68
+ },
69
+ "CidrBlock": {
70
+ "Fn::FindInMap": [
71
+ "SubnetConfig",
72
+ "Private-1a",
73
+ "CIDR"
74
+ ]
75
+ },
76
+ "AvailabilityZone": {"Ref": "AZ1"},
77
+ "Tags": [
78
+ {
79
+ "Key": "Application",
80
+ "Value": {
81
+ "Ref": "AWS::StackId"
82
+ }
83
+ },
84
+ {
85
+ "Key": "Network",
86
+ "Value": "Private"
87
+ }
88
+ ]
89
+ },
90
+ "Metadata": {
91
+ "AWS::CloudFormation::Designer": {
92
+ "id": "c88e3060-c887-4c7a-8b25-74dba8c01b1f"
93
+ }
94
+ }
95
+ },
96
+ "PrivateSubnet1c": {
97
+ "Type": "AWS::EC2::Subnet",
98
+ "Properties": {
99
+ "VpcId": {
100
+ "Ref": "VPC"
101
+ },
102
+ "CidrBlock": {
103
+ "Fn::FindInMap": [
104
+ "SubnetConfig",
105
+ "Private-1c",
106
+ "CIDR"
107
+ ]
108
+ },
109
+ "AvailabilityZone": {"Ref": "AZ2"},
110
+ "Tags": [
111
+ {
112
+ "Key": "Application",
113
+ "Value": {
114
+ "Ref": "AWS::StackId"
115
+ }
116
+ },
117
+ {
118
+ "Key": "Network",
119
+ "Value": "Private"
120
+ }
121
+ ]
122
+ },
123
+ "Metadata": {
124
+ "AWS::CloudFormation::Designer": {
125
+ "id": "f950a56e-a1ed-4e65-97df-1b8869da8b59"
126
+ }
127
+ }
128
+ },
129
+ "PrivateRouteTable": {
130
+ "Type": "AWS::EC2::RouteTable",
131
+ "Properties": {
132
+ "VpcId": {
133
+ "Ref": "VPC"
134
+ },
135
+ "Tags": [
136
+ {
137
+ "Key": "Application",
138
+ "Value": {
139
+ "Ref": "AWS::StackId"
140
+ }
141
+ },
142
+ {
143
+ "Key": "Network",
144
+ "Value": "Private"
145
+ }
146
+ ]
147
+ },
148
+ "Metadata": {
149
+ "AWS::CloudFormation::Designer": {
150
+ "id": "e13eddcb-d508-41ed-86ba-52721609f64d"
151
+ }
152
+ }
153
+ },
154
+ "PrivateSubnetRouteTableAssociation1a": {
155
+ "Type": "AWS::EC2::SubnetRouteTableAssociation",
156
+ "Properties": {
157
+ "SubnetId": {
158
+ "Ref": "PrivateSubnet1a"
159
+ },
160
+ "RouteTableId": {
161
+ "Ref": "PrivateRouteTable"
162
+ }
163
+ },
164
+ "Metadata": {
165
+ "AWS::CloudFormation::Designer": {
166
+ "id": "6459bdbb-c25c-4bd7-9ea6-e78fc7da90d0"
167
+ }
168
+ }
169
+ },
170
+ "PrivateSubnetRouteTableAssociation1c": {
171
+ "Type": "AWS::EC2::SubnetRouteTableAssociation",
172
+ "Properties": {
173
+ "SubnetId": {
174
+ "Ref": "PrivateSubnet1c"
175
+ },
176
+ "RouteTableId": {
177
+ "Ref": "PrivateRouteTable"
178
+ }
179
+ },
180
+ "Metadata": {
181
+ "AWS::CloudFormation::Designer": {
182
+ "id": "6237f72f-664d-4c7d-bbb9-52980fb4f620"
183
+ }
184
+ }
185
+ },
186
+ "PrivateNetworkAcl": {
187
+ "Type": "AWS::EC2::NetworkAcl",
188
+ "Properties": {
189
+ "VpcId": {
190
+ "Ref": "VPC"
191
+ },
192
+ "Tags": [
193
+ {
194
+ "Key": "Application",
195
+ "Value": {
196
+ "Ref": "AWS::StackId"
197
+ }
198
+ },
199
+ {
200
+ "Key": "Network",
201
+ "Value": "Private"
202
+ }
203
+ ]
204
+ },
205
+ "Metadata": {
206
+ "AWS::CloudFormation::Designer": {
207
+ "id": "5f563655-d27c-492d-9458-8b36dd950a7e"
208
+ }
209
+ }
210
+ },
211
+ "InboundPrivateNetworkAclEntry": {
212
+ "Type": "AWS::EC2::NetworkAclEntry",
213
+ "Properties": {
214
+ "NetworkAclId": {
215
+ "Ref": "PrivateNetworkAcl"
216
+ },
217
+ "RuleNumber": "100",
218
+ "Protocol": "6",
219
+ "RuleAction": "allow",
220
+ "Egress": "false",
221
+ "CidrBlock": "0.0.0.0/0",
222
+ "PortRange": {
223
+ "From": "0",
224
+ "To": "65535"
225
+ }
226
+ },
227
+ "Metadata": {
228
+ "AWS::CloudFormation::Designer": {
229
+ "id": "81a03e88-a76c-4335-be92-01c433e692cf"
230
+ }
231
+ }
232
+ },
233
+ "OutBoundPrivateNetworkAclEntry": {
234
+ "Type": "AWS::EC2::NetworkAclEntry",
235
+ "Properties": {
236
+ "NetworkAclId": {
237
+ "Ref": "PrivateNetworkAcl"
238
+ },
239
+ "RuleNumber": "100",
240
+ "Protocol": "6",
241
+ "RuleAction": "allow",
242
+ "Egress": "true",
243
+ "CidrBlock": "0.0.0.0/0",
244
+ "PortRange": {
245
+ "From": "0",
246
+ "To": "65535"
247
+ }
248
+ },
249
+ "Metadata": {
250
+ "AWS::CloudFormation::Designer": {
251
+ "id": "0d4bfe6f-ab3b-434a-bb71-6b0d7a74c1c8"
252
+ }
253
+ }
254
+ },
255
+ "PrivateSubnetNetworkAclAssociation1a": {
256
+ "Type": "AWS::EC2::SubnetNetworkAclAssociation",
257
+ "Properties": {
258
+ "SubnetId": {
259
+ "Ref": "PrivateSubnet1a"
260
+ },
261
+ "NetworkAclId": {
262
+ "Ref": "PrivateNetworkAcl"
263
+ }
264
+ },
265
+ "Metadata": {
266
+ "AWS::CloudFormation::Designer": {
267
+ "id": "c1a742ea-be11-4f90-9edb-00340f314443"
268
+ }
269
+ }
270
+ },
271
+ "PrivateSubnetNetworkAclAssociation1c": {
272
+ "Type": "AWS::EC2::SubnetNetworkAclAssociation",
273
+ "Properties": {
274
+ "SubnetId": {
275
+ "Ref": "PrivateSubnet1c"
276
+ },
277
+ "NetworkAclId": {
278
+ "Ref": "PrivateNetworkAcl"
279
+ }
280
+ },
281
+ "Metadata": {
282
+ "AWS::CloudFormation::Designer": {
283
+ "id": "84446bb6-0790-4a7b-868e-776127af1b1a"
284
+ }
285
+ }
286
+ }
287
+ },
288
+ "Outputs": {
289
+ "VPCID" : {
290
+ "Value" : { "Ref" : "VPC" },
291
+ "Description" : "VPC ID"
292
+ },
293
+ "SUBNETPRI1" : {
294
+ "Value" : { "Ref" : "PrivateSubnet1a" },
295
+ "Description" : "PrivateSubnet1"
296
+ },
297
+ "SUBNETPRI2" : {
298
+ "Value" : { "Ref" : "PrivateSubnet1c" },
299
+ "Description" : "PrivateSubnet2"
300
+ }
301
+ },
302
+ "Metadata": {
303
+ "AWS::CloudFormation::Designer": {
304
+ "7354dd3a-e180-418e-8cd2-a9b2ad2a4666": {
305
+ "size": {
306
+ "width": 60,
307
+ "height": 60
308
+ },
309
+ "position": {
310
+ "x": 900,
311
+ "y": 650
312
+ },
313
+ "z": 1,
314
+ "embeds": []
315
+ },
316
+ "36f558fe-7a2b-4a24-9edb-3b9a10d33217": {
317
+ "size": {
318
+ "width": 1120,
319
+ "height": 860
320
+ },
321
+ "position": {
322
+ "x": -350,
323
+ "y": 530
324
+ },
325
+ "z": 1,
326
+ "embeds": [
327
+ "5f563655-d27c-492d-9458-8b36dd950a7e",
328
+ "e13eddcb-d508-41ed-86ba-52721609f64d",
329
+ "f950a56e-a1ed-4e65-97df-1b8869da8b59",
330
+ "c88e3060-c887-4c7a-8b25-74dba8c01b1f",
331
+ "9d9f7c73-1580-4f8e-8463-6e27fb43e766",
332
+ "35457506-b697-467e-925b-61a48305e0da",
333
+ "21cff9ba-e2c6-4d76-80d2-7f10d6b618b0",
334
+ "d17f3169-9687-4907-ac33-04ce215fded7"
335
+ ]
336
+ },
337
+ "5f563655-d27c-492d-9458-8b36dd950a7e": {
338
+ "size": {
339
+ "width": 190,
340
+ "height": 310
341
+ },
342
+ "position": {
343
+ "x": -260,
344
+ "y": 1010
345
+ },
346
+ "z": 2,
347
+ "parent": "36f558fe-7a2b-4a24-9edb-3b9a10d33217",
348
+ "embeds": [
349
+ "0d4bfe6f-ab3b-434a-bb71-6b0d7a74c1c8",
350
+ "81a03e88-a76c-4335-be92-01c433e692cf"
351
+ ]
352
+ },
353
+ "0d4bfe6f-ab3b-434a-bb71-6b0d7a74c1c8": {
354
+ "size": {
355
+ "width": 60,
356
+ "height": 60
357
+ },
358
+ "position": {
359
+ "x": -200,
360
+ "y": 1080
361
+ },
362
+ "z": 3,
363
+ "parent": "5f563655-d27c-492d-9458-8b36dd950a7e",
364
+ "embeds": []
365
+ },
366
+ "81a03e88-a76c-4335-be92-01c433e692cf": {
367
+ "size": {
368
+ "width": 60,
369
+ "height": 60
370
+ },
371
+ "position": {
372
+ "x": -200,
373
+ "y": 1190
374
+ },
375
+ "z": 3,
376
+ "parent": "5f563655-d27c-492d-9458-8b36dd950a7e",
377
+ "embeds": []
378
+ },
379
+ "e13eddcb-d508-41ed-86ba-52721609f64d": {
380
+ "size": {
381
+ "width": 180,
382
+ "height": 260
383
+ },
384
+ "position": {
385
+ "x": 510,
386
+ "y": 1030
387
+ },
388
+ "z": 2,
389
+ "parent": "36f558fe-7a2b-4a24-9edb-3b9a10d33217",
390
+ "embeds": []
391
+ },
392
+ "c88e3060-c887-4c7a-8b25-74dba8c01b1f": {
393
+ "size": {
394
+ "width": 290,
395
+ "height": 110
396
+ },
397
+ "position": {
398
+ "x": 90,
399
+ "y": 770
400
+ },
401
+ "z": 2,
402
+ "parent": "36f558fe-7a2b-4a24-9edb-3b9a10d33217",
403
+ "embeds": []
404
+ },
405
+ "c1a742ea-be11-4f90-9edb-00340f314443": {
406
+ "source": {
407
+ "id": "5f563655-d27c-492d-9458-8b36dd950a7e"
408
+ },
409
+ "target": {
410
+ "id": "c88e3060-c887-4c7a-8b25-74dba8c01b1f"
411
+ },
412
+ "z": 2
413
+ },
414
+ "6459bdbb-c25c-4bd7-9ea6-e78fc7da90d0": {
415
+ "source": {
416
+ "id": "e13eddcb-d508-41ed-86ba-52721609f64d"
417
+ },
418
+ "target": {
419
+ "id": "c88e3060-c887-4c7a-8b25-74dba8c01b1f"
420
+ },
421
+ "z": 2
422
+ },
423
+ "9d9f7c73-1580-4f8e-8463-6e27fb43e766": {
424
+ "size": {
425
+ "width": 300,
426
+ "height": 380
427
+ },
428
+ "position": {
429
+ "x": -310,
430
+ "y": 570
431
+ },
432
+ "z": 2,
433
+ "parent": "36f558fe-7a2b-4a24-9edb-3b9a10d33217",
434
+ "embeds": [
435
+ "6a00b44b-c40f-4464-aad5-1d54e3772398",
436
+ "f22aa599-4f7e-4715-a098-41e10c081523",
437
+ "c8ec5a7a-62cb-4406-9f2d-0b5a564fd966",
438
+ "8b8f955d-4b13-43ad-bd92-88a983aba05e",
439
+ "fc400079-4e29-449d-9261-802c07e90664"
440
+ ]
441
+ },
442
+ "6a00b44b-c40f-4464-aad5-1d54e3772398": {
443
+ "size": {
444
+ "width": 60,
445
+ "height": 60
446
+ },
447
+ "position": {
448
+ "x": -250,
449
+ "y": 830
450
+ },
451
+ "z": 3,
452
+ "parent": "9d9f7c73-1580-4f8e-8463-6e27fb43e766",
453
+ "embeds": []
454
+ },
455
+ "f22aa599-4f7e-4715-a098-41e10c081523": {
456
+ "size": {
457
+ "width": 60,
458
+ "height": 60
459
+ },
460
+ "position": {
461
+ "x": -140,
462
+ "y": 790
463
+ },
464
+ "z": 3,
465
+ "parent": "9d9f7c73-1580-4f8e-8463-6e27fb43e766",
466
+ "embeds": []
467
+ },
468
+ "c8ec5a7a-62cb-4406-9f2d-0b5a564fd966": {
469
+ "size": {
470
+ "width": 60,
471
+ "height": 60
472
+ },
473
+ "position": {
474
+ "x": -250,
475
+ "y": 610
476
+ },
477
+ "z": 3,
478
+ "parent": "9d9f7c73-1580-4f8e-8463-6e27fb43e766",
479
+ "embeds": []
480
+ },
481
+ "8b8f955d-4b13-43ad-bd92-88a983aba05e": {
482
+ "size": {
483
+ "width": 60,
484
+ "height": 60
485
+ },
486
+ "position": {
487
+ "x": -250,
488
+ "y": 720
489
+ },
490
+ "z": 3,
491
+ "parent": "9d9f7c73-1580-4f8e-8463-6e27fb43e766",
492
+ "embeds": []
493
+ },
494
+ "fc400079-4e29-449d-9261-802c07e90664": {
495
+ "size": {
496
+ "width": 60,
497
+ "height": 60
498
+ },
499
+ "position": {
500
+ "x": -140,
501
+ "y": 690
502
+ },
503
+ "z": 3,
504
+ "parent": "9d9f7c73-1580-4f8e-8463-6e27fb43e766",
505
+ "embeds": []
506
+ },
507
+ "35457506-b697-467e-925b-61a48305e0da": {
508
+ "size": {
509
+ "width": 180,
510
+ "height": 330
511
+ },
512
+ "position": {
513
+ "x": 510,
514
+ "y": 580
515
+ },
516
+ "z": 2,
517
+ "parent": "36f558fe-7a2b-4a24-9edb-3b9a10d33217",
518
+ "embeds": [
519
+ "3b3697f1-2874-4073-847a-c2814e9c4336"
520
+ ]
521
+ },
522
+ "92a83719-48bf-4e04-a3cd-0f8b99305053": {
523
+ "source": {
524
+ "id": "7354dd3a-e180-418e-8cd2-a9b2ad2a4666"
525
+ },
526
+ "target": {
527
+ "id": "36f558fe-7a2b-4a24-9edb-3b9a10d33217"
528
+ },
529
+ "z": 1
530
+ },
531
+ "3b3697f1-2874-4073-847a-c2814e9c4336": {
532
+ "size": {
533
+ "width": 60,
534
+ "height": 60
535
+ },
536
+ "position": {
537
+ "x": 560,
538
+ "y": 720
539
+ },
540
+ "z": 3,
541
+ "parent": "35457506-b697-467e-925b-61a48305e0da",
542
+ "embeds": [],
543
+ "references": [
544
+ "7354dd3a-e180-418e-8cd2-a9b2ad2a4666"
545
+ ],
546
+ "dependson": [
547
+ "92a83719-48bf-4e04-a3cd-0f8b99305053"
548
+ ]
549
+ },
550
+ "d17f3169-9687-4907-ac33-04ce215fded7": {
551
+ "size": {
552
+ "width": 290,
553
+ "height": 120
554
+ },
555
+ "position": {
556
+ "x": 90,
557
+ "y": 630
558
+ },
559
+ "z": 2,
560
+ "parent": "36f558fe-7a2b-4a24-9edb-3b9a10d33217",
561
+ "embeds": []
562
+ },
563
+ "de86ddc8-8415-41a5-a905-b1bda5ba3fed": {
564
+ "source": {
565
+ "id": "9d9f7c73-1580-4f8e-8463-6e27fb43e766"
566
+ },
567
+ "target": {
568
+ "id": "d17f3169-9687-4907-ac33-04ce215fded7"
569
+ },
570
+ "z": 2
571
+ },
572
+ "6033dd6a-6b5b-4b0a-9e41-a59a779c5a61": {
573
+ "source": {
574
+ "id": "35457506-b697-467e-925b-61a48305e0da"
575
+ },
576
+ "target": {
577
+ "id": "d17f3169-9687-4907-ac33-04ce215fded7"
578
+ },
579
+ "z": 2
580
+ },
581
+ "21cff9ba-e2c6-4d76-80d2-7f10d6b618b0": {
582
+ "size": {
583
+ "width": 290,
584
+ "height": 100
585
+ },
586
+ "position": {
587
+ "x": 90,
588
+ "y": 1040
589
+ },
590
+ "z": 2,
591
+ "parent": "36f558fe-7a2b-4a24-9edb-3b9a10d33217",
592
+ "embeds": []
593
+ },
594
+ "f950a56e-a1ed-4e65-97df-1b8869da8b59": {
595
+ "size": {
596
+ "width": 290,
597
+ "height": 100
598
+ },
599
+ "position": {
600
+ "x": 90,
601
+ "y": 1170
602
+ },
603
+ "z": 2,
604
+ "parent": "36f558fe-7a2b-4a24-9edb-3b9a10d33217",
605
+ "embeds": []
606
+ },
607
+ "ff1a00b2-0c71-4500-a421-08255279d2f0": {
608
+ "source": {
609
+ "id": "35457506-b697-467e-925b-61a48305e0da"
610
+ },
611
+ "target": {
612
+ "id": "21cff9ba-e2c6-4d76-80d2-7f10d6b618b0"
613
+ },
614
+ "z": 2
615
+ },
616
+ "353e5d2f-7968-4636-a916-b4d1305ad23f": {
617
+ "source": {
618
+ "id": "9d9f7c73-1580-4f8e-8463-6e27fb43e766"
619
+ },
620
+ "target": {
621
+ "id": "21cff9ba-e2c6-4d76-80d2-7f10d6b618b0"
622
+ },
623
+ "z": 2
624
+ },
625
+ "6237f72f-664d-4c7d-bbb9-52980fb4f620": {
626
+ "source": {
627
+ "id": "e13eddcb-d508-41ed-86ba-52721609f64d"
628
+ },
629
+ "target": {
630
+ "id": "f950a56e-a1ed-4e65-97df-1b8869da8b59"
631
+ },
632
+ "z": 2
633
+ },
634
+ "84446bb6-0790-4a7b-868e-776127af1b1a": {
635
+ "source": {
636
+ "id": "5f563655-d27c-492d-9458-8b36dd950a7e"
637
+ },
638
+ "target": {
639
+ "id": "f950a56e-a1ed-4e65-97df-1b8869da8b59"
640
+ },
641
+ "z": 2
642
+ }
643
+ }
644
+ }
645
+ }