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,611 @@
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
+ "Public-1a": {
26
+ "CIDR": "10.0.0.0/24"
27
+ },
28
+ "Private-1c": {
29
+ "CIDR": "10.0.1.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
+ "PublicSubnet1a": {
64
+ "Type": "AWS::EC2::Subnet",
65
+ "Properties": {
66
+ "VpcId": {
67
+ "Ref": "VPC"
68
+ },
69
+ "CidrBlock": {
70
+ "Fn::FindInMap": [
71
+ "SubnetConfig",
72
+ "Public-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": "Public"
87
+ }
88
+ ]
89
+ },
90
+ "Metadata": {
91
+ "AWS::CloudFormation::Designer": {
92
+ "id": "d17f3169-9687-4907-ac33-04ce215fded7"
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": {
110
+ "Ref": "AZ2"
111
+ },
112
+ "Tags": [
113
+ {
114
+ "Key": "Application",
115
+ "Value": {
116
+ "Ref": "AWS::StackId"
117
+ }
118
+ },
119
+ {
120
+ "Key": "Network",
121
+ "Value": "Private"
122
+ }
123
+ ]
124
+ }
125
+ },
126
+ "InternetGateway": {
127
+ "Type": "AWS::EC2::InternetGateway",
128
+ "Properties": {
129
+ "Tags": [
130
+ {
131
+ "Key": "Application",
132
+ "Value": {
133
+ "Ref": "AWS::StackId"
134
+ }
135
+ },
136
+ {
137
+ "Key": "Network",
138
+ "Value": "Public"
139
+ }
140
+ ]
141
+ },
142
+ "Metadata": {
143
+ "AWS::CloudFormation::Designer": {
144
+ "id": "7354dd3a-e180-418e-8cd2-a9b2ad2a4666"
145
+ }
146
+ }
147
+ },
148
+ "GatewayToInternet": {
149
+ "Type": "AWS::EC2::VPCGatewayAttachment",
150
+ "Properties": {
151
+ "VpcId": {
152
+ "Ref": "VPC"
153
+ },
154
+ "InternetGatewayId": {
155
+ "Ref": "InternetGateway"
156
+ }
157
+ },
158
+ "Metadata": {
159
+ "AWS::CloudFormation::Designer": {
160
+ "id": "92a83719-48bf-4e04-a3cd-0f8b99305053"
161
+ }
162
+ }
163
+ },
164
+ "PublicRouteTable": {
165
+ "Type": "AWS::EC2::RouteTable",
166
+ "Properties": {
167
+ "VpcId": {
168
+ "Ref": "VPC"
169
+ },
170
+ "Tags": [
171
+ {
172
+ "Key": "Application",
173
+ "Value": {
174
+ "Ref": "AWS::StackId"
175
+ }
176
+ },
177
+ {
178
+ "Key": "Network",
179
+ "Value": "Public"
180
+ }
181
+ ]
182
+ },
183
+ "Metadata": {
184
+ "AWS::CloudFormation::Designer": {
185
+ "id": "35457506-b697-467e-925b-61a48305e0da"
186
+ }
187
+ }
188
+ },
189
+ "PublicRoute": {
190
+ "Type": "AWS::EC2::Route",
191
+ "DependsOn": "GatewayToInternet",
192
+ "Properties": {
193
+ "RouteTableId": {
194
+ "Ref": "PublicRouteTable"
195
+ },
196
+ "DestinationCidrBlock": "0.0.0.0/0",
197
+ "GatewayId": {
198
+ "Ref": "InternetGateway"
199
+ }
200
+ },
201
+ "Metadata": {
202
+ "AWS::CloudFormation::Designer": {
203
+ "id": "3b3697f1-2874-4073-847a-c2814e9c4336"
204
+ }
205
+ }
206
+ },
207
+ "PublicSubnetRouteTableAssociation1a": {
208
+ "Type": "AWS::EC2::SubnetRouteTableAssociation",
209
+ "Properties": {
210
+ "SubnetId": {
211
+ "Ref": "PublicSubnet1a"
212
+ },
213
+ "RouteTableId": {
214
+ "Ref": "PublicRouteTable"
215
+ }
216
+ },
217
+ "Metadata": {
218
+ "AWS::CloudFormation::Designer": {
219
+ "id": "6033dd6a-6b5b-4b0a-9e41-a59a779c5a61"
220
+ }
221
+ }
222
+ },
223
+ "PublicNetworkAcl": {
224
+ "Type": "AWS::EC2::NetworkAcl",
225
+ "Properties": {
226
+ "VpcId": {
227
+ "Ref": "VPC"
228
+ },
229
+ "Tags": [
230
+ {
231
+ "Key": "Application",
232
+ "Value": {
233
+ "Ref": "AWS::StackId"
234
+ }
235
+ },
236
+ {
237
+ "Key": "Network",
238
+ "Value": "Public"
239
+ }
240
+ ]
241
+ },
242
+ "Metadata": {
243
+ "AWS::CloudFormation::Designer": {
244
+ "id": "9d9f7c73-1580-4f8e-8463-6e27fb43e766"
245
+ }
246
+ }
247
+ },
248
+ "InboundHTTPPublicNetworkAclEntry": {
249
+ "Type": "AWS::EC2::NetworkAclEntry",
250
+ "Properties": {
251
+ "NetworkAclId": {
252
+ "Ref": "PublicNetworkAcl"
253
+ },
254
+ "RuleNumber": "100",
255
+ "Protocol": "6",
256
+ "RuleAction": "allow",
257
+ "Egress": "false",
258
+ "CidrBlock": "0.0.0.0/0",
259
+ "PortRange": {
260
+ "From": "80",
261
+ "To": "80"
262
+ }
263
+ },
264
+ "Metadata": {
265
+ "AWS::CloudFormation::Designer": {
266
+ "id": "fc400079-4e29-449d-9261-802c07e90664"
267
+ }
268
+ }
269
+ },
270
+ "InboundHTTPSPublicNetworkAclEntry": {
271
+ "Type": "AWS::EC2::NetworkAclEntry",
272
+ "Properties": {
273
+ "NetworkAclId": {
274
+ "Ref": "PublicNetworkAcl"
275
+ },
276
+ "RuleNumber": "101",
277
+ "Protocol": "6",
278
+ "RuleAction": "allow",
279
+ "Egress": "false",
280
+ "CidrBlock": "0.0.0.0/0",
281
+ "PortRange": {
282
+ "From": "443",
283
+ "To": "443"
284
+ }
285
+ },
286
+ "Metadata": {
287
+ "AWS::CloudFormation::Designer": {
288
+ "id": "8b8f955d-4b13-43ad-bd92-88a983aba05e"
289
+ }
290
+ }
291
+ },
292
+ "InboundSSHPublicNetworkAclEntry": {
293
+ "Type": "AWS::EC2::NetworkAclEntry",
294
+ "Properties": {
295
+ "NetworkAclId": {
296
+ "Ref": "PublicNetworkAcl"
297
+ },
298
+ "RuleNumber": "102",
299
+ "Protocol": "6",
300
+ "RuleAction": "allow",
301
+ "Egress": "false",
302
+ "CidrBlock": "0.0.0.0/0",
303
+ "PortRange": {
304
+ "From": "22",
305
+ "To": "22"
306
+ }
307
+ },
308
+ "Metadata": {
309
+ "AWS::CloudFormation::Designer": {
310
+ "id": "c8ec5a7a-62cb-4406-9f2d-0b5a564fd966"
311
+ }
312
+ }
313
+ },
314
+ "InboundEphemeralPublicNetworkAclEntry": {
315
+ "Type": "AWS::EC2::NetworkAclEntry",
316
+ "Properties": {
317
+ "NetworkAclId": {
318
+ "Ref": "PublicNetworkAcl"
319
+ },
320
+ "RuleNumber": "103",
321
+ "Protocol": "6",
322
+ "RuleAction": "allow",
323
+ "Egress": "false",
324
+ "CidrBlock": "0.0.0.0/0",
325
+ "PortRange": {
326
+ "From": "1024",
327
+ "To": "65535"
328
+ }
329
+ },
330
+ "Metadata": {
331
+ "AWS::CloudFormation::Designer": {
332
+ "id": "f22aa599-4f7e-4715-a098-41e10c081523"
333
+ }
334
+ }
335
+ },
336
+ "OutboundPublicNetworkAclEntry": {
337
+ "Type": "AWS::EC2::NetworkAclEntry",
338
+ "Properties": {
339
+ "NetworkAclId": {
340
+ "Ref": "PublicNetworkAcl"
341
+ },
342
+ "RuleNumber": "100",
343
+ "Protocol": "6",
344
+ "RuleAction": "allow",
345
+ "Egress": "true",
346
+ "CidrBlock": "0.0.0.0/0",
347
+ "PortRange": {
348
+ "From": "0",
349
+ "To": "65535"
350
+ }
351
+ },
352
+ "Metadata": {
353
+ "AWS::CloudFormation::Designer": {
354
+ "id": "6a00b44b-c40f-4464-aad5-1d54e3772398"
355
+ }
356
+ }
357
+ },
358
+ "PublicSubnetNetworkAclAssociation1a": {
359
+ "Type": "AWS::EC2::SubnetNetworkAclAssociation",
360
+ "Properties": {
361
+ "SubnetId": {
362
+ "Ref": "PublicSubnet1a"
363
+ },
364
+ "NetworkAclId": {
365
+ "Ref": "PublicNetworkAcl"
366
+ }
367
+ },
368
+ "Metadata": {
369
+ "AWS::CloudFormation::Designer": {
370
+ "id": "de86ddc8-8415-41a5-a905-b1bda5ba3fed"
371
+ }
372
+ }
373
+ }
374
+ },
375
+ "Outputs": {
376
+ "VPCID" : {
377
+ "Value" : { "Ref" : "VPC" },
378
+ "Description" : "VPC ID"
379
+ },
380
+ "SUBNETPUB1" : {
381
+ "Value" : { "Ref" : "PublicSubnet1a" },
382
+ "Description" : "PublicSubnet1"
383
+ },
384
+ "SUBNETRRI1" : {
385
+ "Value" : { "Ref" : "PrivateSubnet1c" },
386
+ "Description" : "PrivateSubnet1"
387
+ }
388
+ },
389
+ "Metadata": {
390
+ "AWS::CloudFormation::Designer": {
391
+ "7354dd3a-e180-418e-8cd2-a9b2ad2a4666": {
392
+ "size": {
393
+ "width": 60,
394
+ "height": 60
395
+ },
396
+ "position": {
397
+ "x": 870,
398
+ "y": 570
399
+ },
400
+ "z": 1,
401
+ "embeds": []
402
+ },
403
+ "36f558fe-7a2b-4a24-9edb-3b9a10d33217": {
404
+ "size": {
405
+ "width": 1120,
406
+ "height": 470
407
+ },
408
+ "position": {
409
+ "x": -350,
410
+ "y": 530
411
+ },
412
+ "z": 1,
413
+ "embeds": [
414
+ "9d9f7c73-1580-4f8e-8463-6e27fb43e766",
415
+ "35457506-b697-467e-925b-61a48305e0da",
416
+ "21cff9ba-e2c6-4d76-80d2-7f10d6b618b0",
417
+ "d17f3169-9687-4907-ac33-04ce215fded7"
418
+ ]
419
+ },
420
+ "9d9f7c73-1580-4f8e-8463-6e27fb43e766": {
421
+ "size": {
422
+ "width": 300,
423
+ "height": 380
424
+ },
425
+ "position": {
426
+ "x": -310,
427
+ "y": 570
428
+ },
429
+ "z": 2,
430
+ "parent": "36f558fe-7a2b-4a24-9edb-3b9a10d33217",
431
+ "embeds": [
432
+ "6a00b44b-c40f-4464-aad5-1d54e3772398",
433
+ "f22aa599-4f7e-4715-a098-41e10c081523",
434
+ "c8ec5a7a-62cb-4406-9f2d-0b5a564fd966",
435
+ "8b8f955d-4b13-43ad-bd92-88a983aba05e",
436
+ "fc400079-4e29-449d-9261-802c07e90664"
437
+ ]
438
+ },
439
+ "6a00b44b-c40f-4464-aad5-1d54e3772398": {
440
+ "size": {
441
+ "width": 60,
442
+ "height": 60
443
+ },
444
+ "position": {
445
+ "x": -250,
446
+ "y": 830
447
+ },
448
+ "z": 3,
449
+ "parent": "9d9f7c73-1580-4f8e-8463-6e27fb43e766",
450
+ "embeds": []
451
+ },
452
+ "f22aa599-4f7e-4715-a098-41e10c081523": {
453
+ "size": {
454
+ "width": 60,
455
+ "height": 60
456
+ },
457
+ "position": {
458
+ "x": -140,
459
+ "y": 790
460
+ },
461
+ "z": 3,
462
+ "parent": "9d9f7c73-1580-4f8e-8463-6e27fb43e766",
463
+ "embeds": []
464
+ },
465
+ "c8ec5a7a-62cb-4406-9f2d-0b5a564fd966": {
466
+ "size": {
467
+ "width": 60,
468
+ "height": 60
469
+ },
470
+ "position": {
471
+ "x": -250,
472
+ "y": 610
473
+ },
474
+ "z": 3,
475
+ "parent": "9d9f7c73-1580-4f8e-8463-6e27fb43e766",
476
+ "embeds": []
477
+ },
478
+ "8b8f955d-4b13-43ad-bd92-88a983aba05e": {
479
+ "size": {
480
+ "width": 60,
481
+ "height": 60
482
+ },
483
+ "position": {
484
+ "x": -250,
485
+ "y": 720
486
+ },
487
+ "z": 3,
488
+ "parent": "9d9f7c73-1580-4f8e-8463-6e27fb43e766",
489
+ "embeds": []
490
+ },
491
+ "fc400079-4e29-449d-9261-802c07e90664": {
492
+ "size": {
493
+ "width": 60,
494
+ "height": 60
495
+ },
496
+ "position": {
497
+ "x": -140,
498
+ "y": 690
499
+ },
500
+ "z": 3,
501
+ "parent": "9d9f7c73-1580-4f8e-8463-6e27fb43e766",
502
+ "embeds": []
503
+ },
504
+ "35457506-b697-467e-925b-61a48305e0da": {
505
+ "size": {
506
+ "width": 180,
507
+ "height": 330
508
+ },
509
+ "position": {
510
+ "x": 510,
511
+ "y": 580
512
+ },
513
+ "z": 2,
514
+ "parent": "36f558fe-7a2b-4a24-9edb-3b9a10d33217",
515
+ "embeds": [
516
+ "3b3697f1-2874-4073-847a-c2814e9c4336"
517
+ ]
518
+ },
519
+ "92a83719-48bf-4e04-a3cd-0f8b99305053": {
520
+ "source": {
521
+ "id": "7354dd3a-e180-418e-8cd2-a9b2ad2a4666"
522
+ },
523
+ "target": {
524
+ "id": "36f558fe-7a2b-4a24-9edb-3b9a10d33217"
525
+ },
526
+ "z": 1
527
+ },
528
+ "3b3697f1-2874-4073-847a-c2814e9c4336": {
529
+ "size": {
530
+ "width": 60,
531
+ "height": 60
532
+ },
533
+ "position": {
534
+ "x": 560,
535
+ "y": 720
536
+ },
537
+ "z": 3,
538
+ "parent": "35457506-b697-467e-925b-61a48305e0da",
539
+ "embeds": [],
540
+ "references": [
541
+ "7354dd3a-e180-418e-8cd2-a9b2ad2a4666"
542
+ ],
543
+ "dependson": [
544
+ "92a83719-48bf-4e04-a3cd-0f8b99305053"
545
+ ]
546
+ },
547
+ "d17f3169-9687-4907-ac33-04ce215fded7": {
548
+ "size": {
549
+ "width": 290,
550
+ "height": 120
551
+ },
552
+ "position": {
553
+ "x": 90,
554
+ "y": 630
555
+ },
556
+ "z": 2,
557
+ "parent": "36f558fe-7a2b-4a24-9edb-3b9a10d33217",
558
+ "embeds": []
559
+ },
560
+ "de86ddc8-8415-41a5-a905-b1bda5ba3fed": {
561
+ "source": {
562
+ "id": "9d9f7c73-1580-4f8e-8463-6e27fb43e766"
563
+ },
564
+ "target": {
565
+ "id": "d17f3169-9687-4907-ac33-04ce215fded7"
566
+ },
567
+ "z": 2
568
+ },
569
+ "6033dd6a-6b5b-4b0a-9e41-a59a779c5a61": {
570
+ "source": {
571
+ "id": "35457506-b697-467e-925b-61a48305e0da"
572
+ },
573
+ "target": {
574
+ "id": "d17f3169-9687-4907-ac33-04ce215fded7"
575
+ },
576
+ "z": 2
577
+ },
578
+ "21cff9ba-e2c6-4d76-80d2-7f10d6b618b0": {
579
+ "size": {
580
+ "width": 290,
581
+ "height": 100
582
+ },
583
+ "position": {
584
+ "x": 90,
585
+ "y": 790
586
+ },
587
+ "z": 2,
588
+ "parent": "36f558fe-7a2b-4a24-9edb-3b9a10d33217",
589
+ "embeds": []
590
+ },
591
+ "ff1a00b2-0c71-4500-a421-08255279d2f0": {
592
+ "source": {
593
+ "id": "35457506-b697-467e-925b-61a48305e0da"
594
+ },
595
+ "target": {
596
+ "id": "21cff9ba-e2c6-4d76-80d2-7f10d6b618b0"
597
+ },
598
+ "z": 2
599
+ },
600
+ "353e5d2f-7968-4636-a916-b4d1305ad23f": {
601
+ "source": {
602
+ "id": "9d9f7c73-1580-4f8e-8463-6e27fb43e766"
603
+ },
604
+ "target": {
605
+ "id": "21cff9ba-e2c6-4d76-80d2-7f10d6b618b0"
606
+ },
607
+ "z": 2
608
+ }
609
+ }
610
+ }
611
+ }