{
  "Description": "(SO0196) - The AWS CDK template for deployment of the Dynamic Object and Rule Extensions for AWS Network Firewall solution, version: (Version v1.1.2)",
  "Resources": {
    "networkobjectextensionVpcB3285E3D": {
      "Type": "AWS::EC2::VPC",
      "Properties": {
        "CidrBlock": "10.0.0.0/16",
        "EnableDnsHostnames": true,
        "EnableDnsSupport": true,
        "InstanceTenancy": "default",
        "Tags": [
          {
            "Key": "Name",
            "Value": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc"
          },
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc/Resource"
      }
    },
    "networkobjectextensionVpcPrivateSubnetASubnet1SubnetE5FAF545": {
      "Type": "AWS::EC2::Subnet",
      "Properties": {
        "VpcId": {
          "Ref": "networkobjectextensionVpcB3285E3D"
        },
        "AvailabilityZone": {
          "Fn::Select": [
            0,
            {
              "Fn::GetAZs": ""
            }
          ]
        },
        "CidrBlock": "10.0.0.0/24",
        "MapPublicIpOnLaunch": false,
        "Tags": [
          {
            "Key": "aws-cdk:subnet-name",
            "Value": "PrivateSubnetA"
          },
          {
            "Key": "aws-cdk:subnet-type",
            "Value": "Private"
          },
          {
            "Key": "Name",
            "Value": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc/PrivateSubnetASubnet1"
          },
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc/PrivateSubnetASubnet1/Subnet"
      }
    },
    "networkobjectextensionVpcPrivateSubnetASubnet1RouteTableE4C2BEB8": {
      "Type": "AWS::EC2::RouteTable",
      "Properties": {
        "VpcId": {
          "Ref": "networkobjectextensionVpcB3285E3D"
        },
        "Tags": [
          {
            "Key": "Name",
            "Value": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc/PrivateSubnetASubnet1"
          },
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc/PrivateSubnetASubnet1/RouteTable"
      }
    },
    "networkobjectextensionVpcPrivateSubnetASubnet1RouteTableAssociation4919BA17": {
      "Type": "AWS::EC2::SubnetRouteTableAssociation",
      "Properties": {
        "RouteTableId": {
          "Ref": "networkobjectextensionVpcPrivateSubnetASubnet1RouteTableE4C2BEB8"
        },
        "SubnetId": {
          "Ref": "networkobjectextensionVpcPrivateSubnetASubnet1SubnetE5FAF545"
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc/PrivateSubnetASubnet1/RouteTableAssociation"
      }
    },
    "networkobjectextensionVpcPrivateSubnetASubnet1DefaultRouteD53AF693": {
      "Type": "AWS::EC2::Route",
      "Properties": {
        "RouteTableId": {
          "Ref": "networkobjectextensionVpcPrivateSubnetASubnet1RouteTableE4C2BEB8"
        },
        "DestinationCidrBlock": "0.0.0.0/0",
        "NatGatewayId": {
          "Ref": "networkobjectextensionVpcPublicSubnetASubnet1NATGateway80602F56"
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc/PrivateSubnetASubnet1/DefaultRoute"
      }
    },
    "networkobjectextensionVpcPrivateSubnetASubnet2SubnetCEA49EBF": {
      "Type": "AWS::EC2::Subnet",
      "Properties": {
        "VpcId": {
          "Ref": "networkobjectextensionVpcB3285E3D"
        },
        "AvailabilityZone": {
          "Fn::Select": [
            1,
            {
              "Fn::GetAZs": ""
            }
          ]
        },
        "CidrBlock": "10.0.1.0/24",
        "MapPublicIpOnLaunch": false,
        "Tags": [
          {
            "Key": "aws-cdk:subnet-name",
            "Value": "PrivateSubnetA"
          },
          {
            "Key": "aws-cdk:subnet-type",
            "Value": "Private"
          },
          {
            "Key": "Name",
            "Value": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc/PrivateSubnetASubnet2"
          },
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc/PrivateSubnetASubnet2/Subnet"
      }
    },
    "networkobjectextensionVpcPrivateSubnetASubnet2RouteTable3DBCAB68": {
      "Type": "AWS::EC2::RouteTable",
      "Properties": {
        "VpcId": {
          "Ref": "networkobjectextensionVpcB3285E3D"
        },
        "Tags": [
          {
            "Key": "Name",
            "Value": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc/PrivateSubnetASubnet2"
          },
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc/PrivateSubnetASubnet2/RouteTable"
      }
    },
    "networkobjectextensionVpcPrivateSubnetASubnet2RouteTableAssociationDC02E6FE": {
      "Type": "AWS::EC2::SubnetRouteTableAssociation",
      "Properties": {
        "RouteTableId": {
          "Ref": "networkobjectextensionVpcPrivateSubnetASubnet2RouteTable3DBCAB68"
        },
        "SubnetId": {
          "Ref": "networkobjectextensionVpcPrivateSubnetASubnet2SubnetCEA49EBF"
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc/PrivateSubnetASubnet2/RouteTableAssociation"
      }
    },
    "networkobjectextensionVpcPrivateSubnetASubnet2DefaultRoute68DC2904": {
      "Type": "AWS::EC2::Route",
      "Properties": {
        "RouteTableId": {
          "Ref": "networkobjectextensionVpcPrivateSubnetASubnet2RouteTable3DBCAB68"
        },
        "DestinationCidrBlock": "0.0.0.0/0",
        "NatGatewayId": {
          "Ref": "networkobjectextensionVpcPublicSubnetASubnet2NATGatewayA0650273"
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc/PrivateSubnetASubnet2/DefaultRoute"
      }
    },
    "networkobjectextensionVpcPublicSubnetASubnet1Subnet00D1AE4B": {
      "Type": "AWS::EC2::Subnet",
      "Properties": {
        "VpcId": {
          "Ref": "networkobjectextensionVpcB3285E3D"
        },
        "AvailabilityZone": {
          "Fn::Select": [
            0,
            {
              "Fn::GetAZs": ""
            }
          ]
        },
        "CidrBlock": "10.0.2.0/24",
        "MapPublicIpOnLaunch": true,
        "Tags": [
          {
            "Key": "aws-cdk:subnet-name",
            "Value": "PublicSubnetA"
          },
          {
            "Key": "aws-cdk:subnet-type",
            "Value": "Public"
          },
          {
            "Key": "Name",
            "Value": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc/PublicSubnetASubnet1"
          },
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc/PublicSubnetASubnet1/Subnet"
      }
    },
    "networkobjectextensionVpcPublicSubnetASubnet1RouteTable57E10886": {
      "Type": "AWS::EC2::RouteTable",
      "Properties": {
        "VpcId": {
          "Ref": "networkobjectextensionVpcB3285E3D"
        },
        "Tags": [
          {
            "Key": "Name",
            "Value": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc/PublicSubnetASubnet1"
          },
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc/PublicSubnetASubnet1/RouteTable"
      }
    },
    "networkobjectextensionVpcPublicSubnetASubnet1RouteTableAssociationDF1EC0D0": {
      "Type": "AWS::EC2::SubnetRouteTableAssociation",
      "Properties": {
        "RouteTableId": {
          "Ref": "networkobjectextensionVpcPublicSubnetASubnet1RouteTable57E10886"
        },
        "SubnetId": {
          "Ref": "networkobjectextensionVpcPublicSubnetASubnet1Subnet00D1AE4B"
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc/PublicSubnetASubnet1/RouteTableAssociation"
      }
    },
    "networkobjectextensionVpcPublicSubnetASubnet1DefaultRoute0EF8E9D7": {
      "Type": "AWS::EC2::Route",
      "Properties": {
        "RouteTableId": {
          "Ref": "networkobjectextensionVpcPublicSubnetASubnet1RouteTable57E10886"
        },
        "DestinationCidrBlock": "0.0.0.0/0",
        "GatewayId": {
          "Ref": "networkobjectextensionVpcIGW567B3100"
        }
      },
      "DependsOn": [
        "networkobjectextensionVpcVPCGW62BC8C63"
      ],
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc/PublicSubnetASubnet1/DefaultRoute"
      }
    },
    "networkobjectextensionVpcPublicSubnetASubnet1EIP359C836E": {
      "Type": "AWS::EC2::EIP",
      "Properties": {
        "Domain": "vpc",
        "Tags": [
          {
            "Key": "Name",
            "Value": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc/PublicSubnetASubnet1"
          },
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc/PublicSubnetASubnet1/EIP"
      }
    },
    "networkobjectextensionVpcPublicSubnetASubnet1NATGateway80602F56": {
      "Type": "AWS::EC2::NatGateway",
      "Properties": {
        "SubnetId": {
          "Ref": "networkobjectextensionVpcPublicSubnetASubnet1Subnet00D1AE4B"
        },
        "AllocationId": {
          "Fn::GetAtt": [
            "networkobjectextensionVpcPublicSubnetASubnet1EIP359C836E",
            "AllocationId"
          ]
        },
        "Tags": [
          {
            "Key": "Name",
            "Value": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc/PublicSubnetASubnet1"
          },
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "DependsOn": [
        "networkobjectextensionVpcPublicSubnetASubnet1DefaultRoute0EF8E9D7",
        "networkobjectextensionVpcPublicSubnetASubnet1RouteTableAssociationDF1EC0D0"
      ],
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc/PublicSubnetASubnet1/NATGateway"
      }
    },
    "networkobjectextensionVpcPublicSubnetASubnet2Subnet08AB9279": {
      "Type": "AWS::EC2::Subnet",
      "Properties": {
        "VpcId": {
          "Ref": "networkobjectextensionVpcB3285E3D"
        },
        "AvailabilityZone": {
          "Fn::Select": [
            1,
            {
              "Fn::GetAZs": ""
            }
          ]
        },
        "CidrBlock": "10.0.3.0/24",
        "MapPublicIpOnLaunch": true,
        "Tags": [
          {
            "Key": "aws-cdk:subnet-name",
            "Value": "PublicSubnetA"
          },
          {
            "Key": "aws-cdk:subnet-type",
            "Value": "Public"
          },
          {
            "Key": "Name",
            "Value": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc/PublicSubnetASubnet2"
          },
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc/PublicSubnetASubnet2/Subnet"
      }
    },
    "networkobjectextensionVpcPublicSubnetASubnet2RouteTable35D8F3B2": {
      "Type": "AWS::EC2::RouteTable",
      "Properties": {
        "VpcId": {
          "Ref": "networkobjectextensionVpcB3285E3D"
        },
        "Tags": [
          {
            "Key": "Name",
            "Value": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc/PublicSubnetASubnet2"
          },
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc/PublicSubnetASubnet2/RouteTable"
      }
    },
    "networkobjectextensionVpcPublicSubnetASubnet2RouteTableAssociationFECD1C7A": {
      "Type": "AWS::EC2::SubnetRouteTableAssociation",
      "Properties": {
        "RouteTableId": {
          "Ref": "networkobjectextensionVpcPublicSubnetASubnet2RouteTable35D8F3B2"
        },
        "SubnetId": {
          "Ref": "networkobjectextensionVpcPublicSubnetASubnet2Subnet08AB9279"
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc/PublicSubnetASubnet2/RouteTableAssociation"
      }
    },
    "networkobjectextensionVpcPublicSubnetASubnet2DefaultRouteE422D12B": {
      "Type": "AWS::EC2::Route",
      "Properties": {
        "RouteTableId": {
          "Ref": "networkobjectextensionVpcPublicSubnetASubnet2RouteTable35D8F3B2"
        },
        "DestinationCidrBlock": "0.0.0.0/0",
        "GatewayId": {
          "Ref": "networkobjectextensionVpcIGW567B3100"
        }
      },
      "DependsOn": [
        "networkobjectextensionVpcVPCGW62BC8C63"
      ],
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc/PublicSubnetASubnet2/DefaultRoute"
      }
    },
    "networkobjectextensionVpcPublicSubnetASubnet2EIPED00FB95": {
      "Type": "AWS::EC2::EIP",
      "Properties": {
        "Domain": "vpc",
        "Tags": [
          {
            "Key": "Name",
            "Value": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc/PublicSubnetASubnet2"
          },
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc/PublicSubnetASubnet2/EIP"
      }
    },
    "networkobjectextensionVpcPublicSubnetASubnet2NATGatewayA0650273": {
      "Type": "AWS::EC2::NatGateway",
      "Properties": {
        "SubnetId": {
          "Ref": "networkobjectextensionVpcPublicSubnetASubnet2Subnet08AB9279"
        },
        "AllocationId": {
          "Fn::GetAtt": [
            "networkobjectextensionVpcPublicSubnetASubnet2EIPED00FB95",
            "AllocationId"
          ]
        },
        "Tags": [
          {
            "Key": "Name",
            "Value": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc/PublicSubnetASubnet2"
          },
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "DependsOn": [
        "networkobjectextensionVpcPublicSubnetASubnet2DefaultRouteE422D12B",
        "networkobjectextensionVpcPublicSubnetASubnet2RouteTableAssociationFECD1C7A"
      ],
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc/PublicSubnetASubnet2/NATGateway"
      }
    },
    "networkobjectextensionVpcIGW567B3100": {
      "Type": "AWS::EC2::InternetGateway",
      "Properties": {
        "Tags": [
          {
            "Key": "Name",
            "Value": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc"
          },
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc/IGW"
      }
    },
    "networkobjectextensionVpcVPCGW62BC8C63": {
      "Type": "AWS::EC2::VPCGatewayAttachment",
      "Properties": {
        "VpcId": {
          "Ref": "networkobjectextensionVpcB3285E3D"
        },
        "InternetGatewayId": {
          "Ref": "networkobjectextensionVpcIGW567B3100"
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc/VPCGW"
      }
    },
    "networkobjectextensionVpcS38F8D4174": {
      "Type": "AWS::EC2::VPCEndpoint",
      "Properties": {
        "ServiceName": {
          "Fn::Join": [
            "",
            [
              "com.amazonaws.",
              {
                "Ref": "AWS::Region"
              },
              ".s3"
            ]
          ]
        },
        "VpcId": {
          "Ref": "networkobjectextensionVpcB3285E3D"
        },
        "RouteTableIds": [
          {
            "Ref": "networkobjectextensionVpcPrivateSubnetASubnet1RouteTableE4C2BEB8"
          },
          {
            "Ref": "networkobjectextensionVpcPrivateSubnetASubnet2RouteTable3DBCAB68"
          },
          {
            "Ref": "networkobjectextensionVpcPublicSubnetASubnet1RouteTable57E10886"
          },
          {
            "Ref": "networkobjectextensionVpcPublicSubnetASubnet2RouteTable35D8F3B2"
          }
        ],
        "VpcEndpointType": "Gateway"
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc/S3/Resource"
      }
    },
    "networkobjectextensionVpcFlowLogsToCloudWatchFlowLog97D245A5": {
      "Type": "AWS::EC2::FlowLog",
      "Properties": {
        "ResourceId": {
          "Ref": "networkobjectextensionVpcB3285E3D"
        },
        "ResourceType": "VPC",
        "DeliverLogsPermissionArn": {
          "Fn::GetAtt": [
            "networkVpcFlowLogsRole1E2F6B20",
            "Arn"
          ]
        },
        "LogDestinationType": "cloud-watch-logs",
        "LogGroupName": {
          "Ref": "networkVpcFlowLogs792D55D1"
        },
        "Tags": [
          {
            "Key": "Name",
            "Value": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc"
          },
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ],
        "TrafficType": "ALL"
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/object-extension-Vpc/FlowLogsToCloudWatch/FlowLog"
      }
    },
    "networkVpcFlowLogsKey2419E0F7": {
      "Type": "AWS::KMS::Key",
      "Properties": {
        "KeyPolicy": {
          "Statement": [
            {
              "Action": "kms:*",
              "Effect": "Allow",
              "Principal": {
                "AWS": {
                  "Fn::Join": [
                    "",
                    [
                      "arn:",
                      {
                        "Ref": "AWS::Partition"
                      },
                      ":iam::",
                      {
                        "Ref": "AWS::AccountId"
                      },
                      ":root"
                    ]
                  ]
                }
              },
              "Resource": "*"
            },
            {
              "Action": [
                "kms:ReEncrypt",
                "kms:GenerateDataKey",
                "kms:Encrypt",
                "kms:DescribeKey",
                "kms:Decrypt"
              ],
              "Effect": "Allow",
              "Principal": {
                "Service": {
                  "Fn::Join": [
                    "",
                    [
                      "logs.",
                      {
                        "Ref": "AWS::Region"
                      },
                      ".amazonaws.com"
                    ]
                  ]
                }
              },
              "Resource": "*",
              "Sid": "Allow VPC Flow Logs to use the key"
            }
          ],
          "Version": "2012-10-17"
        },
        "EnableKeyRotation": true,
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/VpcFlowLogsKey/Resource"
      }
    },
    "networkVpcFlowLogs792D55D1": {
      "Type": "AWS::Logs::LogGroup",
      "Properties": {
        "KmsKeyId": {
          "Fn::GetAtt": [
            "networkVpcFlowLogsKey2419E0F7",
            "Arn"
          ]
        },
        "RetentionInDays": 3653,
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain",
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/VpcFlowLogs/Resource"
      }
    },
    "networkVpcFlowLogsRole1E2F6B20": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "vpc-flow-logs.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/VpcFlowLogsRole/Resource"
      }
    },
    "networkVpcFlowLogsRoleDefaultPolicyA61F49D2": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": [
                "logs:CreateLogStream",
                "logs:PutLogEvents",
                "logs:DescribeLogStreams"
              ],
              "Effect": "Allow",
              "Resource": {
                "Fn::GetAtt": [
                  "networkVpcFlowLogs792D55D1",
                  "Arn"
                ]
              }
            },
            {
              "Action": "iam:PassRole",
              "Effect": "Allow",
              "Resource": {
                "Fn::GetAtt": [
                  "networkVpcFlowLogsRole1E2F6B20",
                  "Arn"
                ]
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "networkVpcFlowLogsRoleDefaultPolicyA61F49D2",
        "Roles": [
          {
            "Ref": "networkVpcFlowLogsRole1E2F6B20"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/VpcFlowLogsRole/DefaultPolicy/Resource"
      }
    },
    "networkVpcFlowLogsPolicy4FE3A9F4": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents",
                "logs:DescribeLogGroups",
                "logs:DescribeLogStreams"
              ],
              "Effect": "Allow",
              "Resource": {
                "Fn::GetAtt": [
                  "networkVpcFlowLogs792D55D1",
                  "Arn"
                ]
              }
            },
            {
              "Action": [
                "kms:Encrypt*",
                "kms:Decrypt*",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*",
                "kms:Describe*"
              ],
              "Effect": "Allow",
              "Resource": {
                "Fn::GetAtt": [
                  "networkVpcFlowLogsKey2419E0F7",
                  "Arn"
                ]
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "networkVpcFlowLogsPolicy4FE3A9F4",
        "Roles": [
          {
            "Ref": "networkVpcFlowLogsRole1E2F6B20"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/VpcFlowLogsPolicy/Resource"
      }
    },
    "networks3vpcendpointsg470E38D1": {
      "Type": "AWS::EC2::SecurityGroup",
      "Properties": {
        "GroupDescription": "FirewallObjectExtensionSolutionStack/network/s3-vpc-endpoint-sg",
        "SecurityGroupEgress": [
          {
            "CidrIp": {
              "Fn::GetAtt": [
                "networkobjectextensionVpcB3285E3D",
                "CidrBlock"
              ]
            },
            "Description": {
              "Fn::Join": [
                "",
                [
                  "from ",
                  {
                    "Fn::GetAtt": [
                      "networkobjectextensionVpcB3285E3D",
                      "CidrBlock"
                    ]
                  },
                  ":443"
                ]
              ]
            },
            "FromPort": 443,
            "IpProtocol": "tcp",
            "ToPort": 443
          }
        ],
        "SecurityGroupIngress": [
          {
            "CidrIp": {
              "Fn::GetAtt": [
                "networkobjectextensionVpcB3285E3D",
                "CidrBlock"
              ]
            },
            "Description": {
              "Fn::Join": [
                "",
                [
                  "from ",
                  {
                    "Fn::GetAtt": [
                      "networkobjectextensionVpcB3285E3D",
                      "CidrBlock"
                    ]
                  },
                  ":443"
                ]
              ]
            },
            "FromPort": 443,
            "IpProtocol": "tcp",
            "ToPort": 443
          }
        ],
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ],
        "VpcId": {
          "Ref": "networkobjectextensionVpcB3285E3D"
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/s3-vpc-endpoint-sg/Resource"
      }
    },
    "networkvpcEndpointDynamoDBCAD57968": {
      "Type": "AWS::EC2::VPCEndpoint",
      "Properties": {
        "ServiceName": {
          "Fn::Join": [
            "",
            [
              "com.amazonaws.",
              {
                "Ref": "AWS::Region"
              },
              ".dynamodb"
            ]
          ]
        },
        "VpcId": {
          "Ref": "networkobjectextensionVpcB3285E3D"
        },
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "dynamodb:*",
              "Condition": {
                "ArnEquals": {
                  "aws:PrincipalArn": {
                    "Fn::GetAtt": [
                      "autoconfigapiExecutionRole3A140D76",
                      "Arn"
                    ]
                  }
                }
              },
              "Effect": "Allow",
              "Principal": {
                "AWS": "*"
              },
              "Resource": [
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "DataSourcesAuditsTable1F631F88",
                          "Arn"
                        ]
                      },
                      "/index/*"
                    ]
                  ]
                },
                {
                  "Fn::GetAtt": [
                    "DataSourcesAuditsTable1F631F88",
                    "Arn"
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "DataSourcesObjectsTable3C1B7D58",
                          "Arn"
                        ]
                      },
                      "/index/*"
                    ]
                  ]
                },
                {
                  "Fn::GetAtt": [
                    "DataSourcesObjectsTable3C1B7D58",
                    "Arn"
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "DataSourcesRuleBundlesTableEC40370C",
                          "Arn"
                        ]
                      },
                      "/index/*"
                    ]
                  ]
                },
                {
                  "Fn::GetAtt": [
                    "DataSourcesRuleBundlesTableEC40370C",
                    "Arn"
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "DataSourcesRulesTable1F07B779",
                          "Arn"
                        ]
                      },
                      "/index/*"
                    ]
                  ]
                },
                {
                  "Fn::GetAtt": [
                    "DataSourcesRulesTable1F07B779",
                    "Arn"
                  ]
                }
              ]
            },
            {
              "Action": "dynamodb:*",
              "Condition": {
                "ArnEquals": {
                  "aws:PrincipalArn": {
                    "Fn::GetAtt": [
                      "autoconfigscheduleFunctionExecutionRole88B49F22",
                      "Arn"
                    ]
                  }
                }
              },
              "Effect": "Allow",
              "Principal": {
                "AWS": "*"
              },
              "Resource": [
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "DataSourcesAuditsTable1F631F88",
                          "Arn"
                        ]
                      },
                      "/index/*"
                    ]
                  ]
                },
                {
                  "Fn::GetAtt": [
                    "DataSourcesAuditsTable1F631F88",
                    "Arn"
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "DataSourcesObjectsTable3C1B7D58",
                          "Arn"
                        ]
                      },
                      "/index/*"
                    ]
                  ]
                },
                {
                  "Fn::GetAtt": [
                    "DataSourcesObjectsTable3C1B7D58",
                    "Arn"
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "DataSourcesRuleBundlesTableEC40370C",
                          "Arn"
                        ]
                      },
                      "/index/*"
                    ]
                  ]
                },
                {
                  "Fn::GetAtt": [
                    "DataSourcesRuleBundlesTableEC40370C",
                    "Arn"
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "DataSourcesRulesTable1F07B779",
                          "Arn"
                        ]
                      },
                      "/index/*"
                    ]
                  ]
                },
                {
                  "Fn::GetAtt": [
                    "DataSourcesRulesTable1F07B779",
                    "Arn"
                  ]
                }
              ]
            },
            {
              "Action": "dynamodb:*",
              "Condition": {
                "ArnEquals": {
                  "aws:PrincipalArn": {
                    "Fn::GetAtt": [
                      "autoconfigExecutionRoleFB25D9EC",
                      "Arn"
                    ]
                  }
                }
              },
              "Effect": "Allow",
              "Principal": {
                "AWS": "*"
              },
              "Resource": [
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "DataSourcesAuditsTable1F631F88",
                          "Arn"
                        ]
                      },
                      "/index/*"
                    ]
                  ]
                },
                {
                  "Fn::GetAtt": [
                    "DataSourcesAuditsTable1F631F88",
                    "Arn"
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "DataSourcesObjectsTable3C1B7D58",
                          "Arn"
                        ]
                      },
                      "/index/*"
                    ]
                  ]
                },
                {
                  "Fn::GetAtt": [
                    "DataSourcesObjectsTable3C1B7D58",
                    "Arn"
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "DataSourcesRuleBundlesTableEC40370C",
                          "Arn"
                        ]
                      },
                      "/index/*"
                    ]
                  ]
                },
                {
                  "Fn::GetAtt": [
                    "DataSourcesRuleBundlesTableEC40370C",
                    "Arn"
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "DataSourcesRulesTable1F07B779",
                          "Arn"
                        ]
                      },
                      "/index/*"
                    ]
                  ]
                },
                {
                  "Fn::GetAtt": [
                    "DataSourcesRulesTable1F07B779",
                    "Arn"
                  ]
                }
              ]
            }
          ],
          "Version": "2012-10-17"
        },
        "RouteTableIds": [
          {
            "Ref": "networkobjectextensionVpcPrivateSubnetASubnet1RouteTableE4C2BEB8"
          },
          {
            "Ref": "networkobjectextensionVpcPrivateSubnetASubnet2RouteTable3DBCAB68"
          }
        ],
        "VpcEndpointType": "Gateway"
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/vpcEndpointDynamoDB/Resource"
      }
    },
    "networkvpcEndpointEC2SecurityGroup2B2FBDFE": {
      "Type": "AWS::EC2::SecurityGroup",
      "Properties": {
        "GroupDescription": "FirewallObjectExtensionSolutionStack/network/vpcEndpointEC2/SecurityGroup",
        "SecurityGroupEgress": [
          {
            "CidrIp": "0.0.0.0/0",
            "Description": "Allow all outbound traffic by default",
            "IpProtocol": "-1"
          }
        ],
        "SecurityGroupIngress": [
          {
            "CidrIp": {
              "Fn::GetAtt": [
                "networkobjectextensionVpcB3285E3D",
                "CidrBlock"
              ]
            },
            "Description": {
              "Fn::Join": [
                "",
                [
                  "from ",
                  {
                    "Fn::GetAtt": [
                      "networkobjectextensionVpcB3285E3D",
                      "CidrBlock"
                    ]
                  },
                  ":443"
                ]
              ]
            },
            "FromPort": 443,
            "IpProtocol": "tcp",
            "ToPort": 443
          }
        ],
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ],
        "VpcId": {
          "Ref": "networkobjectextensionVpcB3285E3D"
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/vpcEndpointEC2/SecurityGroup/Resource"
      }
    },
    "networkvpcEndpointEC20570E7B3": {
      "Type": "AWS::EC2::VPCEndpoint",
      "Properties": {
        "ServiceName": {
          "Fn::Join": [
            "",
            [
              "com.amazonaws.",
              {
                "Ref": "AWS::Region"
              },
              ".ec2"
            ]
          ]
        },
        "VpcId": {
          "Ref": "networkobjectextensionVpcB3285E3D"
        },
        "PrivateDnsEnabled": true,
        "SecurityGroupIds": [
          {
            "Fn::GetAtt": [
              "networkvpcEndpointEC2SecurityGroup2B2FBDFE",
              "GroupId"
            ]
          }
        ],
        "SubnetIds": [
          {
            "Ref": "networkobjectextensionVpcPrivateSubnetASubnet1SubnetE5FAF545"
          },
          {
            "Ref": "networkobjectextensionVpcPrivateSubnetASubnet2SubnetCEA49EBF"
          }
        ],
        "VpcEndpointType": "Interface"
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/vpcEndpointEC2/Resource"
      }
    },
    "networkvpcEndpointEC2MESSAGESSecurityGroup3E83DAD4": {
      "Type": "AWS::EC2::SecurityGroup",
      "Properties": {
        "GroupDescription": "FirewallObjectExtensionSolutionStack/network/vpcEndpointEC2MESSAGES/SecurityGroup",
        "SecurityGroupEgress": [
          {
            "CidrIp": "0.0.0.0/0",
            "Description": "Allow all outbound traffic by default",
            "IpProtocol": "-1"
          }
        ],
        "SecurityGroupIngress": [
          {
            "CidrIp": {
              "Fn::GetAtt": [
                "networkobjectextensionVpcB3285E3D",
                "CidrBlock"
              ]
            },
            "Description": {
              "Fn::Join": [
                "",
                [
                  "from ",
                  {
                    "Fn::GetAtt": [
                      "networkobjectextensionVpcB3285E3D",
                      "CidrBlock"
                    ]
                  },
                  ":443"
                ]
              ]
            },
            "FromPort": 443,
            "IpProtocol": "tcp",
            "ToPort": 443
          }
        ],
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ],
        "VpcId": {
          "Ref": "networkobjectextensionVpcB3285E3D"
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/vpcEndpointEC2MESSAGES/SecurityGroup/Resource"
      }
    },
    "networkvpcEndpointEC2MESSAGES4A87EE41": {
      "Type": "AWS::EC2::VPCEndpoint",
      "Properties": {
        "ServiceName": {
          "Fn::Join": [
            "",
            [
              "com.amazonaws.",
              {
                "Ref": "AWS::Region"
              },
              ".ec2messages"
            ]
          ]
        },
        "VpcId": {
          "Ref": "networkobjectextensionVpcB3285E3D"
        },
        "PrivateDnsEnabled": true,
        "SecurityGroupIds": [
          {
            "Fn::GetAtt": [
              "networkvpcEndpointEC2MESSAGESSecurityGroup3E83DAD4",
              "GroupId"
            ]
          }
        ],
        "SubnetIds": [
          {
            "Ref": "networkobjectextensionVpcPrivateSubnetASubnet1SubnetE5FAF545"
          },
          {
            "Ref": "networkobjectextensionVpcPrivateSubnetASubnet2SubnetCEA49EBF"
          }
        ],
        "VpcEndpointType": "Interface"
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/vpcEndpointEC2MESSAGES/Resource"
      }
    },
    "networkvpcEndpointLambdaSecurityGroupAB985BEA": {
      "Type": "AWS::EC2::SecurityGroup",
      "Properties": {
        "GroupDescription": "FirewallObjectExtensionSolutionStack/network/vpcEndpointLambda/SecurityGroup",
        "SecurityGroupEgress": [
          {
            "CidrIp": "0.0.0.0/0",
            "Description": "Allow all outbound traffic by default",
            "IpProtocol": "-1"
          }
        ],
        "SecurityGroupIngress": [
          {
            "CidrIp": {
              "Fn::GetAtt": [
                "networkobjectextensionVpcB3285E3D",
                "CidrBlock"
              ]
            },
            "Description": {
              "Fn::Join": [
                "",
                [
                  "from ",
                  {
                    "Fn::GetAtt": [
                      "networkobjectextensionVpcB3285E3D",
                      "CidrBlock"
                    ]
                  },
                  ":443"
                ]
              ]
            },
            "FromPort": 443,
            "IpProtocol": "tcp",
            "ToPort": 443
          }
        ],
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ],
        "VpcId": {
          "Ref": "networkobjectextensionVpcB3285E3D"
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/vpcEndpointLambda/SecurityGroup/Resource"
      }
    },
    "networkvpcEndpointLambda3825BE15": {
      "Type": "AWS::EC2::VPCEndpoint",
      "Properties": {
        "ServiceName": {
          "Fn::Join": [
            "",
            [
              "com.amazonaws.",
              {
                "Ref": "AWS::Region"
              },
              ".lambda"
            ]
          ]
        },
        "VpcId": {
          "Ref": "networkobjectextensionVpcB3285E3D"
        },
        "PrivateDnsEnabled": true,
        "SecurityGroupIds": [
          {
            "Fn::GetAtt": [
              "networkvpcEndpointLambdaSecurityGroupAB985BEA",
              "GroupId"
            ]
          }
        ],
        "SubnetIds": [
          {
            "Ref": "networkobjectextensionVpcPrivateSubnetASubnet1SubnetE5FAF545"
          },
          {
            "Ref": "networkobjectextensionVpcPrivateSubnetASubnet2SubnetCEA49EBF"
          }
        ],
        "VpcEndpointType": "Interface"
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/vpcEndpointLambda/Resource"
      }
    },
    "networkvpcEndpointSNSSecurityGroup5F2F1466": {
      "Type": "AWS::EC2::SecurityGroup",
      "Properties": {
        "GroupDescription": "FirewallObjectExtensionSolutionStack/network/vpcEndpointSNS/SecurityGroup",
        "SecurityGroupEgress": [
          {
            "CidrIp": "0.0.0.0/0",
            "Description": "Allow all outbound traffic by default",
            "IpProtocol": "-1"
          }
        ],
        "SecurityGroupIngress": [
          {
            "CidrIp": {
              "Fn::GetAtt": [
                "networkobjectextensionVpcB3285E3D",
                "CidrBlock"
              ]
            },
            "Description": {
              "Fn::Join": [
                "",
                [
                  "from ",
                  {
                    "Fn::GetAtt": [
                      "networkobjectextensionVpcB3285E3D",
                      "CidrBlock"
                    ]
                  },
                  ":443"
                ]
              ]
            },
            "FromPort": 443,
            "IpProtocol": "tcp",
            "ToPort": 443
          }
        ],
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ],
        "VpcId": {
          "Ref": "networkobjectextensionVpcB3285E3D"
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/vpcEndpointSNS/SecurityGroup/Resource"
      }
    },
    "networkvpcEndpointSNSC3189655": {
      "Type": "AWS::EC2::VPCEndpoint",
      "Properties": {
        "ServiceName": {
          "Fn::Join": [
            "",
            [
              "com.amazonaws.",
              {
                "Ref": "AWS::Region"
              },
              ".sns"
            ]
          ]
        },
        "VpcId": {
          "Ref": "networkobjectextensionVpcB3285E3D"
        },
        "PrivateDnsEnabled": true,
        "SecurityGroupIds": [
          {
            "Fn::GetAtt": [
              "networkvpcEndpointSNSSecurityGroup5F2F1466",
              "GroupId"
            ]
          }
        ],
        "SubnetIds": [
          {
            "Ref": "networkobjectextensionVpcPrivateSubnetASubnet1SubnetE5FAF545"
          },
          {
            "Ref": "networkobjectextensionVpcPrivateSubnetASubnet2SubnetCEA49EBF"
          }
        ],
        "VpcEndpointType": "Interface"
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/vpcEndpointSNS/Resource"
      }
    },
    "networkvpcEndpointKMSSecurityGroup1BA76D20": {
      "Type": "AWS::EC2::SecurityGroup",
      "Properties": {
        "GroupDescription": "FirewallObjectExtensionSolutionStack/network/vpcEndpointKMS/SecurityGroup",
        "SecurityGroupEgress": [
          {
            "CidrIp": "0.0.0.0/0",
            "Description": "Allow all outbound traffic by default",
            "IpProtocol": "-1"
          }
        ],
        "SecurityGroupIngress": [
          {
            "CidrIp": {
              "Fn::GetAtt": [
                "networkobjectextensionVpcB3285E3D",
                "CidrBlock"
              ]
            },
            "Description": {
              "Fn::Join": [
                "",
                [
                  "from ",
                  {
                    "Fn::GetAtt": [
                      "networkobjectextensionVpcB3285E3D",
                      "CidrBlock"
                    ]
                  },
                  ":443"
                ]
              ]
            },
            "FromPort": 443,
            "IpProtocol": "tcp",
            "ToPort": 443
          }
        ],
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ],
        "VpcId": {
          "Ref": "networkobjectextensionVpcB3285E3D"
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/vpcEndpointKMS/SecurityGroup/Resource"
      }
    },
    "networkvpcEndpointKMSB826187B": {
      "Type": "AWS::EC2::VPCEndpoint",
      "Properties": {
        "ServiceName": {
          "Fn::Join": [
            "",
            [
              "com.amazonaws.",
              {
                "Ref": "AWS::Region"
              },
              ".kms"
            ]
          ]
        },
        "VpcId": {
          "Ref": "networkobjectextensionVpcB3285E3D"
        },
        "PrivateDnsEnabled": true,
        "SecurityGroupIds": [
          {
            "Fn::GetAtt": [
              "networkvpcEndpointKMSSecurityGroup1BA76D20",
              "GroupId"
            ]
          }
        ],
        "SubnetIds": [
          {
            "Ref": "networkobjectextensionVpcPrivateSubnetASubnet1SubnetE5FAF545"
          },
          {
            "Ref": "networkobjectextensionVpcPrivateSubnetASubnet2SubnetCEA49EBF"
          }
        ],
        "VpcEndpointType": "Interface"
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/vpcEndpointKMS/Resource"
      }
    },
    "networkvpcEndpointCloudWatchLogsSecurityGroup16037CE5": {
      "Type": "AWS::EC2::SecurityGroup",
      "Properties": {
        "GroupDescription": "FirewallObjectExtensionSolutionStack/network/vpcEndpointCloudWatchLogs/SecurityGroup",
        "SecurityGroupEgress": [
          {
            "CidrIp": "0.0.0.0/0",
            "Description": "Allow all outbound traffic by default",
            "IpProtocol": "-1"
          }
        ],
        "SecurityGroupIngress": [
          {
            "CidrIp": {
              "Fn::GetAtt": [
                "networkobjectextensionVpcB3285E3D",
                "CidrBlock"
              ]
            },
            "Description": {
              "Fn::Join": [
                "",
                [
                  "from ",
                  {
                    "Fn::GetAtt": [
                      "networkobjectextensionVpcB3285E3D",
                      "CidrBlock"
                    ]
                  },
                  ":443"
                ]
              ]
            },
            "FromPort": 443,
            "IpProtocol": "tcp",
            "ToPort": 443
          }
        ],
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ],
        "VpcId": {
          "Ref": "networkobjectextensionVpcB3285E3D"
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/vpcEndpointCloudWatchLogs/SecurityGroup/Resource"
      }
    },
    "networkvpcEndpointCloudWatchLogs8028B180": {
      "Type": "AWS::EC2::VPCEndpoint",
      "Properties": {
        "ServiceName": {
          "Fn::Join": [
            "",
            [
              "com.amazonaws.",
              {
                "Ref": "AWS::Region"
              },
              ".logs"
            ]
          ]
        },
        "VpcId": {
          "Ref": "networkobjectextensionVpcB3285E3D"
        },
        "PrivateDnsEnabled": true,
        "SecurityGroupIds": [
          {
            "Fn::GetAtt": [
              "networkvpcEndpointCloudWatchLogsSecurityGroup16037CE5",
              "GroupId"
            ]
          }
        ],
        "SubnetIds": [
          {
            "Ref": "networkobjectextensionVpcPrivateSubnetASubnet1SubnetE5FAF545"
          },
          {
            "Ref": "networkobjectextensionVpcPrivateSubnetASubnet2SubnetCEA49EBF"
          }
        ],
        "VpcEndpointType": "Interface"
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/vpcEndpointCloudWatchLogs/Resource"
      }
    },
    "networkvpcEndpointCloudWatchSecurityGroup914A2E61": {
      "Type": "AWS::EC2::SecurityGroup",
      "Properties": {
        "GroupDescription": "FirewallObjectExtensionSolutionStack/network/vpcEndpointCloudWatch/SecurityGroup",
        "SecurityGroupEgress": [
          {
            "CidrIp": "0.0.0.0/0",
            "Description": "Allow all outbound traffic by default",
            "IpProtocol": "-1"
          }
        ],
        "SecurityGroupIngress": [
          {
            "CidrIp": {
              "Fn::GetAtt": [
                "networkobjectextensionVpcB3285E3D",
                "CidrBlock"
              ]
            },
            "Description": {
              "Fn::Join": [
                "",
                [
                  "from ",
                  {
                    "Fn::GetAtt": [
                      "networkobjectextensionVpcB3285E3D",
                      "CidrBlock"
                    ]
                  },
                  ":443"
                ]
              ]
            },
            "FromPort": 443,
            "IpProtocol": "tcp",
            "ToPort": 443
          }
        ],
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ],
        "VpcId": {
          "Ref": "networkobjectextensionVpcB3285E3D"
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/vpcEndpointCloudWatch/SecurityGroup/Resource"
      }
    },
    "networkvpcEndpointCloudWatch2CE340CF": {
      "Type": "AWS::EC2::VPCEndpoint",
      "Properties": {
        "ServiceName": {
          "Fn::Join": [
            "",
            [
              "com.amazonaws.",
              {
                "Ref": "AWS::Region"
              },
              ".monitoring"
            ]
          ]
        },
        "VpcId": {
          "Ref": "networkobjectextensionVpcB3285E3D"
        },
        "PrivateDnsEnabled": true,
        "SecurityGroupIds": [
          {
            "Fn::GetAtt": [
              "networkvpcEndpointCloudWatchSecurityGroup914A2E61",
              "GroupId"
            ]
          }
        ],
        "SubnetIds": [
          {
            "Ref": "networkobjectextensionVpcPrivateSubnetASubnet1SubnetE5FAF545"
          },
          {
            "Ref": "networkobjectextensionVpcPrivateSubnetASubnet2SubnetCEA49EBF"
          }
        ],
        "VpcEndpointType": "Interface"
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/vpcEndpointCloudWatch/Resource"
      }
    },
    "networkvpcEndpointAWSConfigSecurityGroup454CEACE": {
      "Type": "AWS::EC2::SecurityGroup",
      "Properties": {
        "GroupDescription": "FirewallObjectExtensionSolutionStack/network/vpcEndpointAWSConfig/SecurityGroup",
        "SecurityGroupEgress": [
          {
            "CidrIp": "0.0.0.0/0",
            "Description": "Allow all outbound traffic by default",
            "IpProtocol": "-1"
          }
        ],
        "SecurityGroupIngress": [
          {
            "CidrIp": {
              "Fn::GetAtt": [
                "networkobjectextensionVpcB3285E3D",
                "CidrBlock"
              ]
            },
            "Description": {
              "Fn::Join": [
                "",
                [
                  "from ",
                  {
                    "Fn::GetAtt": [
                      "networkobjectextensionVpcB3285E3D",
                      "CidrBlock"
                    ]
                  },
                  ":443"
                ]
              ]
            },
            "FromPort": 443,
            "IpProtocol": "tcp",
            "ToPort": 443
          }
        ],
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ],
        "VpcId": {
          "Ref": "networkobjectextensionVpcB3285E3D"
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/vpcEndpointAWSConfig/SecurityGroup/Resource"
      }
    },
    "networkvpcEndpointAWSConfig2AE4A672": {
      "Type": "AWS::EC2::VPCEndpoint",
      "Properties": {
        "ServiceName": {
          "Fn::Join": [
            "",
            [
              "com.amazonaws.",
              {
                "Ref": "AWS::Region"
              },
              ".config"
            ]
          ]
        },
        "VpcId": {
          "Ref": "networkobjectextensionVpcB3285E3D"
        },
        "PrivateDnsEnabled": true,
        "SecurityGroupIds": [
          {
            "Fn::GetAtt": [
              "networkvpcEndpointAWSConfigSecurityGroup454CEACE",
              "GroupId"
            ]
          }
        ],
        "SubnetIds": [
          {
            "Ref": "networkobjectextensionVpcPrivateSubnetASubnet1SubnetE5FAF545"
          },
          {
            "Ref": "networkobjectextensionVpcPrivateSubnetASubnet2SubnetCEA49EBF"
          }
        ],
        "VpcEndpointType": "Interface"
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/vpcEndpointAWSConfig/Resource"
      }
    },
    "networkobjectextensiontraillogkey8077FB75": {
      "Type": "AWS::KMS::Key",
      "Properties": {
        "KeyPolicy": {
          "Statement": [
            {
              "Action": "kms:*",
              "Effect": "Allow",
              "Principal": {
                "AWS": {
                  "Fn::Join": [
                    "",
                    [
                      "arn:",
                      {
                        "Ref": "AWS::Partition"
                      },
                      ":iam::",
                      {
                        "Ref": "AWS::AccountId"
                      },
                      ":root"
                    ]
                  ]
                }
              },
              "Resource": "*"
            },
            {
              "Action": [
                "kms:Decrypt",
                "kms:Encrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*"
              ],
              "Effect": "Allow",
              "Principal": {
                "Service": "cloudtrail.amazonaws.com"
              },
              "Resource": "*"
            }
          ],
          "Version": "2012-10-17"
        },
        "EnableKeyRotation": true,
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/object-extension-trail-log-key/Resource"
      }
    },
    "networktrailbucketencryptionkeytrailbucketE4AB88E1": {
      "Type": "AWS::KMS::Key",
      "Properties": {
        "KeyPolicy": {
          "Statement": [
            {
              "Action": "kms:*",
              "Effect": "Allow",
              "Principal": {
                "AWS": {
                  "Fn::Join": [
                    "",
                    [
                      "arn:",
                      {
                        "Ref": "AWS::Partition"
                      },
                      ":iam::",
                      {
                        "Ref": "AWS::AccountId"
                      },
                      ":root"
                    ]
                  ]
                }
              },
              "Resource": "*"
            }
          ],
          "Version": "2012-10-17"
        },
        "EnableKeyRotation": true,
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain",
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/trail-bucket/encryption-key-trail-bucket/Resource"
      }
    },
    "networktrailbucketagstrailbucketE7002E8C": {
      "Type": "AWS::S3::Bucket",
      "Properties": {
        "AccessControl": "LogDeliveryWrite",
        "BucketEncryption": {
          "ServerSideEncryptionConfiguration": [
            {
              "ServerSideEncryptionByDefault": {
                "KMSMasterKeyID": {
                  "Fn::GetAtt": [
                    "networktrailbucketencryptionkeytrailbucketE4AB88E1",
                    "Arn"
                  ]
                },
                "SSEAlgorithm": "aws:kms"
              }
            }
          ]
        },
        "LoggingConfiguration": {
          "LogFilePrefix": "access-log"
        },
        "PublicAccessBlockConfiguration": {
          "BlockPublicAcls": true,
          "BlockPublicPolicy": true,
          "IgnorePublicAcls": true,
          "RestrictPublicBuckets": true
        },
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ],
        "VersioningConfiguration": {
          "Status": "Enabled"
        }
      },
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain",
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/trail-bucket/ags-trail-bucket/Resource"
      }
    },
    "networktrailbucketagstrailbucketPolicy72763D75": {
      "Type": "AWS::S3::BucketPolicy",
      "Properties": {
        "Bucket": {
          "Ref": "networktrailbucketagstrailbucketE7002E8C"
        },
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "*",
              "Condition": {
                "Bool": {
                  "aws:SecureTransport": "false"
                }
              },
              "Effect": "Deny",
              "Principal": {
                "AWS": "*"
              },
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    {
                      "Fn::GetAtt": [
                        "networktrailbucketagstrailbucketE7002E8C",
                        "Arn"
                      ]
                    },
                    "/*"
                  ]
                ]
              },
              "Sid": "HttpsOnly"
            },
            {
              "Action": "s3:GetBucketAcl",
              "Effect": "Allow",
              "Principal": {
                "Service": "cloudtrail.amazonaws.com"
              },
              "Resource": {
                "Fn::GetAtt": [
                  "networktrailbucketagstrailbucketE7002E8C",
                  "Arn"
                ]
              }
            },
            {
              "Action": "s3:PutObject",
              "Condition": {
                "StringEquals": {
                  "s3:x-amz-acl": "bucket-owner-full-control"
                }
              },
              "Effect": "Allow",
              "Principal": {
                "Service": "cloudtrail.amazonaws.com"
              },
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    {
                      "Fn::GetAtt": [
                        "networktrailbucketagstrailbucketE7002E8C",
                        "Arn"
                      ]
                    },
                    "/AWSLogs/",
                    {
                      "Ref": "AWS::AccountId"
                    },
                    "/*"
                  ]
                ]
              }
            }
          ],
          "Version": "2012-10-17"
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/trail-bucket/ags-trail-bucket/Policy/Resource"
      }
    },
    "networkobjectextensiontrailDEEC007F": {
      "Type": "AWS::CloudTrail::Trail",
      "Properties": {
        "IsLogging": true,
        "S3BucketName": {
          "Ref": "networktrailbucketagstrailbucketE7002E8C"
        },
        "EnableLogFileValidation": true,
        "EventSelectors": [
          {
            "DataResources": [
              {
                "Type": "AWS::Lambda::Function",
                "Values": [
                  {
                    "Fn::GetAtt": [
                      "autoconfigautoConfigSchedulerE6836502",
                      "Arn"
                    ]
                  },
                  {
                    "Fn::GetAtt": [
                      "autoconfigautoConfig3D9E0388",
                      "Arn"
                    ]
                  }
                ]
              }
            ]
          },
          {
            "DataResources": [
              {
                "Type": "AWS::Lambda::Function",
                "Values": [
                  {
                    "Fn::GetAtt": [
                      "autoconfigapiautoConfig13F74724",
                      "Arn"
                    ]
                  }
                ]
              }
            ]
          }
        ],
        "IncludeGlobalServiceEvents": true,
        "IsMultiRegionTrail": true,
        "KMSKeyId": {
          "Fn::GetAtt": [
            "networkobjectextensiontraillogkey8077FB75",
            "Arn"
          ]
        },
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "DependsOn": [
        "networktrailbucketagstrailbucketPolicy72763D75"
      ],
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/network/object-extension-trail/Resource"
      }
    },
    "DataSourcesautoconfigencryptionkey7C2C5A00": {
      "Type": "AWS::KMS::Key",
      "Properties": {
        "KeyPolicy": {
          "Statement": [
            {
              "Action": "kms:*",
              "Effect": "Allow",
              "Principal": {
                "AWS": {
                  "Fn::Join": [
                    "",
                    [
                      "arn:",
                      {
                        "Ref": "AWS::Partition"
                      },
                      ":iam::",
                      {
                        "Ref": "AWS::AccountId"
                      },
                      ":root"
                    ]
                  ]
                }
              },
              "Resource": "*"
            }
          ],
          "Version": "2012-10-17"
        },
        "EnableKeyRotation": true,
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain",
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/DataSources/auto-config-encryption-key/Resource"
      }
    },
    "DataSourcesautoconfigencryptionkeyAliasE64622D9": {
      "Type": "AWS::KMS::Alias",
      "Properties": {
        "AliasName": "alias/AutoConfigTablesEncryptionKey",
        "TargetKeyId": {
          "Fn::GetAtt": [
            "DataSourcesautoconfigencryptionkey7C2C5A00",
            "Arn"
          ]
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/DataSources/auto-config-encryption-key/Alias/Resource"
      }
    },
    "DataSourcesRulesTable1F07B779": {
      "Type": "AWS::DynamoDB::Table",
      "Properties": {
        "KeySchema": [
          {
            "AttributeName": "id",
            "KeyType": "HASH"
          }
        ],
        "AttributeDefinitions": [
          {
            "AttributeName": "id",
            "AttributeType": "S"
          },
          {
            "AttributeName": "ruleBundleId",
            "AttributeType": "S"
          }
        ],
        "BillingMode": "PAY_PER_REQUEST",
        "GlobalSecondaryIndexes": [
          {
            "IndexName": "ruleBundleId",
            "KeySchema": [
              {
                "AttributeName": "ruleBundleId",
                "KeyType": "HASH"
              }
            ],
            "Projection": {
              "ProjectionType": "ALL"
            }
          }
        ],
        "PointInTimeRecoverySpecification": {
          "PointInTimeRecoveryEnabled": true
        },
        "SSESpecification": {
          "KMSMasterKeyId": {
            "Fn::GetAtt": [
              "DataSourcesautoconfigencryptionkey7C2C5A00",
              "Arn"
            ]
          },
          "SSEEnabled": true,
          "SSEType": "KMS"
        },
        "StreamSpecification": {
          "StreamViewType": "NEW_AND_OLD_IMAGES"
        },
        "TableName": "RuleExtensionsRuleTable",
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain",
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/DataSources/RulesTable/Resource"
      }
    },
    "DataSourcesautoconfigauditencryptionkey24E060F0": {
      "Type": "AWS::KMS::Key",
      "Properties": {
        "KeyPolicy": {
          "Statement": [
            {
              "Action": "kms:*",
              "Effect": "Allow",
              "Principal": {
                "AWS": {
                  "Fn::Join": [
                    "",
                    [
                      "arn:",
                      {
                        "Ref": "AWS::Partition"
                      },
                      ":iam::",
                      {
                        "Ref": "AWS::AccountId"
                      },
                      ":root"
                    ]
                  ]
                }
              },
              "Resource": "*"
            }
          ],
          "Version": "2012-10-17"
        },
        "EnableKeyRotation": true,
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain",
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/DataSources/auto-config-audit-encryption-key/Resource"
      }
    },
    "DataSourcesautoconfigauditencryptionkeyAlias42E61DCF": {
      "Type": "AWS::KMS::Alias",
      "Properties": {
        "AliasName": "alias/AutoConfigAuditTablesEncryptionKey",
        "TargetKeyId": {
          "Fn::GetAtt": [
            "DataSourcesautoconfigauditencryptionkey24E060F0",
            "Arn"
          ]
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/DataSources/auto-config-audit-encryption-key/Alias/Resource"
      }
    },
    "DataSourcesObjectsTable3C1B7D58": {
      "Type": "AWS::DynamoDB::Table",
      "Properties": {
        "KeySchema": [
          {
            "AttributeName": "id",
            "KeyType": "HASH"
          }
        ],
        "AttributeDefinitions": [
          {
            "AttributeName": "id",
            "AttributeType": "S"
          }
        ],
        "BillingMode": "PAY_PER_REQUEST",
        "PointInTimeRecoverySpecification": {
          "PointInTimeRecoveryEnabled": true
        },
        "SSESpecification": {
          "KMSMasterKeyId": {
            "Fn::GetAtt": [
              "DataSourcesautoconfigencryptionkey7C2C5A00",
              "Arn"
            ]
          },
          "SSEEnabled": true,
          "SSEType": "KMS"
        },
        "StreamSpecification": {
          "StreamViewType": "NEW_AND_OLD_IMAGES"
        },
        "TableName": "RuleExtensionsObjectTable",
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain",
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/DataSources/ObjectsTable/Resource"
      }
    },
    "DataSourcesRuleBundlesTableEC40370C": {
      "Type": "AWS::DynamoDB::Table",
      "Properties": {
        "KeySchema": [
          {
            "AttributeName": "id",
            "KeyType": "HASH"
          }
        ],
        "AttributeDefinitions": [
          {
            "AttributeName": "id",
            "AttributeType": "S"
          }
        ],
        "BillingMode": "PAY_PER_REQUEST",
        "PointInTimeRecoverySpecification": {
          "PointInTimeRecoveryEnabled": true
        },
        "SSESpecification": {
          "KMSMasterKeyId": {
            "Fn::GetAtt": [
              "DataSourcesautoconfigencryptionkey7C2C5A00",
              "Arn"
            ]
          },
          "SSEEnabled": true,
          "SSEType": "KMS"
        },
        "StreamSpecification": {
          "StreamViewType": "NEW_AND_OLD_IMAGES"
        },
        "TableName": "RuleExtensionsRuleBundleTable",
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain",
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/DataSources/RuleBundlesTable/Resource"
      }
    },
    "DataSourcesAuditsTable1F631F88": {
      "Type": "AWS::DynamoDB::Table",
      "Properties": {
        "KeySchema": [
          {
            "AttributeName": "id",
            "KeyType": "HASH"
          }
        ],
        "AttributeDefinitions": [
          {
            "AttributeName": "id",
            "AttributeType": "S"
          }
        ],
        "BillingMode": "PAY_PER_REQUEST",
        "PointInTimeRecoverySpecification": {
          "PointInTimeRecoveryEnabled": true
        },
        "SSESpecification": {
          "KMSMasterKeyId": {
            "Fn::GetAtt": [
              "DataSourcesautoconfigauditencryptionkey24E060F0",
              "Arn"
            ]
          },
          "SSEEnabled": true,
          "SSEType": "KMS"
        },
        "StreamSpecification": {
          "StreamViewType": "NEW_AND_OLD_IMAGES"
        },
        "TableName": "RuleExtensionsAuditTable",
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain",
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/DataSources/AuditsTable/Resource"
      }
    },
    "DataSourcesnotificationsnsencryptionkey0B51B241": {
      "Type": "AWS::KMS::Key",
      "Properties": {
        "KeyPolicy": {
          "Statement": [
            {
              "Action": "kms:*",
              "Effect": "Allow",
              "Principal": {
                "AWS": {
                  "Fn::Join": [
                    "",
                    [
                      "arn:",
                      {
                        "Ref": "AWS::Partition"
                      },
                      ":iam::",
                      {
                        "Ref": "AWS::AccountId"
                      },
                      ":root"
                    ]
                  ]
                }
              },
              "Resource": "*"
            }
          ],
          "Version": "2012-10-17"
        },
        "EnableKeyRotation": true,
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/DataSources/notification-sns-encryption-key/Resource"
      }
    },
    "DataSourcesnotificationsnsencryptionkeyAlias7F8429DB": {
      "Type": "AWS::KMS::Alias",
      "Properties": {
        "AliasName": "alias/RuleEvaluationResultTopicEncryptionKey",
        "TargetKeyId": {
          "Fn::GetAtt": [
            "DataSourcesnotificationsnsencryptionkey0B51B241",
            "Arn"
          ]
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/DataSources/notification-sns-encryption-key/Alias/Resource"
      }
    },
    "DataSourcesRuleEvaluationResultTopic5273BF75": {
      "Type": "AWS::SNS::Topic",
      "Properties": {
        "KmsMasterKeyId": {
          "Fn::GetAtt": [
            "DataSourcesnotificationsnsencryptionkey0B51B241",
            "Arn"
          ]
        },
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/DataSources/RuleEvaluationResultTopic/Resource"
      }
    },
    "autoconfigExecutionRoleFB25D9EC": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "lambda.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Description": "Lambda execution role for function",
        "ManagedPolicyArns": [
          {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
              ]
            ]
          },
          {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"
              ]
            ]
          }
        ],
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config/ExecutionRole/Resource"
      }
    },
    "autoconfigExecutionRoleDefaultPolicyF81E1CAB": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": [
                "network-firewall:CreateRuleGroup",
                "network-firewall:ListRuleGroups",
                "network-firewall:DescribeRuleGroup",
                "network-firewall:UpdateRuleGroup"
              ],
              "Effect": "Allow",
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    "arn:aws:network-firewall:",
                    {
                      "Ref": "AWS::Region"
                    },
                    ":",
                    {
                      "Ref": "AWS::AccountId"
                    },
                    ":stateful-rulegroup/default-anfwconfig-rule-*"
                  ]
                ]
              }
            },
            {
              "Action": "SNS:Publish",
              "Effect": "Allow",
              "Resource": {
                "Ref": "DataSourcesRuleEvaluationResultTopic5273BF75"
              }
            },
            {
              "Action": "config:SelectAggregateResourceConfig",
              "Effect": "Allow",
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    "arn:aws:config:",
                    {
                      "Ref": "AWS::Region"
                    },
                    ":",
                    {
                      "Ref": "AWS::AccountId"
                    },
                    ":config-aggregator/*"
                  ]
                ]
              }
            },
            {
              "Action": "kms:GenerateDataKey",
              "Effect": "Allow",
              "Resource": {
                "Fn::GetAtt": [
                  "DataSourcesnotificationsnsencryptionkey0B51B241",
                  "Arn"
                ]
              }
            },
            {
              "Action": "sqs:SendMessage",
              "Effect": "Allow",
              "Resource": {
                "Fn::GetAtt": [
                  "autoconfigautoConfigFunctionDLQ2146CC6D",
                  "Arn"
                ]
              }
            },
            {
              "Action": [
                "xray:PutTraceSegments",
                "xray:PutTelemetryRecords"
              ],
              "Effect": "Allow",
              "Resource": "*"
            },
            {
              "Action": [
                "dynamodb:BatchGetItem",
                "dynamodb:GetRecords",
                "dynamodb:GetShardIterator",
                "dynamodb:Query",
                "dynamodb:GetItem",
                "dynamodb:Scan",
                "dynamodb:ConditionCheckItem",
                "dynamodb:BatchWriteItem",
                "dynamodb:PutItem",
                "dynamodb:UpdateItem",
                "dynamodb:DeleteItem",
                "dynamodb:DescribeTable"
              ],
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "DataSourcesRulesTable1F07B779",
                    "Arn"
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "DataSourcesRulesTable1F07B779",
                          "Arn"
                        ]
                      },
                      "/index/*"
                    ]
                  ]
                }
              ]
            },
            {
              "Action": [
                "kms:Decrypt",
                "kms:DescribeKey",
                "kms:Encrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*"
              ],
              "Effect": "Allow",
              "Resource": {
                "Fn::GetAtt": [
                  "DataSourcesautoconfigencryptionkey7C2C5A00",
                  "Arn"
                ]
              }
            },
            {
              "Action": [
                "dynamodb:BatchGetItem",
                "dynamodb:GetRecords",
                "dynamodb:GetShardIterator",
                "dynamodb:Query",
                "dynamodb:GetItem",
                "dynamodb:Scan",
                "dynamodb:ConditionCheckItem",
                "dynamodb:BatchWriteItem",
                "dynamodb:PutItem",
                "dynamodb:UpdateItem",
                "dynamodb:DeleteItem",
                "dynamodb:DescribeTable"
              ],
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "DataSourcesObjectsTable3C1B7D58",
                    "Arn"
                  ]
                },
                {
                  "Ref": "AWS::NoValue"
                }
              ]
            },
            {
              "Action": [
                "dynamodb:BatchGetItem",
                "dynamodb:GetRecords",
                "dynamodb:GetShardIterator",
                "dynamodb:Query",
                "dynamodb:GetItem",
                "dynamodb:Scan",
                "dynamodb:ConditionCheckItem",
                "dynamodb:BatchWriteItem",
                "dynamodb:PutItem",
                "dynamodb:UpdateItem",
                "dynamodb:DeleteItem",
                "dynamodb:DescribeTable"
              ],
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "DataSourcesRuleBundlesTableEC40370C",
                    "Arn"
                  ]
                },
                {
                  "Ref": "AWS::NoValue"
                }
              ]
            },
            {
              "Action": "sns:Publish",
              "Effect": "Allow",
              "Resource": {
                "Ref": "DataSourcesRuleEvaluationResultTopic5273BF75"
              }
            },
            {
              "Action": [
                "kms:Decrypt",
                "kms:Encrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*"
              ],
              "Effect": "Allow",
              "Resource": {
                "Fn::GetAtt": [
                  "DataSourcesnotificationsnsencryptionkey0B51B241",
                  "Arn"
                ]
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "autoconfigExecutionRoleDefaultPolicyF81E1CAB",
        "Roles": [
          {
            "Ref": "autoconfigExecutionRoleFB25D9EC"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config/ExecutionRole/DefaultPolicy/Resource"
      }
    },
    "autoconfigautoConfigFunctionDLQ2146CC6D": {
      "Type": "AWS::SQS::Queue",
      "Properties": {
        "KmsMasterKeyId": "alias/aws/sqs",
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config/autoConfigFunctionDLQ/Resource"
      }
    },
    "autoconfigautoConfigSecurityGroupAF540975": {
      "Type": "AWS::EC2::SecurityGroup",
      "Properties": {
        "GroupDescription": "Automatic security group for Lambda Function FirewallObjectExtensionSolutionStackautoconfigautoConfig3668661E",
        "SecurityGroupEgress": [
          {
            "CidrIp": "0.0.0.0/0",
            "Description": "Allow all outbound traffic by default",
            "IpProtocol": "-1"
          }
        ],
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ],
        "VpcId": {
          "Ref": "networkobjectextensionVpcB3285E3D"
        }
      },
      "DependsOn": [
        "networkobjectextensionVpcPrivateSubnetASubnet1DefaultRouteD53AF693",
        "networkobjectextensionVpcPrivateSubnetASubnet1RouteTableAssociation4919BA17",
        "networkobjectextensionVpcPrivateSubnetASubnet2DefaultRoute68DC2904",
        "networkobjectextensionVpcPrivateSubnetASubnet2RouteTableAssociationDC02E6FE"
      ],
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config/autoConfig/SecurityGroup/Resource"
      }
    },
    "autoconfigautoConfig3D9E0388": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Code": {
          "S3Bucket": {
            "Fn::Sub": "solutions-${AWS::Region}"
          },
          "S3Key": "dynamic-object-and-rule-extensions-for-aws-network-firewall/v1.1.2/asset6484c4563a812ff2d333ab25b128391d069b0de601f37d11d0ca7612e4c99ced.zip"
        },
        "Role": {
          "Fn::GetAtt": [
            "autoconfigExecutionRoleFB25D9EC",
            "Arn"
          ]
        },
        "DeadLetterConfig": {
          "TargetArn": {
            "Fn::GetAtt": [
              "autoconfigautoConfigFunctionDLQ2146CC6D",
              "Arn"
            ]
          }
        },
        "Description": "Firewall object extension rule resolution and application lambda,                 periodically triggered by schedule lambda to translate                  cloud resource reference into network firewall rules",
        "Environment": {
          "Variables": {
            "RULES_TABLE_NAME": {
              "Ref": "DataSourcesRulesTable1F07B779"
            },
            "OBJECTS_TABLE_NAME": {
              "Ref": "DataSourcesObjectsTable3C1B7D58"
            },
            "RULEBUNDLES_TABLE_NAME": {
              "Ref": "DataSourcesRuleBundlesTableEC40370C"
            },
            "RULE_NOTIFICATION_TOPIC_ARN": {
              "Ref": "DataSourcesRuleEvaluationResultTopic5273BF75"
            },
            "LOGLEVEL": "DEBUG",
            "DEFAULT_AGGREGATOR_NAME": "org-replicator",
            "CROSS_ACCOUNT_CONFIG_ROLE": "",
            "CROSS_ACCOUNT_ANFW_ROLE": "",
            "SOLUTION_ID": "SO0196",
            "VERSION": "v1.1.2"
          }
        },
        "Handler": "app.lambdaHandler",
        "MemorySize": 3008,
        "Runtime": "nodejs14.x",
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ],
        "Timeout": 900,
        "TracingConfig": {
          "Mode": "Active"
        },
        "VpcConfig": {
          "SecurityGroupIds": [
            {
              "Fn::GetAtt": [
                "autoconfigautoConfigSecurityGroupAF540975",
                "GroupId"
              ]
            }
          ],
          "SubnetIds": [
            {
              "Ref": "networkobjectextensionVpcPrivateSubnetASubnet1SubnetE5FAF545"
            },
            {
              "Ref": "networkobjectextensionVpcPrivateSubnetASubnet2SubnetCEA49EBF"
            }
          ]
        }
      },
      "DependsOn": [
        "autoconfigExecutionRoleDefaultPolicyF81E1CAB",
        "autoconfigExecutionRoleFB25D9EC",
        "networkobjectextensionVpcPrivateSubnetASubnet1DefaultRouteD53AF693",
        "networkobjectextensionVpcPrivateSubnetASubnet1RouteTableAssociation4919BA17",
        "networkobjectextensionVpcPrivateSubnetASubnet2DefaultRoute68DC2904",
        "networkobjectextensionVpcPrivateSubnetASubnet2RouteTableAssociationDC02E6FE"
      ],
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config/autoConfig/Resource",
        "aws:asset:path": "asset.6484c4563a812ff2d333ab25b128391d069b0de601f37d11d0ca7612e4c99ced",
        "aws:asset:is-bundled": false,
        "aws:asset:property": "Code"
      }
    },
    "autoconfigscheduleFunctionExecutionRole88B49F22": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "lambda.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Description": "Lambda execution role for lambda",
        "ManagedPolicyArns": [
          {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
              ]
            ]
          },
          {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"
              ]
            ]
          }
        ],
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config/scheduleFunctionExecutionRole/Resource"
      }
    },
    "autoconfigscheduleFunctionExecutionRoleDefaultPolicy1D57AE03": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "sqs:SendMessage",
              "Effect": "Allow",
              "Resource": {
                "Fn::GetAtt": [
                  "autoconfigschedulerFunctionDLQD39FD7D7",
                  "Arn"
                ]
              }
            },
            {
              "Action": [
                "xray:PutTraceSegments",
                "xray:PutTelemetryRecords"
              ],
              "Effect": "Allow",
              "Resource": "*"
            },
            {
              "Action": "lambda:InvokeFunction",
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "autoconfigautoConfig3D9E0388",
                    "Arn"
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "autoconfigautoConfig3D9E0388",
                          "Arn"
                        ]
                      },
                      ":*"
                    ]
                  ]
                }
              ]
            },
            {
              "Action": [
                "dynamodb:BatchGetItem",
                "dynamodb:GetRecords",
                "dynamodb:GetShardIterator",
                "dynamodb:Query",
                "dynamodb:GetItem",
                "dynamodb:Scan",
                "dynamodb:ConditionCheckItem",
                "dynamodb:BatchWriteItem",
                "dynamodb:PutItem",
                "dynamodb:UpdateItem",
                "dynamodb:DeleteItem",
                "dynamodb:DescribeTable"
              ],
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "DataSourcesRuleBundlesTableEC40370C",
                    "Arn"
                  ]
                },
                {
                  "Ref": "AWS::NoValue"
                }
              ]
            },
            {
              "Action": [
                "kms:Decrypt",
                "kms:DescribeKey",
                "kms:Encrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*"
              ],
              "Effect": "Allow",
              "Resource": {
                "Fn::GetAtt": [
                  "DataSourcesautoconfigencryptionkey7C2C5A00",
                  "Arn"
                ]
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "autoconfigscheduleFunctionExecutionRoleDefaultPolicy1D57AE03",
        "Roles": [
          {
            "Ref": "autoconfigscheduleFunctionExecutionRole88B49F22"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config/scheduleFunctionExecutionRole/DefaultPolicy/Resource"
      }
    },
    "autoconfigschedulerFunctionDLQD39FD7D7": {
      "Type": "AWS::SQS::Queue",
      "Properties": {
        "KmsMasterKeyId": "alias/aws/sqs",
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config/schedulerFunctionDLQ/Resource"
      }
    },
    "autoconfigautoConfigSchedulerSecurityGroupB91B99C2": {
      "Type": "AWS::EC2::SecurityGroup",
      "Properties": {
        "GroupDescription": "Automatic security group for Lambda Function FirewallObjectExtensionSolutionStackautoconfigautoConfigScheduler685EEDCC",
        "SecurityGroupEgress": [
          {
            "CidrIp": "0.0.0.0/0",
            "Description": "Allow all outbound traffic by default",
            "IpProtocol": "-1"
          }
        ],
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ],
        "VpcId": {
          "Ref": "networkobjectextensionVpcB3285E3D"
        }
      },
      "DependsOn": [
        "networkobjectextensionVpcPrivateSubnetASubnet1DefaultRouteD53AF693",
        "networkobjectextensionVpcPrivateSubnetASubnet1RouteTableAssociation4919BA17",
        "networkobjectextensionVpcPrivateSubnetASubnet2DefaultRoute68DC2904",
        "networkobjectextensionVpcPrivateSubnetASubnet2RouteTableAssociationDC02E6FE"
      ],
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config/autoConfigScheduler/SecurityGroup/Resource"
      }
    },
    "autoconfigautoConfigSchedulerE6836502": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Code": {
          "S3Bucket": {
            "Fn::Sub": "solutions-${AWS::Region}"
          },
          "S3Key": "dynamic-object-and-rule-extensions-for-aws-network-firewall/v1.1.2/assetd3d53d3bef63c0dcd5fd58765ec5a9fbf988e5ca933ef124551537ef7fde5fe2.zip"
        },
        "Role": {
          "Fn::GetAtt": [
            "autoconfigscheduleFunctionExecutionRole88B49F22",
            "Arn"
          ]
        },
        "DeadLetterConfig": {
          "TargetArn": {
            "Fn::GetAtt": [
              "autoconfigschedulerFunctionDLQD39FD7D7",
              "Arn"
            ]
          }
        },
        "Description": "Firewall object extension scheduler lambda,                 periodically triggered to get all the rule bundles",
        "Environment": {
          "Variables": {
            "RULEBUNDLES_TABLE_NAME": {
              "Ref": "DataSourcesRuleBundlesTableEC40370C"
            },
            "AUTO_CONFIG_FUNCTION_NAME": {
              "Ref": "autoconfigautoConfig3D9E0388"
            },
            "LOGLEVEL": "DEBUG",
            "SOLUTION_ID": "SO0196",
            "VERSION": "v1.1.2"
          }
        },
        "Handler": "app.lambdaHandler",
        "MemorySize": 1024,
        "Runtime": "nodejs14.x",
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ],
        "Timeout": 600,
        "TracingConfig": {
          "Mode": "Active"
        },
        "VpcConfig": {
          "SecurityGroupIds": [
            {
              "Fn::GetAtt": [
                "autoconfigautoConfigSchedulerSecurityGroupB91B99C2",
                "GroupId"
              ]
            }
          ],
          "SubnetIds": [
            {
              "Ref": "networkobjectextensionVpcPrivateSubnetASubnet1SubnetE5FAF545"
            },
            {
              "Ref": "networkobjectextensionVpcPrivateSubnetASubnet2SubnetCEA49EBF"
            }
          ]
        }
      },
      "DependsOn": [
        "autoconfigscheduleFunctionExecutionRoleDefaultPolicy1D57AE03",
        "autoconfigscheduleFunctionExecutionRole88B49F22",
        "networkobjectextensionVpcPrivateSubnetASubnet1DefaultRouteD53AF693",
        "networkobjectextensionVpcPrivateSubnetASubnet1RouteTableAssociation4919BA17",
        "networkobjectextensionVpcPrivateSubnetASubnet2DefaultRoute68DC2904",
        "networkobjectextensionVpcPrivateSubnetASubnet2RouteTableAssociationDC02E6FE"
      ],
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config/autoConfigScheduler/Resource",
        "aws:asset:path": "asset.d3d53d3bef63c0dcd5fd58765ec5a9fbf988e5ca933ef124551537ef7fde5fe2",
        "aws:asset:is-bundled": false,
        "aws:asset:property": "Code"
      }
    },
    "autoconfigTriggerRule1039ECBD": {
      "Type": "AWS::Events::Rule",
      "Properties": {
        "Description": "Trigger auto configure scheduler lambda based on the configured interval value of ruleResolutionInterval",
        "ScheduleExpression": "rate(10 minutes)",
        "State": "ENABLED",
        "Targets": [
          {
            "Arn": {
              "Fn::GetAtt": [
                "autoconfigautoConfigSchedulerE6836502",
                "Arn"
              ]
            },
            "Id": "Target0"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config/TriggerRule/Resource"
      }
    },
    "autoconfigTriggerRuleAllowEventRuleFirewallObjectExtensionSolutionStackautoconfigautoConfigScheduler685EEDCC0F695BE3": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "autoconfigautoConfigSchedulerE6836502",
            "Arn"
          ]
        },
        "Principal": "events.amazonaws.com",
        "SourceArn": {
          "Fn::GetAtt": [
            "autoconfigTriggerRule1039ECBD",
            "Arn"
          ]
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config/TriggerRule/AllowEventRuleFirewallObjectExtensionSolutionStackautoconfigautoConfigScheduler685EEDCC"
      }
    },
    "CanaryExecutionRole07ED3987": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "lambda.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "ManagedPolicyArns": [
          {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
              ]
            ]
          },
          {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"
              ]
            ]
          }
        ],
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/CanaryExecutionRole/Resource"
      }
    },
    "CanaryExecutionRoleDefaultPolicyD08AA359": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "execute-api:Invoke",
              "Effect": "Allow",
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    "arn:aws:execute-api:",
                    {
                      "Ref": "AWS::Region"
                    },
                    ":",
                    {
                      "Ref": "AWS::AccountId"
                    },
                    ":",
                    {
                      "Ref": "autoconfigapiAPI373CEEE7"
                    },
                    "/*/GET/*"
                  ]
                ]
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "CanaryExecutionRoleDefaultPolicyD08AA359",
        "Roles": [
          {
            "Ref": "CanaryExecutionRole07ED3987"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/CanaryExecutionRole/DefaultPolicy/Resource"
      }
    },
    "autoconfigapiExecutionRole3A140D76": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "lambda.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Description": "Lambda execution role for function",
        "ManagedPolicyArns": [
          {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
              ]
            ]
          },
          {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"
              ]
            ]
          }
        ],
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/ExecutionRole/Resource"
      }
    },
    "autoconfigapiExecutionRoleDefaultPolicyAC210897": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": [
                "network-firewall:ListRuleGroups",
                "network-firewall:DescribeRuleGroup",
                "network-firewall:UpdateRuleGroup"
              ],
              "Effect": "Allow",
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    "arn:aws:network-firewall:",
                    {
                      "Ref": "AWS::Region"
                    },
                    ":",
                    {
                      "Ref": "AWS::AccountId"
                    },
                    ":stateful-rulegroup/default-anfwconfig-rule-*"
                  ]
                ]
              }
            },
            {
              "Action": [
                "config:SelectAggregateResourceConfig",
                "config:DescribeConfigurationAggregators"
              ],
              "Effect": "Allow",
              "Resource": "*"
            },
            {
              "Action": "sqs:SendMessage",
              "Effect": "Allow",
              "Resource": {
                "Fn::GetAtt": [
                  "autoconfigapiapiFunctionDLQ0A903B94",
                  "Arn"
                ]
              }
            },
            {
              "Action": [
                "xray:PutTraceSegments",
                "xray:PutTelemetryRecords"
              ],
              "Effect": "Allow",
              "Resource": "*"
            },
            {
              "Action": [
                "dynamodb:BatchGetItem",
                "dynamodb:GetRecords",
                "dynamodb:GetShardIterator",
                "dynamodb:Query",
                "dynamodb:GetItem",
                "dynamodb:Scan",
                "dynamodb:ConditionCheckItem",
                "dynamodb:BatchWriteItem",
                "dynamodb:PutItem",
                "dynamodb:UpdateItem",
                "dynamodb:DeleteItem",
                "dynamodb:DescribeTable"
              ],
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "DataSourcesObjectsTable3C1B7D58",
                    "Arn"
                  ]
                },
                {
                  "Ref": "AWS::NoValue"
                }
              ]
            },
            {
              "Action": [
                "kms:Decrypt",
                "kms:DescribeKey",
                "kms:Encrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*"
              ],
              "Effect": "Allow",
              "Resource": {
                "Fn::GetAtt": [
                  "DataSourcesautoconfigencryptionkey7C2C5A00",
                  "Arn"
                ]
              }
            },
            {
              "Action": [
                "dynamodb:BatchGetItem",
                "dynamodb:GetRecords",
                "dynamodb:GetShardIterator",
                "dynamodb:Query",
                "dynamodb:GetItem",
                "dynamodb:Scan",
                "dynamodb:ConditionCheckItem",
                "dynamodb:BatchWriteItem",
                "dynamodb:PutItem",
                "dynamodb:UpdateItem",
                "dynamodb:DeleteItem",
                "dynamodb:DescribeTable"
              ],
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "DataSourcesRuleBundlesTableEC40370C",
                    "Arn"
                  ]
                },
                {
                  "Ref": "AWS::NoValue"
                }
              ]
            },
            {
              "Action": [
                "dynamodb:BatchGetItem",
                "dynamodb:GetRecords",
                "dynamodb:GetShardIterator",
                "dynamodb:Query",
                "dynamodb:GetItem",
                "dynamodb:Scan",
                "dynamodb:ConditionCheckItem",
                "dynamodb:BatchWriteItem",
                "dynamodb:PutItem",
                "dynamodb:UpdateItem",
                "dynamodb:DeleteItem",
                "dynamodb:DescribeTable"
              ],
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "DataSourcesRulesTable1F07B779",
                    "Arn"
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "DataSourcesRulesTable1F07B779",
                          "Arn"
                        ]
                      },
                      "/index/*"
                    ]
                  ]
                }
              ]
            },
            {
              "Action": [
                "dynamodb:BatchGetItem",
                "dynamodb:GetRecords",
                "dynamodb:GetShardIterator",
                "dynamodb:Query",
                "dynamodb:GetItem",
                "dynamodb:Scan",
                "dynamodb:ConditionCheckItem",
                "dynamodb:BatchWriteItem",
                "dynamodb:PutItem",
                "dynamodb:UpdateItem",
                "dynamodb:DeleteItem",
                "dynamodb:DescribeTable"
              ],
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "DataSourcesAuditsTable1F631F88",
                    "Arn"
                  ]
                },
                {
                  "Ref": "AWS::NoValue"
                }
              ]
            },
            {
              "Action": [
                "kms:Decrypt",
                "kms:DescribeKey",
                "kms:Encrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*"
              ],
              "Effect": "Allow",
              "Resource": {
                "Fn::GetAtt": [
                  "DataSourcesautoconfigauditencryptionkey24E060F0",
                  "Arn"
                ]
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "autoconfigapiExecutionRoleDefaultPolicyAC210897",
        "Roles": [
          {
            "Ref": "autoconfigapiExecutionRole3A140D76"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/ExecutionRole/DefaultPolicy/Resource"
      }
    },
    "autoconfigapiapigwvpcendpointsgD9540BF3": {
      "Type": "AWS::EC2::SecurityGroup",
      "Properties": {
        "GroupDescription": "FirewallObjectExtensionSolutionStack/auto-config-api/apigw-vpc-endpoint-sg",
        "SecurityGroupEgress": [
          {
            "CidrIp": {
              "Fn::GetAtt": [
                "networkobjectextensionVpcB3285E3D",
                "CidrBlock"
              ]
            },
            "Description": {
              "Fn::Join": [
                "",
                [
                  "from ",
                  {
                    "Fn::GetAtt": [
                      "networkobjectextensionVpcB3285E3D",
                      "CidrBlock"
                    ]
                  },
                  ":443"
                ]
              ]
            },
            "FromPort": 443,
            "IpProtocol": "tcp",
            "ToPort": 443
          }
        ],
        "SecurityGroupIngress": [
          {
            "CidrIp": {
              "Fn::GetAtt": [
                "networkobjectextensionVpcB3285E3D",
                "CidrBlock"
              ]
            },
            "Description": {
              "Fn::Join": [
                "",
                [
                  "from ",
                  {
                    "Fn::GetAtt": [
                      "networkobjectextensionVpcB3285E3D",
                      "CidrBlock"
                    ]
                  },
                  ":443"
                ]
              ]
            },
            "FromPort": 443,
            "IpProtocol": "tcp",
            "ToPort": 443
          }
        ],
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ],
        "VpcId": {
          "Ref": "networkobjectextensionVpcB3285E3D"
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/apigw-vpc-endpoint-sg/Resource"
      }
    },
    "autoconfigapiapivpcendpointA8A984B6": {
      "Type": "AWS::EC2::VPCEndpoint",
      "Properties": {
        "ServiceName": {
          "Fn::Join": [
            "",
            [
              "com.amazonaws.",
              {
                "Ref": "AWS::Region"
              },
              ".execute-api"
            ]
          ]
        },
        "VpcId": {
          "Ref": "networkobjectextensionVpcB3285E3D"
        },
        "PrivateDnsEnabled": true,
        "SecurityGroupIds": [
          {
            "Fn::GetAtt": [
              "autoconfigapiapigwvpcendpointsgD9540BF3",
              "GroupId"
            ]
          }
        ],
        "SubnetIds": [
          {
            "Ref": "networkobjectextensionVpcPrivateSubnetASubnet1SubnetE5FAF545"
          },
          {
            "Ref": "networkobjectextensionVpcPrivateSubnetASubnet2SubnetCEA49EBF"
          }
        ],
        "VpcEndpointType": "Interface"
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/api-vpc-endpoint/Resource"
      }
    },
    "autoconfigapiSecurityGroup842A12D5": {
      "Type": "AWS::EC2::SecurityGroup",
      "Properties": {
        "GroupDescription": "Security group for fire fly Lambda Function FirewallObjectExtensionSolutionStackautoconfigapi089C04C9",
        "SecurityGroupEgress": [
          {
            "CidrIp": "0.0.0.0/0",
            "Description": "Allow all outbound traffic by default",
            "IpProtocol": "-1"
          }
        ],
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ],
        "VpcId": {
          "Ref": "networkobjectextensionVpcB3285E3D"
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/SecurityGroup/Resource"
      }
    },
    "autoconfigapiapiFunctionDLQ0A903B94": {
      "Type": "AWS::SQS::Queue",
      "Properties": {
        "KmsMasterKeyId": "alias/aws/sqs",
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/apiFunctionDLQ/Resource"
      }
    },
    "autoconfigapiautoConfig13F74724": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Code": {
          "S3Bucket": {
            "Fn::Sub": "solutions-${AWS::Region}"
          },
          "S3Key": "dynamic-object-and-rule-extensions-for-aws-network-firewall/v1.1.2/asset12b2f911217e495b645a5975f67efea44a72b54167383ce75b02f6d350a9c53a.zip"
        },
        "Role": {
          "Fn::GetAtt": [
            "autoconfigapiExecutionRole3A140D76",
            "Arn"
          ]
        },
        "DeadLetterConfig": {
          "TargetArn": {
            "Fn::GetAtt": [
              "autoconfigapiapiFunctionDLQ0A903B94",
              "Arn"
            ]
          }
        },
        "Environment": {
          "Variables": {
            "RULES_TABLE_NAME": {
              "Ref": "DataSourcesRulesTable1F07B779"
            },
            "OBJECTS_TABLE_NAME": {
              "Ref": "DataSourcesObjectsTable3C1B7D58"
            },
            "RULEBUNDLES_TABLE_NAME": {
              "Ref": "DataSourcesRuleBundlesTableEC40370C"
            },
            "AUDITS_TABLE_NAME": {
              "Ref": "DataSourcesAuditsTable1F631F88"
            },
            "LOGLEVEL": "DEBUG",
            "DEFAULT_AGGREGATOR_NAME": "org-replicator",
            "OPA_POLICY_LIST": "forbidden_cross_object_reference,forbidden_create_modify_deny_rules_for_non_admin",
            "CROSS_ACCOUNT_CONFIG_ROLE": "",
            "CROSS_ACCOUNT_ANFW_ROLE": "",
            "SOLUTION_ID": "SO0196",
            "VERSION": "v1.1.2",
            "ADMINISTRATOR_ROLE": {
              "Fn::GetAtt": [
                "autoconfigapiapiadminrole61E8F682",
                "Arn"
              ]
            },
            "APPLICATION_OWNER_ROLES": {
              "Fn::GetAtt": [
                "autoconfigapiapiappownerrole851CB441",
                "Arn"
              ]
            }
          }
        },
        "Handler": "app.lambdaHandler",
        "MemorySize": 3008,
        "Runtime": "nodejs14.x",
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ],
        "Timeout": 30,
        "TracingConfig": {
          "Mode": "Active"
        },
        "VpcConfig": {
          "SecurityGroupIds": [
            {
              "Fn::GetAtt": [
                "autoconfigapiSecurityGroup842A12D5",
                "GroupId"
              ]
            }
          ],
          "SubnetIds": [
            {
              "Ref": "networkobjectextensionVpcPrivateSubnetASubnet1SubnetE5FAF545"
            },
            {
              "Ref": "networkobjectextensionVpcPrivateSubnetASubnet2SubnetCEA49EBF"
            }
          ]
        }
      },
      "DependsOn": [
        "autoconfigapiExecutionRoleDefaultPolicyAC210897",
        "autoconfigapiExecutionRole3A140D76",
        "networkobjectextensionVpcPrivateSubnetASubnet1DefaultRouteD53AF693",
        "networkobjectextensionVpcPrivateSubnetASubnet1RouteTableAssociation4919BA17",
        "networkobjectextensionVpcPrivateSubnetASubnet2DefaultRoute68DC2904",
        "networkobjectextensionVpcPrivateSubnetASubnet2RouteTableAssociationDC02E6FE"
      ],
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/autoConfig/Resource",
        "aws:asset:path": "asset.12b2f911217e495b645a5975f67efea44a72b54167383ce75b02f6d350a9c53a",
        "aws:asset:is-bundled": false,
        "aws:asset:property": "Code"
      }
    },
    "autoconfigapiapiadminrole61E8F682": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "AWS": {
                  "Fn::Join": [
                    "",
                    [
                      "arn:",
                      {
                        "Ref": "AWS::Partition"
                      },
                      ":iam::",
                      {
                        "Ref": "AWS::AccountId"
                      },
                      ":root"
                    ]
                  ]
                }
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "RoleName": {
          "Fn::Join": [
            "",
            [
              "ObjectExtensionSecOpsAdminRole-",
              {
                "Ref": "AWS::Region"
              }
            ]
          ]
        },
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/api-admin-role/Resource"
      }
    },
    "autoconfigapiapiadminroleDefaultPolicy9D264F5A": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "execute-api:Invoke",
              "Effect": "Allow",
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    "arn:aws:execute-api:",
                    {
                      "Ref": "AWS::Region"
                    },
                    ":",
                    {
                      "Ref": "AWS::AccountId"
                    },
                    ":",
                    {
                      "Ref": "autoconfigapiAPI373CEEE7"
                    },
                    "/*/*/*"
                  ]
                ]
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "autoconfigapiapiadminroleDefaultPolicy9D264F5A",
        "Roles": [
          {
            "Ref": "autoconfigapiapiadminrole61E8F682"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/api-admin-role/DefaultPolicy/Resource"
      }
    },
    "autoconfigapiapiappownerrole851CB441": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "AWS": {
                  "Fn::Join": [
                    "",
                    [
                      "arn:",
                      {
                        "Ref": "AWS::Partition"
                      },
                      ":iam::",
                      {
                        "Ref": "AWS::AccountId"
                      },
                      ":root"
                    ]
                  ]
                }
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/api-app-owner-role/Resource"
      }
    },
    "autoconfigapiVpcFlowLogsKeyDE2F82C3": {
      "Type": "AWS::KMS::Key",
      "Properties": {
        "KeyPolicy": {
          "Statement": [
            {
              "Action": "kms:*",
              "Effect": "Allow",
              "Principal": {
                "AWS": {
                  "Fn::Join": [
                    "",
                    [
                      "arn:",
                      {
                        "Ref": "AWS::Partition"
                      },
                      ":iam::",
                      {
                        "Ref": "AWS::AccountId"
                      },
                      ":root"
                    ]
                  ]
                }
              },
              "Resource": "*"
            },
            {
              "Action": [
                "kms:ReEncrypt",
                "kms:GenerateDataKey",
                "kms:Encrypt",
                "kms:DescribeKey",
                "kms:Decrypt"
              ],
              "Effect": "Allow",
              "Principal": {
                "Service": {
                  "Fn::Join": [
                    "",
                    [
                      "logs.",
                      {
                        "Ref": "AWS::Region"
                      },
                      ".amazonaws.com"
                    ]
                  ]
                }
              },
              "Resource": "*",
              "Sid": "Allow Access Logs to use the key"
            }
          ],
          "Version": "2012-10-17"
        },
        "EnableKeyRotation": true,
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/VpcFlowLogsKey/Resource"
      }
    },
    "autoconfigapiApiGatewayAccessLogs94F3AB07": {
      "Type": "AWS::Logs::LogGroup",
      "Properties": {
        "KmsKeyId": {
          "Fn::GetAtt": [
            "autoconfigapiVpcFlowLogsKeyDE2F82C3",
            "Arn"
          ]
        },
        "RetentionInDays": 731,
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain",
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/ApiGatewayAccessLogs/Resource"
      }
    },
    "autoconfigapiAPI373CEEE7": {
      "Type": "AWS::ApiGateway::RestApi",
      "Properties": {
        "Description": "Rest Api for Firewall config",
        "EndpointConfiguration": {
          "Types": [
            "PRIVATE"
          ],
          "VpcEndpointIds": [
            {
              "Ref": "autoconfigapiapivpcendpointA8A984B6"
            }
          ]
        },
        "Name": "NetworkFirewallObjectExtension-API",
        "Policy": {
          "Statement": [
            {
              "Action": "execute-api:Invoke",
              "Condition": {
                "StringEquals": {
                  "aws:PrincipalArn": {
                    "Fn::GetAtt": [
                      "autoconfigapiapiadminrole61E8F682",
                      "Arn"
                    ]
                  }
                }
              },
              "Effect": "Allow",
              "Principal": {
                "AWS": "*"
              },
              "Resource": [
                "execute-api:/*/GET/audits",
                "execute-api:/*/POST/objects",
                "execute-api:/*/GET/objects",
                "execute-api:/*/GET/objects/{id}",
                "execute-api:/*/PUT/objects/{id}",
                "execute-api:/*/DELETE/objects/{id}",
                "execute-api:/*/POST/rulebundles",
                "execute-api:/*/GET/rulebundles",
                "execute-api:/*/PUT/rulebundles/{id}",
                "execute-api:/*/GET/rulebundles/{id}",
                "execute-api:/*/POST/rulebundles/{id}/rules",
                "execute-api:/*/GET/rulebundles/{id}/rules",
                "execute-api:/*/GET/rulebundles/{id}/rules/{ruleId}",
                "execute-api:/*/PUT/rulebundles/{id}/rules/{ruleId}",
                "execute-api:/*/DELETE/rulebundles/{id}/rules/{ruleId}"
              ]
            },
            {
              "Action": "execute-api:Invoke",
              "Condition": {
                "ForAllValues:StringNotEquals": {
                  "aws:PrincipalArn": [
                    {
                      "Fn::GetAtt": [
                        "autoconfigapiapiadminrole61E8F682",
                        "Arn"
                      ]
                    },
                    {
                      "Fn::GetAtt": [
                        "CanaryExecutionRole07ED3987",
                        "Arn"
                      ]
                    }
                  ]
                }
              },
              "Effect": "Deny",
              "Principal": {
                "AWS": "*"
              },
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    "arn:aws:execute-api:",
                    {
                      "Ref": "AWS::Region"
                    },
                    ":",
                    {
                      "Ref": "AWS::AccountId"
                    },
                    ":*/*/*"
                  ]
                ]
              }
            },
            {
              "Action": "execute-api:Invoke",
              "Condition": {
                "StringNotEquals": {
                  "aws:sourceVpc": {
                    "Ref": "networkobjectextensionVpcB3285E3D"
                  }
                }
              },
              "Effect": "Deny",
              "Principal": {
                "AWS": "*"
              },
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    "arn:aws:execute-api:",
                    {
                      "Ref": "AWS::Region"
                    },
                    ":",
                    {
                      "Ref": "AWS::AccountId"
                    },
                    ":*/*/*/*"
                  ]
                ]
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Resource"
      }
    },
    "autoconfigapiAPICloudWatchRoleEA4D305D": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "apigateway.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "ManagedPolicyArns": [
          {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":iam::aws:policy/service-role/AmazonAPIGatewayPushToCloudWatchLogs"
              ]
            ]
          }
        ],
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain",
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/CloudWatchRole/Resource"
      }
    },
    "autoconfigapiAPIAccount4D624B77": {
      "Type": "AWS::ApiGateway::Account",
      "Properties": {
        "CloudWatchRoleArn": {
          "Fn::GetAtt": [
            "autoconfigapiAPICloudWatchRoleEA4D305D",
            "Arn"
          ]
        }
      },
      "DependsOn": [
        "autoconfigapiAPI373CEEE7"
      ],
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain",
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Account"
      }
    },
    "autoconfigapiAPIDeployment11680BD9372f3091ab411da16742138f9c8f5a18": {
      "Type": "AWS::ApiGateway::Deployment",
      "Properties": {
        "RestApiId": {
          "Ref": "autoconfigapiAPI373CEEE7"
        },
        "Description": "Rest Api for Firewall config"
      },
      "DependsOn": [
        "autoconfigapiAPIauditsGETD57B8DA6",
        "autoconfigapiAPIauditsOPTIONSE2CB20D4",
        "autoconfigapiAPIaudits03DCB3D4",
        "autoconfigapiAPIobjectsidDELETEBE572E18",
        "autoconfigapiAPIobjectsidGET4D59E25D",
        "autoconfigapiAPIobjectsidOPTIONS95DFC6AF",
        "autoconfigapiAPIobjectsidPUT68EBBE80",
        "autoconfigapiAPIobjectsidE222F0A4",
        "autoconfigapiAPIobjectsGETC365091C",
        "autoconfigapiAPIobjectsOPTIONSE5BF1847",
        "autoconfigapiAPIobjectsPOST469CD1A1",
        "autoconfigapiAPIobjects84BAEDAB",
        "autoconfigapiAPIOPTIONS9D403FA4",
        "autoconfigapiAPIrulebundlesidDELETE3E34B751",
        "autoconfigapiAPIrulebundlesidGET996A4D15",
        "autoconfigapiAPIrulebundlesidOPTIONS6324A884",
        "autoconfigapiAPIrulebundlesidPUT6CA26AA3",
        "autoconfigapiAPIrulebundlesid6A1E18C6",
        "autoconfigapiAPIrulebundlesidrulesruleIdDELETEB6D51F5E",
        "autoconfigapiAPIrulebundlesidrulesruleIdGETD301FF36",
        "autoconfigapiAPIrulebundlesidrulesruleIdOPTIONSEC62CF6B",
        "autoconfigapiAPIrulebundlesidrulesruleIdPUTE81C53E8",
        "autoconfigapiAPIrulebundlesidrulesruleId9AC1DF55",
        "autoconfigapiAPIrulebundlesidrulesGETBD86CD2C",
        "autoconfigapiAPIrulebundlesidrulesOPTIONSECCBF5EE",
        "autoconfigapiAPIrulebundlesidrulesPOSTA02706B0",
        "autoconfigapiAPIrulebundlesidrules01D9743B",
        "autoconfigapiAPIrulebundlesGETF0DBC5AB",
        "autoconfigapiAPIrulebundlesOPTIONS25BF9971",
        "autoconfigapiAPIrulebundlesPOSTA17ADCD4",
        "autoconfigapiAPIrulebundles4FAA7FE8"
      ],
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Deployment/Resource"
      }
    },
    "autoconfigapiAPIDeploymentStageprod291BEEF2": {
      "Type": "AWS::ApiGateway::Stage",
      "Properties": {
        "RestApiId": {
          "Ref": "autoconfigapiAPI373CEEE7"
        },
        "AccessLogSetting": {
          "DestinationArn": {
            "Fn::GetAtt": [
              "autoconfigapiApiGatewayAccessLogs94F3AB07",
              "Arn"
            ]
          },
          "Format": "{\"requestId\":\"$context.requestId\",\"ip\":\"$context.identity.sourceIp\",\"user\":\"$context.identity.user\",\"caller\":\"$context.identity.caller\",\"requestTime\":\"$context.requestTime\",\"httpMethod\":\"$context.httpMethod\",\"resourcePath\":\"$context.resourcePath\",\"status\":\"$context.status\",\"protocol\":\"$context.protocol\",\"responseLength\":\"$context.responseLength\"}"
        },
        "DeploymentId": {
          "Ref": "autoconfigapiAPIDeployment11680BD9372f3091ab411da16742138f9c8f5a18"
        },
        "MethodSettings": [
          {
            "DataTraceEnabled": false,
            "HttpMethod": "*",
            "MetricsEnabled": true,
            "ResourcePath": "/*"
          }
        ],
        "StageName": "prod",
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ],
        "TracingEnabled": true
      },
      "DependsOn": [
        "autoconfigapiAPIAccount4D624B77"
      ],
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/DeploymentStage.prod/Resource"
      }
    },
    "autoconfigapiAPIOPTIONS9D403FA4": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "HttpMethod": "OPTIONS",
        "ResourceId": {
          "Fn::GetAtt": [
            "autoconfigapiAPI373CEEE7",
            "RootResourceId"
          ]
        },
        "RestApiId": {
          "Ref": "autoconfigapiAPI373CEEE7"
        },
        "AuthorizationType": "NONE",
        "Integration": {
          "IntegrationResponses": [
            {
              "ResponseParameters": {
                "method.response.header.Access-Control-Allow-Headers": "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token,X-Amz-User-Agent'",
                "method.response.header.Access-Control-Allow-Origin": "'*'",
                "method.response.header.Access-Control-Allow-Methods": "'OPTIONS,GET,PUT,POST,DELETE,PATCH,HEAD'"
              },
              "StatusCode": "204"
            }
          ],
          "RequestTemplates": {
            "application/json": "{ statusCode: 200 }"
          },
          "Type": "MOCK"
        },
        "MethodResponses": [
          {
            "ResponseParameters": {
              "method.response.header.Access-Control-Allow-Headers": true,
              "method.response.header.Access-Control-Allow-Origin": true,
              "method.response.header.Access-Control-Allow-Methods": true
            },
            "StatusCode": "204"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/OPTIONS/Resource"
      }
    },
    "autoconfigapiAPIrulebundles4FAA7FE8": {
      "Type": "AWS::ApiGateway::Resource",
      "Properties": {
        "ParentId": {
          "Fn::GetAtt": [
            "autoconfigapiAPI373CEEE7",
            "RootResourceId"
          ]
        },
        "PathPart": "rulebundles",
        "RestApiId": {
          "Ref": "autoconfigapiAPI373CEEE7"
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/rulebundles/Resource"
      }
    },
    "autoconfigapiAPIrulebundlesOPTIONS25BF9971": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "HttpMethod": "OPTIONS",
        "ResourceId": {
          "Ref": "autoconfigapiAPIrulebundles4FAA7FE8"
        },
        "RestApiId": {
          "Ref": "autoconfigapiAPI373CEEE7"
        },
        "AuthorizationType": "NONE",
        "Integration": {
          "IntegrationResponses": [
            {
              "ResponseParameters": {
                "method.response.header.Access-Control-Allow-Headers": "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token,X-Amz-User-Agent'",
                "method.response.header.Access-Control-Allow-Origin": "'*'",
                "method.response.header.Access-Control-Allow-Methods": "'OPTIONS,GET,PUT,POST,DELETE,PATCH,HEAD'"
              },
              "StatusCode": "204"
            }
          ],
          "RequestTemplates": {
            "application/json": "{ statusCode: 200 }"
          },
          "Type": "MOCK"
        },
        "MethodResponses": [
          {
            "ResponseParameters": {
              "method.response.header.Access-Control-Allow-Headers": true,
              "method.response.header.Access-Control-Allow-Origin": true,
              "method.response.header.Access-Control-Allow-Methods": true
            },
            "StatusCode": "204"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/rulebundles/OPTIONS/Resource"
      }
    },
    "autoconfigapiAPIrulebundlesGETApiPermissionFirewallObjectExtensionSolutionStackautoconfigapiAPI5B043FC0GETrulebundlesEE40118F": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "autoconfigapiautoConfig13F74724",
            "Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "autoconfigapiAPI373CEEE7"
              },
              "/",
              {
                "Ref": "autoconfigapiAPIDeploymentStageprod291BEEF2"
              },
              "/GET/rulebundles"
            ]
          ]
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/rulebundles/GET/ApiPermission.FirewallObjectExtensionSolutionStackautoconfigapiAPI5B043FC0.GET..rulebundles"
      }
    },
    "autoconfigapiAPIrulebundlesGETF0DBC5AB": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "HttpMethod": "GET",
        "ResourceId": {
          "Ref": "autoconfigapiAPIrulebundles4FAA7FE8"
        },
        "RestApiId": {
          "Ref": "autoconfigapiAPI373CEEE7"
        },
        "AuthorizationType": "AWS_IAM",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "autoconfigapiautoConfig13F74724",
                    "Arn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/rulebundles/GET/Resource"
      }
    },
    "autoconfigapiAPIrulebundlesPOSTApiPermissionFirewallObjectExtensionSolutionStackautoconfigapiAPI5B043FC0POSTrulebundlesBD41F18D": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "autoconfigapiautoConfig13F74724",
            "Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "autoconfigapiAPI373CEEE7"
              },
              "/",
              {
                "Ref": "autoconfigapiAPIDeploymentStageprod291BEEF2"
              },
              "/POST/rulebundles"
            ]
          ]
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/rulebundles/POST/ApiPermission.FirewallObjectExtensionSolutionStackautoconfigapiAPI5B043FC0.POST..rulebundles"
      }
    },
    "autoconfigapiAPIrulebundlesPOSTA17ADCD4": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "HttpMethod": "POST",
        "ResourceId": {
          "Ref": "autoconfigapiAPIrulebundles4FAA7FE8"
        },
        "RestApiId": {
          "Ref": "autoconfigapiAPI373CEEE7"
        },
        "AuthorizationType": "AWS_IAM",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "autoconfigapiautoConfig13F74724",
                    "Arn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/rulebundles/POST/Resource"
      }
    },
    "autoconfigapiAPIrulebundlesid6A1E18C6": {
      "Type": "AWS::ApiGateway::Resource",
      "Properties": {
        "ParentId": {
          "Ref": "autoconfigapiAPIrulebundles4FAA7FE8"
        },
        "PathPart": "{id}",
        "RestApiId": {
          "Ref": "autoconfigapiAPI373CEEE7"
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/rulebundles/{id}/Resource"
      }
    },
    "autoconfigapiAPIrulebundlesidOPTIONS6324A884": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "HttpMethod": "OPTIONS",
        "ResourceId": {
          "Ref": "autoconfigapiAPIrulebundlesid6A1E18C6"
        },
        "RestApiId": {
          "Ref": "autoconfigapiAPI373CEEE7"
        },
        "AuthorizationType": "NONE",
        "Integration": {
          "IntegrationResponses": [
            {
              "ResponseParameters": {
                "method.response.header.Access-Control-Allow-Headers": "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token,X-Amz-User-Agent'",
                "method.response.header.Access-Control-Allow-Origin": "'*'",
                "method.response.header.Access-Control-Allow-Methods": "'OPTIONS,GET,PUT,POST,DELETE,PATCH,HEAD'"
              },
              "StatusCode": "204"
            }
          ],
          "RequestTemplates": {
            "application/json": "{ statusCode: 200 }"
          },
          "Type": "MOCK"
        },
        "MethodResponses": [
          {
            "ResponseParameters": {
              "method.response.header.Access-Control-Allow-Headers": true,
              "method.response.header.Access-Control-Allow-Origin": true,
              "method.response.header.Access-Control-Allow-Methods": true
            },
            "StatusCode": "204"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/rulebundles/{id}/OPTIONS/Resource"
      }
    },
    "autoconfigapiAPIrulebundlesidGETApiPermissionFirewallObjectExtensionSolutionStackautoconfigapiAPI5B043FC0GETrulebundlesidE74972B1": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "autoconfigapiautoConfig13F74724",
            "Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "autoconfigapiAPI373CEEE7"
              },
              "/",
              {
                "Ref": "autoconfigapiAPIDeploymentStageprod291BEEF2"
              },
              "/GET/rulebundles/*"
            ]
          ]
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/rulebundles/{id}/GET/ApiPermission.FirewallObjectExtensionSolutionStackautoconfigapiAPI5B043FC0.GET..rulebundles.{id}"
      }
    },
    "autoconfigapiAPIrulebundlesidGET996A4D15": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "HttpMethod": "GET",
        "ResourceId": {
          "Ref": "autoconfigapiAPIrulebundlesid6A1E18C6"
        },
        "RestApiId": {
          "Ref": "autoconfigapiAPI373CEEE7"
        },
        "AuthorizationType": "AWS_IAM",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "autoconfigapiautoConfig13F74724",
                    "Arn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/rulebundles/{id}/GET/Resource"
      }
    },
    "autoconfigapiAPIrulebundlesidPUTApiPermissionFirewallObjectExtensionSolutionStackautoconfigapiAPI5B043FC0PUTrulebundlesid213CB163": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "autoconfigapiautoConfig13F74724",
            "Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "autoconfigapiAPI373CEEE7"
              },
              "/",
              {
                "Ref": "autoconfigapiAPIDeploymentStageprod291BEEF2"
              },
              "/PUT/rulebundles/*"
            ]
          ]
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/rulebundles/{id}/PUT/ApiPermission.FirewallObjectExtensionSolutionStackautoconfigapiAPI5B043FC0.PUT..rulebundles.{id}"
      }
    },
    "autoconfigapiAPIrulebundlesidPUT6CA26AA3": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "HttpMethod": "PUT",
        "ResourceId": {
          "Ref": "autoconfigapiAPIrulebundlesid6A1E18C6"
        },
        "RestApiId": {
          "Ref": "autoconfigapiAPI373CEEE7"
        },
        "AuthorizationType": "AWS_IAM",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "autoconfigapiautoConfig13F74724",
                    "Arn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/rulebundles/{id}/PUT/Resource"
      }
    },
    "autoconfigapiAPIrulebundlesidDELETEApiPermissionFirewallObjectExtensionSolutionStackautoconfigapiAPI5B043FC0DELETErulebundlesid499A0BA7": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "autoconfigapiautoConfig13F74724",
            "Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "autoconfigapiAPI373CEEE7"
              },
              "/",
              {
                "Ref": "autoconfigapiAPIDeploymentStageprod291BEEF2"
              },
              "/DELETE/rulebundles/*"
            ]
          ]
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/rulebundles/{id}/DELETE/ApiPermission.FirewallObjectExtensionSolutionStackautoconfigapiAPI5B043FC0.DELETE..rulebundles.{id}"
      }
    },
    "autoconfigapiAPIrulebundlesidDELETE3E34B751": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "HttpMethod": "DELETE",
        "ResourceId": {
          "Ref": "autoconfigapiAPIrulebundlesid6A1E18C6"
        },
        "RestApiId": {
          "Ref": "autoconfigapiAPI373CEEE7"
        },
        "AuthorizationType": "AWS_IAM",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "autoconfigapiautoConfig13F74724",
                    "Arn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/rulebundles/{id}/DELETE/Resource"
      }
    },
    "autoconfigapiAPIrulebundlesidrules01D9743B": {
      "Type": "AWS::ApiGateway::Resource",
      "Properties": {
        "ParentId": {
          "Ref": "autoconfigapiAPIrulebundlesid6A1E18C6"
        },
        "PathPart": "rules",
        "RestApiId": {
          "Ref": "autoconfigapiAPI373CEEE7"
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/rulebundles/{id}/rules/Resource"
      }
    },
    "autoconfigapiAPIrulebundlesidrulesOPTIONSECCBF5EE": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "HttpMethod": "OPTIONS",
        "ResourceId": {
          "Ref": "autoconfigapiAPIrulebundlesidrules01D9743B"
        },
        "RestApiId": {
          "Ref": "autoconfigapiAPI373CEEE7"
        },
        "AuthorizationType": "NONE",
        "Integration": {
          "IntegrationResponses": [
            {
              "ResponseParameters": {
                "method.response.header.Access-Control-Allow-Headers": "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token,X-Amz-User-Agent'",
                "method.response.header.Access-Control-Allow-Origin": "'*'",
                "method.response.header.Access-Control-Allow-Methods": "'OPTIONS,GET,PUT,POST,DELETE,PATCH,HEAD'"
              },
              "StatusCode": "204"
            }
          ],
          "RequestTemplates": {
            "application/json": "{ statusCode: 200 }"
          },
          "Type": "MOCK"
        },
        "MethodResponses": [
          {
            "ResponseParameters": {
              "method.response.header.Access-Control-Allow-Headers": true,
              "method.response.header.Access-Control-Allow-Origin": true,
              "method.response.header.Access-Control-Allow-Methods": true
            },
            "StatusCode": "204"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/rulebundles/{id}/rules/OPTIONS/Resource"
      }
    },
    "autoconfigapiAPIrulebundlesidrulesPOSTApiPermissionFirewallObjectExtensionSolutionStackautoconfigapiAPI5B043FC0POSTrulebundlesidrules9D10DDBE": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "autoconfigapiautoConfig13F74724",
            "Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "autoconfigapiAPI373CEEE7"
              },
              "/",
              {
                "Ref": "autoconfigapiAPIDeploymentStageprod291BEEF2"
              },
              "/POST/rulebundles/*/rules"
            ]
          ]
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/rulebundles/{id}/rules/POST/ApiPermission.FirewallObjectExtensionSolutionStackautoconfigapiAPI5B043FC0.POST..rulebundles.{id}.rules"
      }
    },
    "autoconfigapiAPIrulebundlesidrulesPOSTA02706B0": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "HttpMethod": "POST",
        "ResourceId": {
          "Ref": "autoconfigapiAPIrulebundlesidrules01D9743B"
        },
        "RestApiId": {
          "Ref": "autoconfigapiAPI373CEEE7"
        },
        "AuthorizationType": "AWS_IAM",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "autoconfigapiautoConfig13F74724",
                    "Arn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/rulebundles/{id}/rules/POST/Resource"
      }
    },
    "autoconfigapiAPIrulebundlesidrulesGETApiPermissionFirewallObjectExtensionSolutionStackautoconfigapiAPI5B043FC0GETrulebundlesidrulesCF8D7462": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "autoconfigapiautoConfig13F74724",
            "Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "autoconfigapiAPI373CEEE7"
              },
              "/",
              {
                "Ref": "autoconfigapiAPIDeploymentStageprod291BEEF2"
              },
              "/GET/rulebundles/*/rules"
            ]
          ]
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/rulebundles/{id}/rules/GET/ApiPermission.FirewallObjectExtensionSolutionStackautoconfigapiAPI5B043FC0.GET..rulebundles.{id}.rules"
      }
    },
    "autoconfigapiAPIrulebundlesidrulesGETBD86CD2C": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "HttpMethod": "GET",
        "ResourceId": {
          "Ref": "autoconfigapiAPIrulebundlesidrules01D9743B"
        },
        "RestApiId": {
          "Ref": "autoconfigapiAPI373CEEE7"
        },
        "AuthorizationType": "AWS_IAM",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "autoconfigapiautoConfig13F74724",
                    "Arn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/rulebundles/{id}/rules/GET/Resource"
      }
    },
    "autoconfigapiAPIrulebundlesidrulesruleId9AC1DF55": {
      "Type": "AWS::ApiGateway::Resource",
      "Properties": {
        "ParentId": {
          "Ref": "autoconfigapiAPIrulebundlesidrules01D9743B"
        },
        "PathPart": "{ruleId}",
        "RestApiId": {
          "Ref": "autoconfigapiAPI373CEEE7"
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/rulebundles/{id}/rules/{ruleId}/Resource"
      }
    },
    "autoconfigapiAPIrulebundlesidrulesruleIdOPTIONSEC62CF6B": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "HttpMethod": "OPTIONS",
        "ResourceId": {
          "Ref": "autoconfigapiAPIrulebundlesidrulesruleId9AC1DF55"
        },
        "RestApiId": {
          "Ref": "autoconfigapiAPI373CEEE7"
        },
        "AuthorizationType": "NONE",
        "Integration": {
          "IntegrationResponses": [
            {
              "ResponseParameters": {
                "method.response.header.Access-Control-Allow-Headers": "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token,X-Amz-User-Agent'",
                "method.response.header.Access-Control-Allow-Origin": "'*'",
                "method.response.header.Access-Control-Allow-Methods": "'OPTIONS,GET,PUT,POST,DELETE,PATCH,HEAD'"
              },
              "StatusCode": "204"
            }
          ],
          "RequestTemplates": {
            "application/json": "{ statusCode: 200 }"
          },
          "Type": "MOCK"
        },
        "MethodResponses": [
          {
            "ResponseParameters": {
              "method.response.header.Access-Control-Allow-Headers": true,
              "method.response.header.Access-Control-Allow-Origin": true,
              "method.response.header.Access-Control-Allow-Methods": true
            },
            "StatusCode": "204"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/rulebundles/{id}/rules/{ruleId}/OPTIONS/Resource"
      }
    },
    "autoconfigapiAPIrulebundlesidrulesruleIdPUTApiPermissionFirewallObjectExtensionSolutionStackautoconfigapiAPI5B043FC0PUTrulebundlesidrulesruleId239F3DE9": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "autoconfigapiautoConfig13F74724",
            "Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "autoconfigapiAPI373CEEE7"
              },
              "/",
              {
                "Ref": "autoconfigapiAPIDeploymentStageprod291BEEF2"
              },
              "/PUT/rulebundles/*/rules/*"
            ]
          ]
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/rulebundles/{id}/rules/{ruleId}/PUT/ApiPermission.FirewallObjectExtensionSolutionStackautoconfigapiAPI5B043FC0.PUT..rulebundles.{id}.rules.{ruleId}"
      }
    },
    "autoconfigapiAPIrulebundlesidrulesruleIdPUTE81C53E8": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "HttpMethod": "PUT",
        "ResourceId": {
          "Ref": "autoconfigapiAPIrulebundlesidrulesruleId9AC1DF55"
        },
        "RestApiId": {
          "Ref": "autoconfigapiAPI373CEEE7"
        },
        "AuthorizationType": "AWS_IAM",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "autoconfigapiautoConfig13F74724",
                    "Arn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/rulebundles/{id}/rules/{ruleId}/PUT/Resource"
      }
    },
    "autoconfigapiAPIrulebundlesidrulesruleIdGETApiPermissionFirewallObjectExtensionSolutionStackautoconfigapiAPI5B043FC0GETrulebundlesidrulesruleId145A6E21": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "autoconfigapiautoConfig13F74724",
            "Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "autoconfigapiAPI373CEEE7"
              },
              "/",
              {
                "Ref": "autoconfigapiAPIDeploymentStageprod291BEEF2"
              },
              "/GET/rulebundles/*/rules/*"
            ]
          ]
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/rulebundles/{id}/rules/{ruleId}/GET/ApiPermission.FirewallObjectExtensionSolutionStackautoconfigapiAPI5B043FC0.GET..rulebundles.{id}.rules.{ruleId}"
      }
    },
    "autoconfigapiAPIrulebundlesidrulesruleIdGETD301FF36": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "HttpMethod": "GET",
        "ResourceId": {
          "Ref": "autoconfigapiAPIrulebundlesidrulesruleId9AC1DF55"
        },
        "RestApiId": {
          "Ref": "autoconfigapiAPI373CEEE7"
        },
        "AuthorizationType": "AWS_IAM",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "autoconfigapiautoConfig13F74724",
                    "Arn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/rulebundles/{id}/rules/{ruleId}/GET/Resource"
      }
    },
    "autoconfigapiAPIrulebundlesidrulesruleIdDELETEApiPermissionFirewallObjectExtensionSolutionStackautoconfigapiAPI5B043FC0DELETErulebundlesidrulesruleId32E85F96": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "autoconfigapiautoConfig13F74724",
            "Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "autoconfigapiAPI373CEEE7"
              },
              "/",
              {
                "Ref": "autoconfigapiAPIDeploymentStageprod291BEEF2"
              },
              "/DELETE/rulebundles/*/rules/*"
            ]
          ]
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/rulebundles/{id}/rules/{ruleId}/DELETE/ApiPermission.FirewallObjectExtensionSolutionStackautoconfigapiAPI5B043FC0.DELETE..rulebundles.{id}.rules.{ruleId}"
      }
    },
    "autoconfigapiAPIrulebundlesidrulesruleIdDELETEB6D51F5E": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "HttpMethod": "DELETE",
        "ResourceId": {
          "Ref": "autoconfigapiAPIrulebundlesidrulesruleId9AC1DF55"
        },
        "RestApiId": {
          "Ref": "autoconfigapiAPI373CEEE7"
        },
        "AuthorizationType": "AWS_IAM",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "autoconfigapiautoConfig13F74724",
                    "Arn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/rulebundles/{id}/rules/{ruleId}/DELETE/Resource"
      }
    },
    "autoconfigapiAPIobjects84BAEDAB": {
      "Type": "AWS::ApiGateway::Resource",
      "Properties": {
        "ParentId": {
          "Fn::GetAtt": [
            "autoconfigapiAPI373CEEE7",
            "RootResourceId"
          ]
        },
        "PathPart": "objects",
        "RestApiId": {
          "Ref": "autoconfigapiAPI373CEEE7"
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/objects/Resource"
      }
    },
    "autoconfigapiAPIobjectsOPTIONSE5BF1847": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "HttpMethod": "OPTIONS",
        "ResourceId": {
          "Ref": "autoconfigapiAPIobjects84BAEDAB"
        },
        "RestApiId": {
          "Ref": "autoconfigapiAPI373CEEE7"
        },
        "AuthorizationType": "NONE",
        "Integration": {
          "IntegrationResponses": [
            {
              "ResponseParameters": {
                "method.response.header.Access-Control-Allow-Headers": "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token,X-Amz-User-Agent'",
                "method.response.header.Access-Control-Allow-Origin": "'*'",
                "method.response.header.Access-Control-Allow-Methods": "'OPTIONS,GET,PUT,POST,DELETE,PATCH,HEAD'"
              },
              "StatusCode": "204"
            }
          ],
          "RequestTemplates": {
            "application/json": "{ statusCode: 200 }"
          },
          "Type": "MOCK"
        },
        "MethodResponses": [
          {
            "ResponseParameters": {
              "method.response.header.Access-Control-Allow-Headers": true,
              "method.response.header.Access-Control-Allow-Origin": true,
              "method.response.header.Access-Control-Allow-Methods": true
            },
            "StatusCode": "204"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/objects/OPTIONS/Resource"
      }
    },
    "autoconfigapiAPIobjectsGETApiPermissionFirewallObjectExtensionSolutionStackautoconfigapiAPI5B043FC0GETobjects0648F221": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "autoconfigapiautoConfig13F74724",
            "Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "autoconfigapiAPI373CEEE7"
              },
              "/",
              {
                "Ref": "autoconfigapiAPIDeploymentStageprod291BEEF2"
              },
              "/GET/objects"
            ]
          ]
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/objects/GET/ApiPermission.FirewallObjectExtensionSolutionStackautoconfigapiAPI5B043FC0.GET..objects"
      }
    },
    "autoconfigapiAPIobjectsGETC365091C": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "HttpMethod": "GET",
        "ResourceId": {
          "Ref": "autoconfigapiAPIobjects84BAEDAB"
        },
        "RestApiId": {
          "Ref": "autoconfigapiAPI373CEEE7"
        },
        "AuthorizationType": "AWS_IAM",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "autoconfigapiautoConfig13F74724",
                    "Arn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/objects/GET/Resource"
      }
    },
    "autoconfigapiAPIobjectsPOSTApiPermissionFirewallObjectExtensionSolutionStackautoconfigapiAPI5B043FC0POSTobjects5259CB52": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "autoconfigapiautoConfig13F74724",
            "Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "autoconfigapiAPI373CEEE7"
              },
              "/",
              {
                "Ref": "autoconfigapiAPIDeploymentStageprod291BEEF2"
              },
              "/POST/objects"
            ]
          ]
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/objects/POST/ApiPermission.FirewallObjectExtensionSolutionStackautoconfigapiAPI5B043FC0.POST..objects"
      }
    },
    "autoconfigapiAPIobjectsPOST469CD1A1": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "HttpMethod": "POST",
        "ResourceId": {
          "Ref": "autoconfigapiAPIobjects84BAEDAB"
        },
        "RestApiId": {
          "Ref": "autoconfigapiAPI373CEEE7"
        },
        "AuthorizationType": "AWS_IAM",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "autoconfigapiautoConfig13F74724",
                    "Arn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/objects/POST/Resource"
      }
    },
    "autoconfigapiAPIobjectsidE222F0A4": {
      "Type": "AWS::ApiGateway::Resource",
      "Properties": {
        "ParentId": {
          "Ref": "autoconfigapiAPIobjects84BAEDAB"
        },
        "PathPart": "{id}",
        "RestApiId": {
          "Ref": "autoconfigapiAPI373CEEE7"
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/objects/{id}/Resource"
      }
    },
    "autoconfigapiAPIobjectsidOPTIONS95DFC6AF": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "HttpMethod": "OPTIONS",
        "ResourceId": {
          "Ref": "autoconfigapiAPIobjectsidE222F0A4"
        },
        "RestApiId": {
          "Ref": "autoconfigapiAPI373CEEE7"
        },
        "AuthorizationType": "NONE",
        "Integration": {
          "IntegrationResponses": [
            {
              "ResponseParameters": {
                "method.response.header.Access-Control-Allow-Headers": "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token,X-Amz-User-Agent'",
                "method.response.header.Access-Control-Allow-Origin": "'*'",
                "method.response.header.Access-Control-Allow-Methods": "'OPTIONS,GET,PUT,POST,DELETE,PATCH,HEAD'"
              },
              "StatusCode": "204"
            }
          ],
          "RequestTemplates": {
            "application/json": "{ statusCode: 200 }"
          },
          "Type": "MOCK"
        },
        "MethodResponses": [
          {
            "ResponseParameters": {
              "method.response.header.Access-Control-Allow-Headers": true,
              "method.response.header.Access-Control-Allow-Origin": true,
              "method.response.header.Access-Control-Allow-Methods": true
            },
            "StatusCode": "204"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/objects/{id}/OPTIONS/Resource"
      }
    },
    "autoconfigapiAPIobjectsidGETApiPermissionFirewallObjectExtensionSolutionStackautoconfigapiAPI5B043FC0GETobjectsidD1E73D9D": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "autoconfigapiautoConfig13F74724",
            "Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "autoconfigapiAPI373CEEE7"
              },
              "/",
              {
                "Ref": "autoconfigapiAPIDeploymentStageprod291BEEF2"
              },
              "/GET/objects/*"
            ]
          ]
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/objects/{id}/GET/ApiPermission.FirewallObjectExtensionSolutionStackautoconfigapiAPI5B043FC0.GET..objects.{id}"
      }
    },
    "autoconfigapiAPIobjectsidGET4D59E25D": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "HttpMethod": "GET",
        "ResourceId": {
          "Ref": "autoconfigapiAPIobjectsidE222F0A4"
        },
        "RestApiId": {
          "Ref": "autoconfigapiAPI373CEEE7"
        },
        "AuthorizationType": "AWS_IAM",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "autoconfigapiautoConfig13F74724",
                    "Arn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/objects/{id}/GET/Resource"
      }
    },
    "autoconfigapiAPIobjectsidPUTApiPermissionFirewallObjectExtensionSolutionStackautoconfigapiAPI5B043FC0PUTobjectsidF880F24B": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "autoconfigapiautoConfig13F74724",
            "Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "autoconfigapiAPI373CEEE7"
              },
              "/",
              {
                "Ref": "autoconfigapiAPIDeploymentStageprod291BEEF2"
              },
              "/PUT/objects/*"
            ]
          ]
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/objects/{id}/PUT/ApiPermission.FirewallObjectExtensionSolutionStackautoconfigapiAPI5B043FC0.PUT..objects.{id}"
      }
    },
    "autoconfigapiAPIobjectsidPUT68EBBE80": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "HttpMethod": "PUT",
        "ResourceId": {
          "Ref": "autoconfigapiAPIobjectsidE222F0A4"
        },
        "RestApiId": {
          "Ref": "autoconfigapiAPI373CEEE7"
        },
        "AuthorizationType": "AWS_IAM",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "autoconfigapiautoConfig13F74724",
                    "Arn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/objects/{id}/PUT/Resource"
      }
    },
    "autoconfigapiAPIobjectsidDELETEApiPermissionFirewallObjectExtensionSolutionStackautoconfigapiAPI5B043FC0DELETEobjectsidDF001DED": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "autoconfigapiautoConfig13F74724",
            "Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "autoconfigapiAPI373CEEE7"
              },
              "/",
              {
                "Ref": "autoconfigapiAPIDeploymentStageprod291BEEF2"
              },
              "/DELETE/objects/*"
            ]
          ]
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/objects/{id}/DELETE/ApiPermission.FirewallObjectExtensionSolutionStackautoconfigapiAPI5B043FC0.DELETE..objects.{id}"
      }
    },
    "autoconfigapiAPIobjectsidDELETEBE572E18": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "HttpMethod": "DELETE",
        "ResourceId": {
          "Ref": "autoconfigapiAPIobjectsidE222F0A4"
        },
        "RestApiId": {
          "Ref": "autoconfigapiAPI373CEEE7"
        },
        "AuthorizationType": "AWS_IAM",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "autoconfigapiautoConfig13F74724",
                    "Arn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/objects/{id}/DELETE/Resource"
      }
    },
    "autoconfigapiAPIaudits03DCB3D4": {
      "Type": "AWS::ApiGateway::Resource",
      "Properties": {
        "ParentId": {
          "Fn::GetAtt": [
            "autoconfigapiAPI373CEEE7",
            "RootResourceId"
          ]
        },
        "PathPart": "audits",
        "RestApiId": {
          "Ref": "autoconfigapiAPI373CEEE7"
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/audits/Resource"
      }
    },
    "autoconfigapiAPIauditsOPTIONSE2CB20D4": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "HttpMethod": "OPTIONS",
        "ResourceId": {
          "Ref": "autoconfigapiAPIaudits03DCB3D4"
        },
        "RestApiId": {
          "Ref": "autoconfigapiAPI373CEEE7"
        },
        "AuthorizationType": "NONE",
        "Integration": {
          "IntegrationResponses": [
            {
              "ResponseParameters": {
                "method.response.header.Access-Control-Allow-Headers": "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token,X-Amz-User-Agent'",
                "method.response.header.Access-Control-Allow-Origin": "'*'",
                "method.response.header.Access-Control-Allow-Methods": "'OPTIONS,GET,PUT,POST,DELETE,PATCH,HEAD'"
              },
              "StatusCode": "204"
            }
          ],
          "RequestTemplates": {
            "application/json": "{ statusCode: 200 }"
          },
          "Type": "MOCK"
        },
        "MethodResponses": [
          {
            "ResponseParameters": {
              "method.response.header.Access-Control-Allow-Headers": true,
              "method.response.header.Access-Control-Allow-Origin": true,
              "method.response.header.Access-Control-Allow-Methods": true
            },
            "StatusCode": "204"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/audits/OPTIONS/Resource"
      }
    },
    "autoconfigapiAPIauditsGETApiPermissionFirewallObjectExtensionSolutionStackautoconfigapiAPI5B043FC0GETauditsF8B7D8AC": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Fn::GetAtt": [
            "autoconfigapiautoConfig13F74724",
            "Arn"
          ]
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Join": [
            "",
            [
              "arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":execute-api:",
              {
                "Ref": "AWS::Region"
              },
              ":",
              {
                "Ref": "AWS::AccountId"
              },
              ":",
              {
                "Ref": "autoconfigapiAPI373CEEE7"
              },
              "/",
              {
                "Ref": "autoconfigapiAPIDeploymentStageprod291BEEF2"
              },
              "/GET/audits"
            ]
          ]
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/audits/GET/ApiPermission.FirewallObjectExtensionSolutionStackautoconfigapiAPI5B043FC0.GET..audits"
      }
    },
    "autoconfigapiAPIauditsGETD57B8DA6": {
      "Type": "AWS::ApiGateway::Method",
      "Properties": {
        "HttpMethod": "GET",
        "ResourceId": {
          "Ref": "autoconfigapiAPIaudits03DCB3D4"
        },
        "RestApiId": {
          "Ref": "autoconfigapiAPI373CEEE7"
        },
        "AuthorizationType": "AWS_IAM",
        "Integration": {
          "IntegrationHttpMethod": "POST",
          "Type": "AWS_PROXY",
          "Uri": {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":apigateway:",
                {
                  "Ref": "AWS::Region"
                },
                ":lambda:path/2015-03-31/functions/",
                {
                  "Fn::GetAtt": [
                    "autoconfigapiautoConfig13F74724",
                    "Arn"
                  ]
                },
                "/invocations"
              ]
            ]
          }
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/Default/audits/GET/Resource"
      }
    },
    "autoconfigapiAPIAPIusageplan0F795AB4": {
      "Type": "AWS::ApiGateway::UsagePlan",
      "Properties": {
        "ApiStages": [
          {
            "ApiId": {
              "Ref": "autoconfigapiAPI373CEEE7"
            },
            "Stage": {
              "Ref": "autoconfigapiAPIDeploymentStageprod291BEEF2"
            },
            "Throttle": {}
          }
        ],
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api/API/API-usage-plan/Resource"
      }
    },
    "autoconfigapidashboardservicedashboardautoconfigapidashboard7667462E": {
      "Type": "AWS::CloudWatch::Dashboard",
      "Properties": {
        "DashboardBody": {
          "Fn::Join": [
            "",
            [
              "{\"widgets\":[{\"type\":\"metric\",\"width\":6,\"height\":6,\"x\":0,\"y\":0,\"properties\":{\"view\":\"timeSeries\",\"title\":\"API Invocation\",\"region\":\"",
              {
                "Ref": "AWS::Region"
              },
              "\",\"metrics\":[[\"AWS/ApiGateway\",\"Count\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"GET\",\"Resource\",\"/audits\",\"Stage\",\"prod\",{\"label\":\"GET /audits\",\"stat\":\"Sum\"}],[\"AWS/ApiGateway\",\"Count\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"POST\",\"Resource\",\"/objects\",\"Stage\",\"prod\",{\"label\":\"POST /objects\",\"stat\":\"Sum\"}],[\"AWS/ApiGateway\",\"Count\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"GET\",\"Resource\",\"/objects\",\"Stage\",\"prod\",{\"label\":\"GET /objects\",\"stat\":\"Sum\"}],[\"AWS/ApiGateway\",\"Count\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"GET\",\"Resource\",\"/objects/{id}\",\"Stage\",\"prod\",{\"label\":\"GET /objects/{id}\",\"stat\":\"Sum\"}],[\"AWS/ApiGateway\",\"Count\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"PUT\",\"Resource\",\"/objects/{id}\",\"Stage\",\"prod\",{\"label\":\"PUT /objects/{id}\",\"stat\":\"Sum\"}],[\"AWS/ApiGateway\",\"Count\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"POST\",\"Resource\",\"/rulebundles\",\"Stage\",\"prod\",{\"label\":\"POST /rulebundles\",\"stat\":\"Sum\"}],[\"AWS/ApiGateway\",\"Count\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"GET\",\"Resource\",\"/rulebundles\",\"Stage\",\"prod\",{\"label\":\"GET /rulebundles\",\"stat\":\"Sum\"}],[\"AWS/ApiGateway\",\"Count\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"PUT\",\"Resource\",\"/rulebundles/{id}\",\"Stage\",\"prod\",{\"label\":\"PUT /rulebundles/{id}\",\"stat\":\"Sum\"}],[\"AWS/ApiGateway\",\"Count\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"GET\",\"Resource\",\"/rulebundles/{id}\",\"Stage\",\"prod\",{\"label\":\"GET /rulebundles/{id}\",\"stat\":\"Sum\"}],[\"AWS/ApiGateway\",\"Count\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"POST\",\"Resource\",\"/rulebundles/{id}/rules\",\"Stage\",\"prod\",{\"label\":\"POST /rulebundles/{id}/rules\",\"stat\":\"Sum\"}],[\"AWS/ApiGateway\",\"Count\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"GET\",\"Resource\",\"/rulebundles/{id}/rules\",\"Stage\",\"prod\",{\"label\":\"GET /rulebundles/{id}/rules\",\"stat\":\"Sum\"}],[\"AWS/ApiGateway\",\"Count\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"GET\",\"Resource\",\"/rulebundles/{id}/rules/{ruleId}\",\"Stage\",\"prod\",{\"label\":\"GET /rulebundles/{id}/rules/{ruleId}\",\"stat\":\"Sum\"}],[\"AWS/ApiGateway\",\"Count\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"PUT\",\"Resource\",\"/rulebundles/{id}/rules/{ruleId}\",\"Stage\",\"prod\",{\"label\":\"PUT /rulebundles/{id}/rules/{ruleId}\",\"stat\":\"Sum\"}],[\"AWS/ApiGateway\",\"Count\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"DELETE\",\"Resource\",\"/rulebundles/{id}/rules/{ruleId}\",\"Stage\",\"prod\",{\"label\":\"DELETE /rulebundles/{id}/rules/{ruleId}\",\"stat\":\"Sum\"}]],\"yAxis\":{\"left\":{},\"right\":{}},\"liveData\":true}},{\"type\":\"metric\",\"width\":6,\"height\":6,\"x\":6,\"y\":0,\"properties\":{\"view\":\"timeSeries\",\"title\":\"API Latency\",\"region\":\"",
              {
                "Ref": "AWS::Region"
              },
              "\",\"metrics\":[[\"AWS/ApiGateway\",\"Latency\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"GET\",\"Resource\",\"/audits\",\"Stage\",\"prod\",{\"label\":\"GET /audits\"}],[\"AWS/ApiGateway\",\"Latency\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"POST\",\"Resource\",\"/objects\",\"Stage\",\"prod\",{\"label\":\"POST /objects\"}],[\"AWS/ApiGateway\",\"Latency\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"GET\",\"Resource\",\"/objects\",\"Stage\",\"prod\",{\"label\":\"GET /objects\"}],[\"AWS/ApiGateway\",\"Latency\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"GET\",\"Resource\",\"/objects/{id}\",\"Stage\",\"prod\",{\"label\":\"GET /objects/{id}\"}],[\"AWS/ApiGateway\",\"Latency\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"PUT\",\"Resource\",\"/objects/{id}\",\"Stage\",\"prod\",{\"label\":\"PUT /objects/{id}\"}],[\"AWS/ApiGateway\",\"Latency\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"POST\",\"Resource\",\"/rulebundles\",\"Stage\",\"prod\",{\"label\":\"POST /rulebundles\"}],[\"AWS/ApiGateway\",\"Latency\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"GET\",\"Resource\",\"/rulebundles\",\"Stage\",\"prod\",{\"label\":\"GET /rulebundles\"}],[\"AWS/ApiGateway\",\"Latency\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"PUT\",\"Resource\",\"/rulebundles/{id}\",\"Stage\",\"prod\",{\"label\":\"PUT /rulebundles/{id}\"}],[\"AWS/ApiGateway\",\"Latency\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"GET\",\"Resource\",\"/rulebundles/{id}\",\"Stage\",\"prod\",{\"label\":\"GET /rulebundles/{id}\"}],[\"AWS/ApiGateway\",\"Latency\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"POST\",\"Resource\",\"/rulebundles/{id}/rules\",\"Stage\",\"prod\",{\"label\":\"POST /rulebundles/{id}/rules\"}],[\"AWS/ApiGateway\",\"Latency\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"GET\",\"Resource\",\"/rulebundles/{id}/rules\",\"Stage\",\"prod\",{\"label\":\"GET /rulebundles/{id}/rules\"}],[\"AWS/ApiGateway\",\"Latency\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"GET\",\"Resource\",\"/rulebundles/{id}/rules/{ruleId}\",\"Stage\",\"prod\",{\"label\":\"GET /rulebundles/{id}/rules/{ruleId}\"}],[\"AWS/ApiGateway\",\"Latency\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"PUT\",\"Resource\",\"/rulebundles/{id}/rules/{ruleId}\",\"Stage\",\"prod\",{\"label\":\"PUT /rulebundles/{id}/rules/{ruleId}\"}],[\"AWS/ApiGateway\",\"Latency\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"DELETE\",\"Resource\",\"/rulebundles/{id}/rules/{ruleId}\",\"Stage\",\"prod\",{\"label\":\"DELETE /rulebundles/{id}/rules/{ruleId}\"}]],\"yAxis\":{\"left\":{},\"right\":{}},\"liveData\":true}},{\"type\":\"metric\",\"width\":6,\"height\":6,\"x\":12,\"y\":0,\"properties\":{\"view\":\"timeSeries\",\"title\":\"API Errors\",\"region\":\"",
              {
                "Ref": "AWS::Region"
              },
              "\",\"metrics\":[[\"AWS/ApiGateway\",\"4XXError\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"GET\",\"Resource\",\"/audits\",\"Stage\",\"prod\",{\"label\":\"GET /audits\",\"stat\":\"Sum\"}],[\"AWS/ApiGateway\",\"4XXError\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"POST\",\"Resource\",\"/objects\",\"Stage\",\"prod\",{\"label\":\"POST /objects\",\"stat\":\"Sum\"}],[\"AWS/ApiGateway\",\"4XXError\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"GET\",\"Resource\",\"/objects\",\"Stage\",\"prod\",{\"label\":\"GET /objects\",\"stat\":\"Sum\"}],[\"AWS/ApiGateway\",\"4XXError\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"GET\",\"Resource\",\"/objects/{id}\",\"Stage\",\"prod\",{\"label\":\"GET /objects/{id}\",\"stat\":\"Sum\"}],[\"AWS/ApiGateway\",\"4XXError\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"PUT\",\"Resource\",\"/objects/{id}\",\"Stage\",\"prod\",{\"label\":\"PUT /objects/{id}\",\"stat\":\"Sum\"}],[\"AWS/ApiGateway\",\"4XXError\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"POST\",\"Resource\",\"/rulebundles\",\"Stage\",\"prod\",{\"label\":\"POST /rulebundles\",\"stat\":\"Sum\"}],[\"AWS/ApiGateway\",\"4XXError\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"GET\",\"Resource\",\"/rulebundles\",\"Stage\",\"prod\",{\"label\":\"GET /rulebundles\",\"stat\":\"Sum\"}],[\"AWS/ApiGateway\",\"4XXError\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"PUT\",\"Resource\",\"/rulebundles/{id}\",\"Stage\",\"prod\",{\"label\":\"PUT /rulebundles/{id}\",\"stat\":\"Sum\"}],[\"AWS/ApiGateway\",\"4XXError\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"GET\",\"Resource\",\"/rulebundles/{id}\",\"Stage\",\"prod\",{\"label\":\"GET /rulebundles/{id}\",\"stat\":\"Sum\"}],[\"AWS/ApiGateway\",\"4XXError\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"POST\",\"Resource\",\"/rulebundles/{id}/rules\",\"Stage\",\"prod\",{\"label\":\"POST /rulebundles/{id}/rules\",\"stat\":\"Sum\"}],[\"AWS/ApiGateway\",\"4XXError\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"GET\",\"Resource\",\"/rulebundles/{id}/rules\",\"Stage\",\"prod\",{\"label\":\"GET /rulebundles/{id}/rules\",\"stat\":\"Sum\"}],[\"AWS/ApiGateway\",\"4XXError\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"GET\",\"Resource\",\"/rulebundles/{id}/rules/{ruleId}\",\"Stage\",\"prod\",{\"label\":\"GET /rulebundles/{id}/rules/{ruleId}\",\"stat\":\"Sum\"}],[\"AWS/ApiGateway\",\"4XXError\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"PUT\",\"Resource\",\"/rulebundles/{id}/rules/{ruleId}\",\"Stage\",\"prod\",{\"label\":\"PUT /rulebundles/{id}/rules/{ruleId}\",\"stat\":\"Sum\"}],[\"AWS/ApiGateway\",\"4XXError\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"DELETE\",\"Resource\",\"/rulebundles/{id}/rules/{ruleId}\",\"Stage\",\"prod\",{\"label\":\"DELETE /rulebundles/{id}/rules/{ruleId}\",\"stat\":\"Sum\"}],[\"AWS/ApiGateway\",\"5XXError\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"GET\",\"Resource\",\"/audits\",\"Stage\",\"prod\",{\"label\":\"GET /audits\",\"stat\":\"Sum\",\"yAxis\":\"right\"}],[\"AWS/ApiGateway\",\"5XXError\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"POST\",\"Resource\",\"/objects\",\"Stage\",\"prod\",{\"label\":\"POST /objects\",\"stat\":\"Sum\",\"yAxis\":\"right\"}],[\"AWS/ApiGateway\",\"5XXError\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"GET\",\"Resource\",\"/objects\",\"Stage\",\"prod\",{\"label\":\"GET /objects\",\"stat\":\"Sum\",\"yAxis\":\"right\"}],[\"AWS/ApiGateway\",\"5XXError\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"GET\",\"Resource\",\"/objects/{id}\",\"Stage\",\"prod\",{\"label\":\"GET /objects/{id}\",\"stat\":\"Sum\",\"yAxis\":\"right\"}],[\"AWS/ApiGateway\",\"5XXError\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"PUT\",\"Resource\",\"/objects/{id}\",\"Stage\",\"prod\",{\"label\":\"PUT /objects/{id}\",\"stat\":\"Sum\",\"yAxis\":\"right\"}],[\"AWS/ApiGateway\",\"5XXError\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"POST\",\"Resource\",\"/rulebundles\",\"Stage\",\"prod\",{\"label\":\"POST /rulebundles\",\"stat\":\"Sum\",\"yAxis\":\"right\"}],[\"AWS/ApiGateway\",\"5XXError\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"GET\",\"Resource\",\"/rulebundles\",\"Stage\",\"prod\",{\"label\":\"GET /rulebundles\",\"stat\":\"Sum\",\"yAxis\":\"right\"}],[\"AWS/ApiGateway\",\"5XXError\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"PUT\",\"Resource\",\"/rulebundles/{id}\",\"Stage\",\"prod\",{\"label\":\"PUT /rulebundles/{id}\",\"stat\":\"Sum\",\"yAxis\":\"right\"}],[\"AWS/ApiGateway\",\"5XXError\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"GET\",\"Resource\",\"/rulebundles/{id}\",\"Stage\",\"prod\",{\"label\":\"GET /rulebundles/{id}\",\"stat\":\"Sum\",\"yAxis\":\"right\"}],[\"AWS/ApiGateway\",\"5XXError\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"POST\",\"Resource\",\"/rulebundles/{id}/rules\",\"Stage\",\"prod\",{\"label\":\"POST /rulebundles/{id}/rules\",\"stat\":\"Sum\",\"yAxis\":\"right\"}],[\"AWS/ApiGateway\",\"5XXError\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"GET\",\"Resource\",\"/rulebundles/{id}/rules\",\"Stage\",\"prod\",{\"label\":\"GET /rulebundles/{id}/rules\",\"stat\":\"Sum\",\"yAxis\":\"right\"}],[\"AWS/ApiGateway\",\"5XXError\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"GET\",\"Resource\",\"/rulebundles/{id}/rules/{ruleId}\",\"Stage\",\"prod\",{\"label\":\"GET /rulebundles/{id}/rules/{ruleId}\",\"stat\":\"Sum\",\"yAxis\":\"right\"}],[\"AWS/ApiGateway\",\"5XXError\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"PUT\",\"Resource\",\"/rulebundles/{id}/rules/{ruleId}\",\"Stage\",\"prod\",{\"label\":\"PUT /rulebundles/{id}/rules/{ruleId}\",\"stat\":\"Sum\",\"yAxis\":\"right\"}],[\"AWS/ApiGateway\",\"5XXError\",\"ApiName\",\"NetworkFirewallObjectExtension-API\",\"Method\",\"DELETE\",\"Resource\",\"/rulebundles/{id}/rules/{ruleId}\",\"Stage\",\"prod\",{\"label\":\"DELETE /rulebundles/{id}/rules/{ruleId}\",\"stat\":\"Sum\",\"yAxis\":\"right\"}]],\"yAxis\":{\"left\":{\"label\":\"4XX Errors\"},\"right\":{\"label\":\"5XX Errors\"}},\"liveData\":true}},{\"type\":\"metric\",\"width\":6,\"height\":6,\"x\":0,\"y\":6,\"properties\":{\"view\":\"timeSeries\",\"title\":\"firewall-object-rule-api - Duration\",\"region\":\"",
              {
                "Ref": "AWS::Region"
              },
              "\",\"metrics\":[[\"AWS/Lambda\",\"Duration\",\"FunctionName\",\"",
              {
                "Ref": "autoconfigapiautoConfig13F74724"
              },
              "\",{\"label\":\"Minimum\",\"stat\":\"Minimum\"}],[\"AWS/Lambda\",\"Duration\",\"FunctionName\",\"",
              {
                "Ref": "autoconfigapiautoConfig13F74724"
              },
              "\",{\"label\":\"Maximum\",\"stat\":\"Maximum\"}],[\"AWS/Lambda\",\"Duration\",\"FunctionName\",\"",
              {
                "Ref": "autoconfigapiautoConfig13F74724"
              },
              "\",{\"label\":\"Average\"}]],\"yAxis\":{},\"liveData\":true}},{\"type\":\"metric\",\"width\":6,\"height\":6,\"x\":6,\"y\":6,\"properties\":{\"view\":\"timeSeries\",\"title\":\"firewall-object-rule-api -  Success Rate\",\"region\":\"",
              {
                "Ref": "AWS::Region"
              },
              "\",\"metrics\":[[{\"label\":\"Success rate\",\"expression\":\"100 - 100 * errors / MAX([errors, invocations])\"}],[\"AWS/Lambda\",\"Errors\",\"FunctionName\",\"",
              {
                "Ref": "autoconfigapiautoConfig13F74724"
              },
              "\",{\"label\":\"Error\",\"stat\":\"Sum\",\"visible\":false,\"id\":\"errors\"}],[\"AWS/Lambda\",\"Invocations\",\"FunctionName\",\"",
              {
                "Ref": "autoconfigapiautoConfig13F74724"
              },
              "\",{\"label\":\"Invocations\",\"stat\":\"Sum\",\"visible\":false,\"id\":\"invocations\"}]],\"yAxis\":{\"left\":{\"max\":100,\"min\":0,\"label\":\"Percent\",\"showUnits\":false}},\"liveData\":true}},{\"type\":\"metric\",\"width\":6,\"height\":6,\"x\":12,\"y\":6,\"properties\":{\"view\":\"timeSeries\",\"title\":\"firewall-object-rule-scheduler - Duration\",\"region\":\"",
              {
                "Ref": "AWS::Region"
              },
              "\",\"metrics\":[[\"AWS/Lambda\",\"Duration\",\"FunctionName\",\"",
              {
                "Ref": "autoconfigautoConfigSchedulerE6836502"
              },
              "\",{\"label\":\"Minimum\",\"stat\":\"Minimum\"}],[\"AWS/Lambda\",\"Duration\",\"FunctionName\",\"",
              {
                "Ref": "autoconfigautoConfigSchedulerE6836502"
              },
              "\",{\"label\":\"Maximum\",\"stat\":\"Maximum\"}],[\"AWS/Lambda\",\"Duration\",\"FunctionName\",\"",
              {
                "Ref": "autoconfigautoConfigSchedulerE6836502"
              },
              "\",{\"label\":\"Average\"}]],\"yAxis\":{},\"liveData\":true}},{\"type\":\"metric\",\"width\":6,\"height\":6,\"x\":18,\"y\":6,\"properties\":{\"view\":\"timeSeries\",\"title\":\"firewall-object-rule-scheduler -  Success Rate\",\"region\":\"",
              {
                "Ref": "AWS::Region"
              },
              "\",\"metrics\":[[{\"label\":\"Success rate\",\"expression\":\"100 - 100 * errors / MAX([errors, invocations])\"}],[\"AWS/Lambda\",\"Errors\",\"FunctionName\",\"",
              {
                "Ref": "autoconfigautoConfigSchedulerE6836502"
              },
              "\",{\"label\":\"Error\",\"stat\":\"Sum\",\"visible\":false,\"id\":\"errors\"}],[\"AWS/Lambda\",\"Invocations\",\"FunctionName\",\"",
              {
                "Ref": "autoconfigautoConfigSchedulerE6836502"
              },
              "\",{\"label\":\"Invocations\",\"stat\":\"Sum\",\"visible\":false,\"id\":\"invocations\"}]],\"yAxis\":{\"left\":{\"max\":100,\"min\":0,\"label\":\"Percent\",\"showUnits\":false}},\"liveData\":true}},{\"type\":\"metric\",\"width\":6,\"height\":6,\"x\":0,\"y\":12,\"properties\":{\"view\":\"timeSeries\",\"title\":\"Objects - Capacity\",\"region\":\"",
              {
                "Ref": "AWS::Region"
              },
              "\",\"metrics\":[[\"AWS/DynamoDB\",\"ProvisionedReadCapacityUnits\",\"TableName\",\"",
              {
                "Ref": "DataSourcesObjectsTable3C1B7D58"
              },
              "\",{\"label\":\"Provisioned Read\"}],[\"AWS/DynamoDB\",\"ConsumedReadCapacityUnits\",\"TableName\",\"",
              {
                "Ref": "DataSourcesObjectsTable3C1B7D58"
              },
              "\",{\"label\":\"Consumed Read\"}],[\"AWS/DynamoDB\",\"ProvisionedWriteCapacityUnits\",\"TableName\",\"",
              {
                "Ref": "DataSourcesObjectsTable3C1B7D58"
              },
              "\",{\"label\":\"Provisioned Read\"}],[\"AWS/DynamoDB\",\"ConsumedWriteCapacityUnits\",\"TableName\",\"",
              {
                "Ref": "DataSourcesObjectsTable3C1B7D58"
              },
              "\",{\"label\":\"Consumed Read\"}]],\"yAxis\":{},\"liveData\":true}},{\"type\":\"metric\",\"width\":6,\"height\":6,\"x\":6,\"y\":12,\"properties\":{\"view\":\"timeSeries\",\"title\":\"Objects - Latency\",\"region\":\"",
              {
                "Ref": "AWS::Region"
              },
              "\",\"metrics\":[[\"AWS/DynamoDB\",\"SuccessfulRequestLatency\",\"Operation\",\"GetItem\",\"TableName\",\"",
              {
                "Ref": "DataSourcesObjectsTable3C1B7D58"
              },
              "\",{\"label\":\"Get Latency\"}],[\"AWS/DynamoDB\",\"SuccessfulRequestLatency\",\"Operation\",\"PutItem\",\"TableName\",\"",
              {
                "Ref": "DataSourcesObjectsTable3C1B7D58"
              },
              "\",{\"label\":\"Put Latency\"}],[\"AWS/DynamoDB\",\"SuccessfulRequestLatency\",\"Operation\",\"Scan\",\"TableName\",\"",
              {
                "Ref": "DataSourcesObjectsTable3C1B7D58"
              },
              "\",{\"label\":\"Scan Latency\"}],[\"AWS/DynamoDB\",\"SuccessfulRequestLatency\",\"Operation\",\"Query\",\"TableName\",\"",
              {
                "Ref": "DataSourcesObjectsTable3C1B7D58"
              },
              "\",{\"label\":\"Query Latency\"}]],\"yAxis\":{},\"liveData\":true}},{\"type\":\"metric\",\"width\":6,\"height\":6,\"x\":12,\"y\":12,\"properties\":{\"view\":\"timeSeries\",\"title\":\"Objects - Errors\",\"region\":\"",
              {
                "Ref": "AWS::Region"
              },
              "\",\"metrics\":[[\"AWS/DynamoDB\",\"SystemErrors\",\"Operation\",\"GetItem\",\"TableName\",\"",
              {
                "Ref": "DataSourcesObjectsTable3C1B7D58"
              },
              "\",{\"label\":\"Get\",\"stat\":\"Sum\"}],[\"AWS/DynamoDB\",\"SystemErrors\",\"Operation\",\"BatchGetItem\",\"TableName\",\"",
              {
                "Ref": "DataSourcesObjectsTable3C1B7D58"
              },
              "\",{\"label\":\"Batch Get\",\"stat\":\"Sum\"}],[\"AWS/DynamoDB\",\"SystemErrors\",\"Operation\",\"Scan\",\"TableName\",\"",
              {
                "Ref": "DataSourcesObjectsTable3C1B7D58"
              },
              "\",{\"label\":\"Scan\",\"stat\":\"Sum\"}],[\"AWS/DynamoDB\",\"SystemErrors\",\"Operation\",\"Query\",\"TableName\",\"",
              {
                "Ref": "DataSourcesObjectsTable3C1B7D58"
              },
              "\",{\"label\":\"Query\",\"stat\":\"Sum\"}],[\"AWS/DynamoDB\",\"SystemErrors\",\"Operation\",\"PutItem\",\"TableName\",\"",
              {
                "Ref": "DataSourcesObjectsTable3C1B7D58"
              },
              "\",{\"label\":\"Put\",\"stat\":\"Sum\"}],[\"AWS/DynamoDB\",\"SystemErrors\",\"Operation\",\"BatchWriteItem\",\"TableName\",\"",
              {
                "Ref": "DataSourcesObjectsTable3C1B7D58"
              },
              "\",{\"label\":\"Batch Write\",\"stat\":\"Sum\"}],[\"AWS/DynamoDB\",\"SystemErrors\",\"Operation\",\"UpdateItem\",\"TableName\",\"",
              {
                "Ref": "DataSourcesObjectsTable3C1B7D58"
              },
              "\",{\"label\":\"Update\",\"stat\":\"Sum\"}],[\"AWS/DynamoDB\",\"SystemErrors\",\"Operation\",\"DeleteItem\",\"TableName\",\"",
              {
                "Ref": "DataSourcesObjectsTable3C1B7D58"
              },
              "\",{\"label\":\"Delete\",\"stat\":\"Sum\"}]],\"yAxis\":{},\"liveData\":true}},{\"type\":\"metric\",\"width\":6,\"height\":6,\"x\":18,\"y\":12,\"properties\":{\"view\":\"timeSeries\",\"title\":\"Objects - Throttled Requests\",\"region\":\"",
              {
                "Ref": "AWS::Region"
              },
              "\",\"metrics\":[[\"AWS/DynamoDB\",\"ThrottledRequests\",\"TableName\",\"",
              {
                "Ref": "DataSourcesObjectsTable3C1B7D58"
              },
              "\",{\"label\":\"Throttled Requests\",\"stat\":\"Sum\"}]],\"yAxis\":{},\"liveData\":true}},{\"type\":\"metric\",\"width\":6,\"height\":6,\"x\":0,\"y\":18,\"properties\":{\"view\":\"timeSeries\",\"title\":\"Audits - Capacity\",\"region\":\"",
              {
                "Ref": "AWS::Region"
              },
              "\",\"metrics\":[[\"AWS/DynamoDB\",\"ProvisionedReadCapacityUnits\",\"TableName\",\"",
              {
                "Ref": "DataSourcesAuditsTable1F631F88"
              },
              "\",{\"label\":\"Provisioned Read\"}],[\"AWS/DynamoDB\",\"ConsumedReadCapacityUnits\",\"TableName\",\"",
              {
                "Ref": "DataSourcesAuditsTable1F631F88"
              },
              "\",{\"label\":\"Consumed Read\"}],[\"AWS/DynamoDB\",\"ProvisionedWriteCapacityUnits\",\"TableName\",\"",
              {
                "Ref": "DataSourcesAuditsTable1F631F88"
              },
              "\",{\"label\":\"Provisioned Read\"}],[\"AWS/DynamoDB\",\"ConsumedWriteCapacityUnits\",\"TableName\",\"",
              {
                "Ref": "DataSourcesAuditsTable1F631F88"
              },
              "\",{\"label\":\"Consumed Read\"}]],\"yAxis\":{},\"liveData\":true}},{\"type\":\"metric\",\"width\":6,\"height\":6,\"x\":6,\"y\":18,\"properties\":{\"view\":\"timeSeries\",\"title\":\"Audits - Latency\",\"region\":\"",
              {
                "Ref": "AWS::Region"
              },
              "\",\"metrics\":[[\"AWS/DynamoDB\",\"SuccessfulRequestLatency\",\"Operation\",\"GetItem\",\"TableName\",\"",
              {
                "Ref": "DataSourcesAuditsTable1F631F88"
              },
              "\",{\"label\":\"Get Latency\"}],[\"AWS/DynamoDB\",\"SuccessfulRequestLatency\",\"Operation\",\"PutItem\",\"TableName\",\"",
              {
                "Ref": "DataSourcesAuditsTable1F631F88"
              },
              "\",{\"label\":\"Put Latency\"}],[\"AWS/DynamoDB\",\"SuccessfulRequestLatency\",\"Operation\",\"Scan\",\"TableName\",\"",
              {
                "Ref": "DataSourcesAuditsTable1F631F88"
              },
              "\",{\"label\":\"Scan Latency\"}],[\"AWS/DynamoDB\",\"SuccessfulRequestLatency\",\"Operation\",\"Query\",\"TableName\",\"",
              {
                "Ref": "DataSourcesAuditsTable1F631F88"
              },
              "\",{\"label\":\"Query Latency\"}]],\"yAxis\":{},\"liveData\":true}},{\"type\":\"metric\",\"width\":6,\"height\":6,\"x\":12,\"y\":18,\"properties\":{\"view\":\"timeSeries\",\"title\":\"Audits - Errors\",\"region\":\"",
              {
                "Ref": "AWS::Region"
              },
              "\",\"metrics\":[[\"AWS/DynamoDB\",\"SystemErrors\",\"Operation\",\"GetItem\",\"TableName\",\"",
              {
                "Ref": "DataSourcesAuditsTable1F631F88"
              },
              "\",{\"label\":\"Get\",\"stat\":\"Sum\"}],[\"AWS/DynamoDB\",\"SystemErrors\",\"Operation\",\"BatchGetItem\",\"TableName\",\"",
              {
                "Ref": "DataSourcesAuditsTable1F631F88"
              },
              "\",{\"label\":\"Batch Get\",\"stat\":\"Sum\"}],[\"AWS/DynamoDB\",\"SystemErrors\",\"Operation\",\"Scan\",\"TableName\",\"",
              {
                "Ref": "DataSourcesAuditsTable1F631F88"
              },
              "\",{\"label\":\"Scan\",\"stat\":\"Sum\"}],[\"AWS/DynamoDB\",\"SystemErrors\",\"Operation\",\"Query\",\"TableName\",\"",
              {
                "Ref": "DataSourcesAuditsTable1F631F88"
              },
              "\",{\"label\":\"Query\",\"stat\":\"Sum\"}],[\"AWS/DynamoDB\",\"SystemErrors\",\"Operation\",\"PutItem\",\"TableName\",\"",
              {
                "Ref": "DataSourcesAuditsTable1F631F88"
              },
              "\",{\"label\":\"Put\",\"stat\":\"Sum\"}],[\"AWS/DynamoDB\",\"SystemErrors\",\"Operation\",\"BatchWriteItem\",\"TableName\",\"",
              {
                "Ref": "DataSourcesAuditsTable1F631F88"
              },
              "\",{\"label\":\"Batch Write\",\"stat\":\"Sum\"}],[\"AWS/DynamoDB\",\"SystemErrors\",\"Operation\",\"UpdateItem\",\"TableName\",\"",
              {
                "Ref": "DataSourcesAuditsTable1F631F88"
              },
              "\",{\"label\":\"Update\",\"stat\":\"Sum\"}],[\"AWS/DynamoDB\",\"SystemErrors\",\"Operation\",\"DeleteItem\",\"TableName\",\"",
              {
                "Ref": "DataSourcesAuditsTable1F631F88"
              },
              "\",{\"label\":\"Delete\",\"stat\":\"Sum\"}]],\"yAxis\":{},\"liveData\":true}},{\"type\":\"metric\",\"width\":6,\"height\":6,\"x\":18,\"y\":18,\"properties\":{\"view\":\"timeSeries\",\"title\":\"Audits - Throttled Requests\",\"region\":\"",
              {
                "Ref": "AWS::Region"
              },
              "\",\"metrics\":[[\"AWS/DynamoDB\",\"ThrottledRequests\",\"TableName\",\"",
              {
                "Ref": "DataSourcesAuditsTable1F631F88"
              },
              "\",{\"label\":\"Throttled Requests\",\"stat\":\"Sum\"}]],\"yAxis\":{},\"liveData\":true}},{\"type\":\"metric\",\"width\":6,\"height\":6,\"x\":0,\"y\":24,\"properties\":{\"view\":\"timeSeries\",\"title\":\"Rules - Capacity\",\"region\":\"",
              {
                "Ref": "AWS::Region"
              },
              "\",\"metrics\":[[\"AWS/DynamoDB\",\"ProvisionedReadCapacityUnits\",\"TableName\",\"",
              {
                "Ref": "DataSourcesRulesTable1F07B779"
              },
              "\",{\"label\":\"Provisioned Read\"}],[\"AWS/DynamoDB\",\"ConsumedReadCapacityUnits\",\"TableName\",\"",
              {
                "Ref": "DataSourcesRulesTable1F07B779"
              },
              "\",{\"label\":\"Consumed Read\"}],[\"AWS/DynamoDB\",\"ProvisionedWriteCapacityUnits\",\"TableName\",\"",
              {
                "Ref": "DataSourcesRulesTable1F07B779"
              },
              "\",{\"label\":\"Provisioned Read\"}],[\"AWS/DynamoDB\",\"ConsumedWriteCapacityUnits\",\"TableName\",\"",
              {
                "Ref": "DataSourcesRulesTable1F07B779"
              },
              "\",{\"label\":\"Consumed Read\"}]],\"yAxis\":{},\"liveData\":true}},{\"type\":\"metric\",\"width\":6,\"height\":6,\"x\":6,\"y\":24,\"properties\":{\"view\":\"timeSeries\",\"title\":\"Rules - Latency\",\"region\":\"",
              {
                "Ref": "AWS::Region"
              },
              "\",\"metrics\":[[\"AWS/DynamoDB\",\"SuccessfulRequestLatency\",\"Operation\",\"GetItem\",\"TableName\",\"",
              {
                "Ref": "DataSourcesRulesTable1F07B779"
              },
              "\",{\"label\":\"Get Latency\"}],[\"AWS/DynamoDB\",\"SuccessfulRequestLatency\",\"Operation\",\"PutItem\",\"TableName\",\"",
              {
                "Ref": "DataSourcesRulesTable1F07B779"
              },
              "\",{\"label\":\"Put Latency\"}],[\"AWS/DynamoDB\",\"SuccessfulRequestLatency\",\"Operation\",\"Scan\",\"TableName\",\"",
              {
                "Ref": "DataSourcesRulesTable1F07B779"
              },
              "\",{\"label\":\"Scan Latency\"}],[\"AWS/DynamoDB\",\"SuccessfulRequestLatency\",\"Operation\",\"Query\",\"TableName\",\"",
              {
                "Ref": "DataSourcesRulesTable1F07B779"
              },
              "\",{\"label\":\"Query Latency\"}]],\"yAxis\":{},\"liveData\":true}},{\"type\":\"metric\",\"width\":6,\"height\":6,\"x\":12,\"y\":24,\"properties\":{\"view\":\"timeSeries\",\"title\":\"Rules - Errors\",\"region\":\"",
              {
                "Ref": "AWS::Region"
              },
              "\",\"metrics\":[[\"AWS/DynamoDB\",\"SystemErrors\",\"Operation\",\"GetItem\",\"TableName\",\"",
              {
                "Ref": "DataSourcesRulesTable1F07B779"
              },
              "\",{\"label\":\"Get\",\"stat\":\"Sum\"}],[\"AWS/DynamoDB\",\"SystemErrors\",\"Operation\",\"BatchGetItem\",\"TableName\",\"",
              {
                "Ref": "DataSourcesRulesTable1F07B779"
              },
              "\",{\"label\":\"Batch Get\",\"stat\":\"Sum\"}],[\"AWS/DynamoDB\",\"SystemErrors\",\"Operation\",\"Scan\",\"TableName\",\"",
              {
                "Ref": "DataSourcesRulesTable1F07B779"
              },
              "\",{\"label\":\"Scan\",\"stat\":\"Sum\"}],[\"AWS/DynamoDB\",\"SystemErrors\",\"Operation\",\"Query\",\"TableName\",\"",
              {
                "Ref": "DataSourcesRulesTable1F07B779"
              },
              "\",{\"label\":\"Query\",\"stat\":\"Sum\"}],[\"AWS/DynamoDB\",\"SystemErrors\",\"Operation\",\"PutItem\",\"TableName\",\"",
              {
                "Ref": "DataSourcesRulesTable1F07B779"
              },
              "\",{\"label\":\"Put\",\"stat\":\"Sum\"}],[\"AWS/DynamoDB\",\"SystemErrors\",\"Operation\",\"BatchWriteItem\",\"TableName\",\"",
              {
                "Ref": "DataSourcesRulesTable1F07B779"
              },
              "\",{\"label\":\"Batch Write\",\"stat\":\"Sum\"}],[\"AWS/DynamoDB\",\"SystemErrors\",\"Operation\",\"UpdateItem\",\"TableName\",\"",
              {
                "Ref": "DataSourcesRulesTable1F07B779"
              },
              "\",{\"label\":\"Update\",\"stat\":\"Sum\"}],[\"AWS/DynamoDB\",\"SystemErrors\",\"Operation\",\"DeleteItem\",\"TableName\",\"",
              {
                "Ref": "DataSourcesRulesTable1F07B779"
              },
              "\",{\"label\":\"Delete\",\"stat\":\"Sum\"}]],\"yAxis\":{},\"liveData\":true}},{\"type\":\"metric\",\"width\":6,\"height\":6,\"x\":18,\"y\":24,\"properties\":{\"view\":\"timeSeries\",\"title\":\"Rules - Throttled Requests\",\"region\":\"",
              {
                "Ref": "AWS::Region"
              },
              "\",\"metrics\":[[\"AWS/DynamoDB\",\"ThrottledRequests\",\"TableName\",\"",
              {
                "Ref": "DataSourcesRulesTable1F07B779"
              },
              "\",{\"label\":\"Throttled Requests\",\"stat\":\"Sum\"}]],\"yAxis\":{},\"liveData\":true}},{\"type\":\"metric\",\"width\":6,\"height\":6,\"x\":0,\"y\":30,\"properties\":{\"view\":\"timeSeries\",\"title\":\"RuleBundles - Capacity\",\"region\":\"",
              {
                "Ref": "AWS::Region"
              },
              "\",\"metrics\":[[\"AWS/DynamoDB\",\"ProvisionedReadCapacityUnits\",\"TableName\",\"",
              {
                "Ref": "DataSourcesRuleBundlesTableEC40370C"
              },
              "\",{\"label\":\"Provisioned Read\"}],[\"AWS/DynamoDB\",\"ConsumedReadCapacityUnits\",\"TableName\",\"",
              {
                "Ref": "DataSourcesRuleBundlesTableEC40370C"
              },
              "\",{\"label\":\"Consumed Read\"}],[\"AWS/DynamoDB\",\"ProvisionedWriteCapacityUnits\",\"TableName\",\"",
              {
                "Ref": "DataSourcesRuleBundlesTableEC40370C"
              },
              "\",{\"label\":\"Provisioned Read\"}],[\"AWS/DynamoDB\",\"ConsumedWriteCapacityUnits\",\"TableName\",\"",
              {
                "Ref": "DataSourcesRuleBundlesTableEC40370C"
              },
              "\",{\"label\":\"Consumed Read\"}]],\"yAxis\":{},\"liveData\":true}},{\"type\":\"metric\",\"width\":6,\"height\":6,\"x\":6,\"y\":30,\"properties\":{\"view\":\"timeSeries\",\"title\":\"RuleBundles - Latency\",\"region\":\"",
              {
                "Ref": "AWS::Region"
              },
              "\",\"metrics\":[[\"AWS/DynamoDB\",\"SuccessfulRequestLatency\",\"Operation\",\"GetItem\",\"TableName\",\"",
              {
                "Ref": "DataSourcesRuleBundlesTableEC40370C"
              },
              "\",{\"label\":\"Get Latency\"}],[\"AWS/DynamoDB\",\"SuccessfulRequestLatency\",\"Operation\",\"PutItem\",\"TableName\",\"",
              {
                "Ref": "DataSourcesRuleBundlesTableEC40370C"
              },
              "\",{\"label\":\"Put Latency\"}],[\"AWS/DynamoDB\",\"SuccessfulRequestLatency\",\"Operation\",\"Scan\",\"TableName\",\"",
              {
                "Ref": "DataSourcesRuleBundlesTableEC40370C"
              },
              "\",{\"label\":\"Scan Latency\"}],[\"AWS/DynamoDB\",\"SuccessfulRequestLatency\",\"Operation\",\"Query\",\"TableName\",\"",
              {
                "Ref": "DataSourcesRuleBundlesTableEC40370C"
              },
              "\",{\"label\":\"Query Latency\"}]],\"yAxis\":{},\"liveData\":true}},{\"type\":\"metric\",\"width\":6,\"height\":6,\"x\":12,\"y\":30,\"properties\":{\"view\":\"timeSeries\",\"title\":\"RuleBundles - Errors\",\"region\":\"",
              {
                "Ref": "AWS::Region"
              },
              "\",\"metrics\":[[\"AWS/DynamoDB\",\"SystemErrors\",\"Operation\",\"GetItem\",\"TableName\",\"",
              {
                "Ref": "DataSourcesRuleBundlesTableEC40370C"
              },
              "\",{\"label\":\"Get\",\"stat\":\"Sum\"}],[\"AWS/DynamoDB\",\"SystemErrors\",\"Operation\",\"BatchGetItem\",\"TableName\",\"",
              {
                "Ref": "DataSourcesRuleBundlesTableEC40370C"
              },
              "\",{\"label\":\"Batch Get\",\"stat\":\"Sum\"}],[\"AWS/DynamoDB\",\"SystemErrors\",\"Operation\",\"Scan\",\"TableName\",\"",
              {
                "Ref": "DataSourcesRuleBundlesTableEC40370C"
              },
              "\",{\"label\":\"Scan\",\"stat\":\"Sum\"}],[\"AWS/DynamoDB\",\"SystemErrors\",\"Operation\",\"Query\",\"TableName\",\"",
              {
                "Ref": "DataSourcesRuleBundlesTableEC40370C"
              },
              "\",{\"label\":\"Query\",\"stat\":\"Sum\"}],[\"AWS/DynamoDB\",\"SystemErrors\",\"Operation\",\"PutItem\",\"TableName\",\"",
              {
                "Ref": "DataSourcesRuleBundlesTableEC40370C"
              },
              "\",{\"label\":\"Put\",\"stat\":\"Sum\"}],[\"AWS/DynamoDB\",\"SystemErrors\",\"Operation\",\"BatchWriteItem\",\"TableName\",\"",
              {
                "Ref": "DataSourcesRuleBundlesTableEC40370C"
              },
              "\",{\"label\":\"Batch Write\",\"stat\":\"Sum\"}],[\"AWS/DynamoDB\",\"SystemErrors\",\"Operation\",\"UpdateItem\",\"TableName\",\"",
              {
                "Ref": "DataSourcesRuleBundlesTableEC40370C"
              },
              "\",{\"label\":\"Update\",\"stat\":\"Sum\"}],[\"AWS/DynamoDB\",\"SystemErrors\",\"Operation\",\"DeleteItem\",\"TableName\",\"",
              {
                "Ref": "DataSourcesRuleBundlesTableEC40370C"
              },
              "\",{\"label\":\"Delete\",\"stat\":\"Sum\"}]],\"yAxis\":{},\"liveData\":true}},{\"type\":\"metric\",\"width\":6,\"height\":6,\"x\":18,\"y\":30,\"properties\":{\"view\":\"timeSeries\",\"title\":\"RuleBundles - Throttled Requests\",\"region\":\"",
              {
                "Ref": "AWS::Region"
              },
              "\",\"metrics\":[[\"AWS/DynamoDB\",\"ThrottledRequests\",\"TableName\",\"",
              {
                "Ref": "DataSourcesRuleBundlesTableEC40370C"
              },
              "\",{\"label\":\"Throttled Requests\",\"stat\":\"Sum\"}]],\"yAxis\":{},\"liveData\":true}}]}"
            ]
          ]
        },
        "DashboardName": {
          "Fn::Join": [
            "",
            [
              "RuleExtensionServiceDashboard",
              {
                "Ref": "AWS::Region"
              }
            ]
          ]
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api-dashboard/service-dashboard/auto-config-api-dashboard/Resource"
      }
    },
    "autoconfigapidashboardErrorAlarm8021A608": {
      "Type": "AWS::CloudWatch::Alarm",
      "Properties": {
        "ComparisonOperator": "GreaterThanThreshold",
        "EvaluationPeriods": 2,
        "AlarmActions": [
          {
            "Ref": "DataSourcesRuleEvaluationResultTopic5273BF75"
          }
        ],
        "AlarmDescription": "Too many error on scheduler",
        "Dimensions": [
          {
            "Name": "FunctionName",
            "Value": {
              "Ref": "autoconfigautoConfigSchedulerE6836502"
            }
          }
        ],
        "MetricName": "Errors",
        "Namespace": "AWS/Lambda",
        "Period": 600,
        "Statistic": "Sum",
        "Threshold": 1
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api-dashboard/Error-Alarm/Resource"
      }
    },
    "autoconfigapidashboardNonInvocationAlarm2EB527F3": {
      "Type": "AWS::CloudWatch::Alarm",
      "Properties": {
        "ComparisonOperator": "LessThanThreshold",
        "EvaluationPeriods": 1,
        "AlarmActions": [
          {
            "Ref": "DataSourcesRuleEvaluationResultTopic5273BF75"
          }
        ],
        "Dimensions": [
          {
            "Name": "FunctionName",
            "Value": {
              "Ref": "autoconfigautoConfigSchedulerE6836502"
            }
          }
        ],
        "MetricName": "Invocations",
        "Namespace": "AWS/Lambda",
        "Period": 3600,
        "Statistic": "Sum",
        "Threshold": 1
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/auto-config-api-dashboard/Non-Invocation-Alarm/Resource"
      }
    },
    "canaryCanaryArtifactBucketencryptionkeyCanaryArtifactBucketFB61B633": {
      "Type": "AWS::KMS::Key",
      "Properties": {
        "KeyPolicy": {
          "Statement": [
            {
              "Action": "kms:*",
              "Effect": "Allow",
              "Principal": {
                "AWS": {
                  "Fn::Join": [
                    "",
                    [
                      "arn:",
                      {
                        "Ref": "AWS::Partition"
                      },
                      ":iam::",
                      {
                        "Ref": "AWS::AccountId"
                      },
                      ":root"
                    ]
                  ]
                }
              },
              "Resource": "*"
            }
          ],
          "Version": "2012-10-17"
        },
        "EnableKeyRotation": true,
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/canary/CanaryArtifactBucket/encryption-key-CanaryArtifactBucket/Resource"
      }
    },
    "canaryCanaryArtifactBucketagsCanaryArtifactBucketB6BAD0ED": {
      "Type": "AWS::S3::Bucket",
      "Properties": {
        "AccessControl": "LogDeliveryWrite",
        "BucketEncryption": {
          "ServerSideEncryptionConfiguration": [
            {
              "ServerSideEncryptionByDefault": {
                "KMSMasterKeyID": {
                  "Fn::GetAtt": [
                    "canaryCanaryArtifactBucketencryptionkeyCanaryArtifactBucketFB61B633",
                    "Arn"
                  ]
                },
                "SSEAlgorithm": "aws:kms"
              }
            }
          ]
        },
        "LoggingConfiguration": {
          "LogFilePrefix": "access-log"
        },
        "PublicAccessBlockConfiguration": {
          "BlockPublicAcls": true,
          "BlockPublicPolicy": true,
          "IgnorePublicAcls": true,
          "RestrictPublicBuckets": true
        },
        "Tags": [
          {
            "Key": "aws-cdk:auto-delete-objects",
            "Value": "true"
          },
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ],
        "VersioningConfiguration": {
          "Status": "Enabled"
        }
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/canary/CanaryArtifactBucket/ags-CanaryArtifactBucket/Resource"
      }
    },
    "canaryCanaryArtifactBucketagsCanaryArtifactBucketPolicy74598E1B": {
      "Type": "AWS::S3::BucketPolicy",
      "Properties": {
        "Bucket": {
          "Ref": "canaryCanaryArtifactBucketagsCanaryArtifactBucketB6BAD0ED"
        },
        "PolicyDocument": {
          "Statement": [
            {
              "Action": [
                "s3:GetBucket*",
                "s3:List*",
                "s3:DeleteObject*"
              ],
              "Effect": "Allow",
              "Principal": {
                "AWS": {
                  "Fn::GetAtt": [
                    "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092",
                    "Arn"
                  ]
                }
              },
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "canaryCanaryArtifactBucketagsCanaryArtifactBucketB6BAD0ED",
                    "Arn"
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "canaryCanaryArtifactBucketagsCanaryArtifactBucketB6BAD0ED",
                          "Arn"
                        ]
                      },
                      "/*"
                    ]
                  ]
                }
              ]
            },
            {
              "Action": "*",
              "Condition": {
                "Bool": {
                  "aws:SecureTransport": "false"
                }
              },
              "Effect": "Deny",
              "Principal": {
                "AWS": "*"
              },
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    {
                      "Fn::GetAtt": [
                        "canaryCanaryArtifactBucketagsCanaryArtifactBucketB6BAD0ED",
                        "Arn"
                      ]
                    },
                    "/*"
                  ]
                ]
              },
              "Sid": "HttpsOnly"
            }
          ],
          "Version": "2012-10-17"
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/canary/CanaryArtifactBucket/ags-CanaryArtifactBucket/Policy/Resource"
      }
    },
    "canaryCanaryArtifactBucketagsCanaryArtifactBucketAutoDeleteObjectsCustomResource061689C1": {
      "Type": "Custom::S3AutoDeleteObjects",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F",
            "Arn"
          ]
        },
        "BucketName": {
          "Ref": "canaryCanaryArtifactBucketagsCanaryArtifactBucketB6BAD0ED"
        }
      },
      "DependsOn": [
        "canaryCanaryArtifactBucketagsCanaryArtifactBucketPolicy74598E1B"
      ],
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/canary/CanaryArtifactBucket/ags-CanaryArtifactBucket/AutoDeleteObjectsCustomResource/Default"
      }
    },
    "canarycanaryPolicyF0BB6A4A": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "s3:ListAllMyBuckets",
              "Effect": "Allow",
              "Resource": "arn:aws:s3:::*"
            },
            {
              "Action": [
                "s3:PutObject",
                "s3:GetBucketLocation"
              ],
              "Effect": "Allow",
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    {
                      "Fn::GetAtt": [
                        "canaryCanaryArtifactBucketagsCanaryArtifactBucketB6BAD0ED",
                        "Arn"
                      ]
                    },
                    "/*"
                  ]
                ]
              }
            },
            {
              "Action": "s3:GetBucketLocation",
              "Effect": "Allow",
              "Resource": {
                "Fn::GetAtt": [
                  "canaryCanaryArtifactBucketagsCanaryArtifactBucketB6BAD0ED",
                  "Arn"
                ]
              }
            },
            {
              "Action": "cloudwatch:PutMetricData",
              "Condition": {
                "StringEquals": {
                  "cloudwatch:namespace": "CloudWatchSynthetics"
                }
              },
              "Effect": "Allow",
              "Resource": "*"
            },
            {
              "Action": "xray:PutTraceSegments",
              "Effect": "Allow",
              "Resource": "*"
            },
            {
              "Action": [
                "logs:CreateLogStream",
                "logs:CreateLogGroup",
                "logs:PutLogEvents"
              ],
              "Effect": "Allow",
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    "arn:",
                    {
                      "Ref": "AWS::Partition"
                    },
                    ":logs:::*"
                  ]
                ]
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "canarycanaryPolicyF0BB6A4A",
        "Roles": [
          {
            "Ref": "CanaryExecutionRole07ED3987"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/canary/canaryPolicy/Resource"
      }
    },
    "canaryCanary9CBBB098": {
      "Type": "AWS::Synthetics::Canary",
      "Properties": {
        "ArtifactS3Location": {
          "Fn::Join": [
            "",
            [
              "s3://",
              {
                "Ref": "canaryCanaryArtifactBucketagsCanaryArtifactBucketB6BAD0ED"
              },
              "/"
            ]
          ]
        },
        "Code": {
          "Handler": "index.handler",
          "Script": "/*! For license information please see index.js.LICENSE.txt */\n(()=>{var e={160:function(e,t,r){\"use strict\";var n=this&&this.__decorate||function(e,t,r,n){var o,i=arguments.length,s=i<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,r,s):o(t,r))||s);return i>3&&s&&Object.defineProperty(t,r,s),s},o=this&&this.__metadata||function(e,t){if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,\"__esModule\",{value:!0}),t.FirewallConfigApiTest=void 0;const i=r(953);class s extends i.TestCase{async getAuditLog(){const e=await this.httpClient.get(`${this.apiUrl}audits/`,\"execute-api\");(0,i.areEqual)(e.statusCode,200)}async getRuleBundles(){const e=await this.httpClient.get(`${this.apiUrl}rulebundles/`,\"execute-api\");(0,i.areEqual)(e.statusCode,200)}async getObjects(){const e=await this.httpClient.get(`${this.apiUrl}objects/`,\"execute-api\");(0,i.areEqual)(e.statusCode,200)}}n([(0,i.canaryTest)(),o(\"design:type\",Function),o(\"design:paramtypes\",[]),o(\"design:returntype\",Promise)],s.prototype,\"getAuditLog\",null),n([(0,i.canaryTest)(),o(\"design:type\",Function),o(\"design:paramtypes\",[]),o(\"design:returntype\",Promise)],s.prototype,\"getRuleBundles\",null),n([(0,i.canaryTest)(),o(\"design:type\",Function),o(\"design:paramtypes\",[]),o(\"design:returntype\",Promise)],s.prototype,\"getObjects\",null),t.FirewallConfigApiTest=s},90:(e,t,r)=>{\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.CanaryFactory=void 0,r(649);const n=r(327),o=r(270),i=r(552),s=r(451),a=r(907);t.CanaryFactory=class{constructor(e){var t;this.waitBetweenTestsInMs=null!==(t=e.waitBetweenTestsInMs)&&void 0!==t?t:0,this.httpClient=(0,n.createHttpClient)(e.region),this.testCases=e.testCasesType.map((t=>new t(this.httpClient,e.testTargetApi)))}createCanaryHandler(){const e=s.getConfiguration(),t=this.testCases,r=this.waitBetweenTestsInMs;return async function(){e.enableReportingOptions();for(const e of t){const t=(0,o.getFilteredProperties)(e),n=Object.keys(t);for(const t of n)a.info(\"preparing to executing testcase\",t),await e[t]();r>0&&await(0,i.sleep)(r)}return\"passed\"}}}},270:(e,t,r)=>{\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.getFilteredProperties=t.canaryTest=void 0,r(649);const n=Symbol(\"canaryTest\");function o(e,t){let r=Reflect.getMetadata(n,e);r?r.push(t):(r=[t],Reflect.defineMetadata(n,r,e))}t.canaryTest=function(){return o},t.getFilteredProperties=function(e){const t=Reflect.getMetadata(n,e),r={};return t.forEach((t=>r[t]=e[t])),r}},227:(e,t)=>{\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.TestCase=void 0,t.TestCase=class{constructor(e,t){this.httpClient=e,this.apiUrl=t}}},552:(e,t)=>{\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.sleep=t.areEqual=void 0,t.areEqual=function(e,t){if(e!==t)throw new Error(`Expected ${t} but found ${e}.`)},t.sleep=function(e){return new Promise((t=>setTimeout(t,e)))}},953:function(e,t,r){\"use strict\";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)\"default\"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,\"__esModule\",{value:!0}),o(r(90),t),o(r(552),t),o(r(227),t),o(r(270),t)},327:function(e,t,r){\"use strict\";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)\"default\"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return o(t,e),t};Object.defineProperty(t,\"__esModule\",{value:!0}),t.ApjsbAwsHttpClient=t.createHttpClient=void 0;const s=r(550),a=r(527),u=r(468),c=r(568);r(822);const l=i(r(310)),f=r(741),h=r(586);t.createHttpClient=function(e,t=new f.DefaultCredentialProvider,r){return new g(t,e,r)};const p=[\"GET\",\"HEAD\",\"PATCH\",\"CONNECT\",\"OPTIONS\",\"TRACE\"],d=[...p];class g{constructor(e,t,r,n){this.credentialProvider=e,this.region=t,this.httpsAgent=r,this.customHandler=n,this.httpClient=new a.NodeHttpHandler({httpsAgent:r})}async get(e,t,r){return this.request(\"GET\",e,t,void 0,r)}async post(e,t,r,n){return this.request(\"POST\",e,t,JSON.stringify(r),{...n,\"content-type\":\"application/json\"})}async put(e,t,r,n){return this.request(\"PUT\",e,t,JSON.stringify(r),{...n,\"content-type\":\"application/json\"})}async request(e,t,r,n,o){const i=new l.URL(t),s=i.hostname,a=i.pathname;let u,c;if(i.searchParams.forEach(((e,t)=>{u||(u={}),u[t]=e})),console.log(\"method\",e.toUpperCase()),console.log(\"noPayloadRequestMethod\",d),p.includes(e.toUpperCase())){if(n)throw new Error(`Invalid parameter, request ${e} should not contain data`);c=await this.createHttpRequest(s,a,r,e,u,void 0,o)}else c=await this.createHttpRequest(s,a,r,e,u,n,o);return this.sendRequest(c)}async sendRequest(e){const t=(await this.httpClient.handle(e)).response,r=await(0,h.parseBody)(t.body);return{statusCode:t.statusCode,headers:t.headers,body:r}}async createHttpRequest(e,t,r,n,o,i,s){const a=await this.credentialProvider.getCredential(),u=this.createRequest(e,t,n,o,i,s);return this.signRequest(a,r,u)}async signRequest(e,t,r){return new c.SignatureV4({credentials:e,region:this.region,service:t,sha256:s.Sha256}).sign(r)}createRequest(e,t,r,n,o,i){const s=new u.HttpRequest({method:r,protocol:\"https:\",hostname:e,headers:{...i,host:e},query:n,path:t});return s.method=r,o&&(s.body=o),s}}t.ApjsbAwsHttpClient=g},741:function(e,t,r){\"use strict\";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)\"default\"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return o(t,e),t};Object.defineProperty(t,\"__esModule\",{value:!0}),t.DefaultCredentialProvider=void 0;const s=i(r(990));t.DefaultCredentialProvider=class{constructor(){this.credentialChain=new s.CredentialProviderChain,this.credentialChain.providers.push(new s.FileSystemCredentials(\"~/.aws/credentials\")),this.credentialChain.providers.push(new s.EnvironmentCredentials(\"AWS\"))}getCredential(){return this.credentialChain.resolvePromise()}}},586:(e,t,r)=>{\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.parseBody=void 0;const n=r(527),o=r(128);t.parseBody=e=>((e=new Uint8Array)=>e instanceof Uint8Array?Promise.resolve(e):(0,n.streamCollector)(e)||Promise.resolve(new Uint8Array))(e).then((e=>(0,o.toUtf8)(e)))},117:(e,t,r)=>{\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.RawSha256=void 0;var n=r(776),o=function(){function e(){this.state=Int32Array.from(n.INIT),this.temp=new Int32Array(64),this.buffer=new Uint8Array(64),this.bufferLength=0,this.bytesHashed=0,this.finished=!1}return e.prototype.update=function(e){if(this.finished)throw new Error(\"Attempted to update an already finished hash.\");var t=0,r=e.byteLength;if(this.bytesHashed+=r,8*this.bytesHashed>n.MAX_HASHABLE_LENGTH)throw new Error(\"Cannot hash more than 2^53 - 1 bits\");for(;r>0;)this.buffer[this.bufferLength++]=e[t++],r--,this.bufferLength===n.BLOCK_SIZE&&(this.hashBuffer(),this.bufferLength=0)},e.prototype.digest=function(){if(!this.finished){var e=8*this.bytesHashed,t=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength),r=this.bufferLength;if(t.setUint8(this.bufferLength++,128),r%n.BLOCK_SIZE>=n.BLOCK_SIZE-8){for(var o=this.bufferLength;o<n.BLOCK_SIZE;o++)t.setUint8(o,0);this.hashBuffer(),this.bufferLength=0}for(o=this.bufferLength;o<n.BLOCK_SIZE-8;o++)t.setUint8(o,0);t.setUint32(n.BLOCK_SIZE-8,Math.floor(e/4294967296),!0),t.setUint32(n.BLOCK_SIZE-4,e),this.hashBuffer(),this.finished=!0}var i=new Uint8Array(n.DIGEST_LENGTH);for(o=0;o<8;o++)i[4*o]=this.state[o]>>>24&255,i[4*o+1]=this.state[o]>>>16&255,i[4*o+2]=this.state[o]>>>8&255,i[4*o+3]=this.state[o]>>>0&255;return i},e.prototype.hashBuffer=function(){for(var e=this.buffer,t=this.state,r=t[0],o=t[1],i=t[2],s=t[3],a=t[4],u=t[5],c=t[6],l=t[7],f=0;f<n.BLOCK_SIZE;f++){if(f<16)this.temp[f]=(255&e[4*f])<<24|(255&e[4*f+1])<<16|(255&e[4*f+2])<<8|255&e[4*f+3];else{var h=this.temp[f-2],p=(h>>>17|h<<15)^(h>>>19|h<<13)^h>>>10,d=((h=this.temp[f-15])>>>7|h<<25)^(h>>>18|h<<14)^h>>>3;this.temp[f]=(p+this.temp[f-7]|0)+(d+this.temp[f-16]|0)}var g=(((a>>>6|a<<26)^(a>>>11|a<<21)^(a>>>25|a<<7))+(a&u^~a&c)|0)+(l+(n.KEY[f]+this.temp[f]|0)|0)|0,y=((r>>>2|r<<30)^(r>>>13|r<<19)^(r>>>22|r<<10))+(r&o^r&i^o&i)|0;l=c,c=u,u=a,a=s+g|0,s=i,i=o,o=r,r=g+y|0}t[0]+=r,t[1]+=o,t[2]+=i,t[3]+=s,t[4]+=a,t[5]+=u,t[6]+=c,t[7]+=l},e}();t.RawSha256=o},776:(e,t)=>{\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.MAX_HASHABLE_LENGTH=t.INIT=t.KEY=t.DIGEST_LENGTH=t.BLOCK_SIZE=void 0,t.BLOCK_SIZE=64,t.DIGEST_LENGTH=32,t.KEY=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),t.INIT=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],t.MAX_HASHABLE_LENGTH=Math.pow(2,53)-1},550:(e,t,r)=>{\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),(0,r(711).__exportStar)(r(124),t)},124:(e,t,r)=>{\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.Sha256=void 0;var n=r(711),o=r(776),i=r(117),s=r(904),a=function(){function e(e){if(this.hash=new i.RawSha256,e){this.outer=new i.RawSha256;var t=function(e){var t=(0,s.convertToBuffer)(e);if(t.byteLength>o.BLOCK_SIZE){var r=new i.RawSha256;r.update(t),t=r.digest()}var n=new Uint8Array(o.BLOCK_SIZE);return n.set(t),n}(e),r=new Uint8Array(o.BLOCK_SIZE);r.set(t);for(var n=0;n<o.BLOCK_SIZE;n++)t[n]^=54,r[n]^=92;for(this.hash.update(t),this.outer.update(r),n=0;n<t.byteLength;n++)t[n]=0}}return e.prototype.update=function(e){if(!(0,s.isEmptyData)(e)&&!this.error)try{this.hash.update((0,s.convertToBuffer)(e))}catch(e){this.error=e}},e.prototype.digestSync=function(){if(this.error)throw this.error;return this.outer?(this.outer.finished||this.outer.update(this.hash.digest()),this.outer.digest()):this.hash.digest()},e.prototype.digest=function(){return(0,n.__awaiter)(this,void 0,void 0,(function(){return(0,n.__generator)(this,(function(e){return[2,this.digestSync()]}))}))},e}();t.Sha256=a},711:(e,t,r)=>{\"use strict\";r.r(t),r.d(t,{__assign:()=>i,__asyncDelegator:()=>b,__asyncGenerator:()=>_,__asyncValues:()=>w,__await:()=>m,__awaiter:()=>l,__classPrivateFieldGet:()=>A,__classPrivateFieldSet:()=>E,__createBinding:()=>h,__decorate:()=>a,__exportStar:()=>p,__extends:()=>o,__generator:()=>f,__importDefault:()=>O,__importStar:()=>C,__makeTemplateObject:()=>S,__metadata:()=>c,__param:()=>u,__read:()=>g,__rest:()=>s,__spread:()=>y,__spreadArrays:()=>v,__values:()=>d});var n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},n(e,t)};function o(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}var i=function(){return i=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},i.apply(this,arguments)};function s(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&\"function\"==typeof Object.getOwnPropertySymbols){var o=0;for(n=Object.getOwnPropertySymbols(e);o<n.length;o++)t.indexOf(n[o])<0&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]])}return r}function a(e,t,r,n){var o,i=arguments.length,s=i<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,n);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,r,s):o(t,r))||s);return i>3&&s&&Object.defineProperty(t,r,s),s}function u(e,t){return function(r,n){t(r,n,e)}}function c(e,t){if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function l(e,t,r,n){return new(r||(r=Promise))((function(o,i){function s(e){try{u(n.next(e))}catch(e){i(e)}}function a(e){try{u(n.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,a)}u((n=n.apply(e,t||[])).next())}))}function f(e,t){var r,n,o,i,s={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(r)throw new TypeError(\"Generator is already executing.\");for(;s;)try{if(r=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,n=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!((o=(o=s.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){s.label=i[1];break}if(6===i[0]&&s.label<o[1]){s.label=o[1],o=i;break}if(o&&s.label<o[2]){s.label=o[2],s.ops.push(i);break}o[2]&&s.ops.pop(),s.trys.pop();continue}i=t.call(e,s)}catch(e){i=[6,e],n=0}finally{r=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,a])}}}function h(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}function p(e,t){for(var r in e)\"default\"===r||t.hasOwnProperty(r)||(t[r]=e[r])}function d(e){var t=\"function\"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&\"number\"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")}function g(e,t){var r=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,i=r.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(n=i.next()).done;)s.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(o)throw o.error}}return s}function y(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(g(arguments[t]));return e}function v(){for(var e=0,t=0,r=arguments.length;t<r;t++)e+=arguments[t].length;var n=Array(e),o=0;for(t=0;t<r;t++)for(var i=arguments[t],s=0,a=i.length;s<a;s++,o++)n[o]=i[s];return n}function m(e){return this instanceof m?(this.v=e,this):new m(e)}function _(e,t,r){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var n,o=r.apply(e,t||[]),i=[];return n={},s(\"next\"),s(\"throw\"),s(\"return\"),n[Symbol.asyncIterator]=function(){return this},n;function s(e){o[e]&&(n[e]=function(t){return new Promise((function(r,n){i.push([e,t,r,n])>1||a(e,t)}))})}function a(e,t){try{(r=o[e](t)).value instanceof m?Promise.resolve(r.value.v).then(u,c):l(i[0][2],r)}catch(e){l(i[0][3],e)}var r}function u(e){a(\"next\",e)}function c(e){a(\"throw\",e)}function l(e,t){e(t),i.shift(),i.length&&a(i[0][0],i[0][1])}}function b(e){var t,r;return t={},n(\"next\"),n(\"throw\",(function(e){throw e})),n(\"return\"),t[Symbol.iterator]=function(){return this},t;function n(n,o){t[n]=e[n]?function(t){return(r=!r)?{value:m(e[n](t)),done:\"return\"===n}:o?o(t):t}:o}}function w(e){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var t,r=e[Symbol.asyncIterator];return r?r.call(e):(e=d(e),t={},n(\"next\"),n(\"throw\"),n(\"return\"),t[Symbol.asyncIterator]=function(){return this},t);function n(r){t[r]=e[r]&&function(t){return new Promise((function(n,o){!function(e,t,r,n){Promise.resolve(n).then((function(t){e({value:t,done:r})}),t)}(n,o,(t=e[r](t)).done,t.value)}))}}}function S(e,t){return Object.defineProperty?Object.defineProperty(e,\"raw\",{value:t}):e.raw=t,e}function C(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function O(e){return e&&e.__esModule?e:{default:e}}function A(e,t){if(!t.has(e))throw new TypeError(\"attempted to get private field on non-instance\");return t.get(e)}function E(e,t,r){if(!t.has(e))throw new TypeError(\"attempted to set private field on non-instance\");return t.set(e,r),r}},159:(e,t,r)=>{\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.convertToBuffer=void 0;var n=r(528),o=\"undefined\"!=typeof Buffer&&Buffer.from?function(e){return Buffer.from(e,\"utf8\")}:n.fromUtf8;t.convertToBuffer=function(e){return e instanceof Uint8Array?e:\"string\"==typeof e?o(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(e)}},904:(e,t,r)=>{\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.uint32ArrayFrom=t.numToUint8=t.isEmptyData=t.convertToBuffer=void 0;var n=r(159);Object.defineProperty(t,\"convertToBuffer\",{enumerable:!0,get:function(){return n.convertToBuffer}});var o=r(599);Object.defineProperty(t,\"isEmptyData\",{enumerable:!0,get:function(){return o.isEmptyData}});var i=r(919);Object.defineProperty(t,\"numToUint8\",{enumerable:!0,get:function(){return i.numToUint8}});var s=r(806);Object.defineProperty(t,\"uint32ArrayFrom\",{enumerable:!0,get:function(){return s.uint32ArrayFrom}})},599:(e,t)=>{\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.isEmptyData=void 0,t.isEmptyData=function(e){return\"string\"==typeof e?0===e.length:0===e.byteLength}},919:(e,t)=>{\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.numToUint8=void 0,t.numToUint8=function(e){return new Uint8Array([(4278190080&e)>>24,(16711680&e)>>16,(65280&e)>>8,255&e])}},806:(e,t)=>{\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.uint32ArrayFrom=void 0,t.uint32ArrayFrom=function(e){if(!Array.from){for(var t=new Uint32Array(e.length);0<e.length;)t[0]=e[0];return t}return Uint32Array.from(e)}},289:(e,t,r)=>{\"use strict\";r.d(t,{e:()=>n});var n=function(e){return\"function\"==typeof ArrayBuffer&&e instanceof ArrayBuffer||\"[object ArrayBuffer]\"===Object.prototype.toString.call(e)}},527:(e,t,r)=>{\"use strict\";r.r(t),r.d(t,{NodeHttp2Handler:()=>y,NodeHttpHandler:()=>d,streamCollector:()=>m});var n=r(468),o=r(107),i=r(16);function s(e){var t,r,n=[];try{for(var s=(0,o.XA)(Object.keys(e).sort()),a=s.next();!a.done;a=s.next()){var u=a.value,c=e[u];if(u=(0,i.i)(u),Array.isArray(c))for(var l=0,f=c.length;l<f;l++)n.push(u+\"=\"+(0,i.i)(c[l]));else{var h=u;(c||\"string\"==typeof c)&&(h+=\"=\"+(0,i.i)(c)),n.push(h)}}}catch(e){t={error:e}}finally{try{a&&!a.done&&(r=s.return)&&r.call(s)}finally{if(t)throw t.error}}return n.join(\"&\")}const a=require(\"http\"),u=require(\"https\");var c=[\"ECONNRESET\",\"EPIPE\",\"ETIMEDOUT\"],l=function(e){var t,r,n={};try{for(var i=(0,o.XA)(Object.keys(e)),s=i.next();!s.done;s=i.next()){var a=s.value,u=e[a];n[a]=Array.isArray(u)?u.join(\",\"):u}}catch(e){t={error:e}}finally{try{s&&!s.done&&(r=i.return)&&r.call(i)}finally{if(t)throw t.error}}return n};const f=require(\"stream\");function h(e,t){\"100-continue\"===(t.headers.Expect||t.headers.expect)?e.on(\"continue\",(function(){p(e,t.body)})):p(e,t.body)}function p(e,t){t instanceof f.Readable?t.pipe(e):t?e.end(Buffer.from(t)):e.end()}var d=function(){function e(e){var t=void 0===e?{}:e,r=t.connectionTimeout,n=t.socketTimeout,o=t.httpAgent,i=t.httpsAgent;this.metadata={handlerProtocol:\"http/1.1\"},this.connectionTimeout=r,this.socketTimeout=n,this.httpAgent=o||new a.Agent({keepAlive:!0,maxSockets:50}),this.httpsAgent=i||new u.Agent({keepAlive:!0,maxSockets:50})}return e.prototype.destroy=function(){this.httpAgent.destroy(),this.httpsAgent.destroy()},e.prototype.handle=function(e,t){var r=this,o=(void 0===t?{}:t).abortSignal;return new Promise((function(t,i){if(null==o?void 0:o.aborted){var f=new Error(\"Request aborted\");return f.name=\"AbortError\",void i(f)}var p=\"https:\"===e.protocol,d=s(e.query||{}),g={headers:e.headers,host:e.hostname,method:e.method,path:d?e.path+\"?\"+d:e.path,port:e.port,agent:p?r.httpsAgent:r.httpAgent},y=(p?u.request:a.request)(g,(function(e){var r=new n.HttpResponse({statusCode:e.statusCode||-1,headers:l(e.headers),body:e});t({response:r})}));y.on(\"error\",(function(e){c.includes(e.code)?i(Object.assign(e,{name:\"TimeoutError\"})):i(e)})),function(e,t,r){void 0===r&&(r=0),r&&e.on(\"socket\",(function(n){if(n.connecting){var o=setTimeout((function(){e.destroy(),t(Object.assign(new Error(\"Socket timed out without establishing a connection within \"+r+\" ms\"),{name:\"TimeoutError\"}))}),r);n.on(\"connect\",(function(){clearTimeout(o)}))}}))}(y,i,r.connectionTimeout),function(e,t,r){void 0===r&&(r=0),e.setTimeout(r,(function(){e.destroy(),t(Object.assign(new Error(\"Connection timed out after \"+r+\" ms\"),{name:\"TimeoutError\"}))}))}(y,i,r.socketTimeout),o&&(o.onabort=function(){y.abort();var e=new Error(\"Request aborted\");e.name=\"AbortError\",i(e)}),h(y,e)}))},e}();const g=require(\"http2\");var y=function(){function e(e){var t=void 0===e?{}:e,r=t.requestTimeout,n=t.sessionTimeout;this.metadata={handlerProtocol:\"h2\"},this.requestTimeout=r,this.sessionTimeout=n,this.connectionPool=new Map}return e.prototype.destroy=function(){var e,t;try{for(var r=(0,o.XA)(this.connectionPool),n=r.next();!n.done;n=r.next()){var i=(0,o.CR)(n.value,2);i[0],i[1].destroy()}}catch(t){e={error:t}}finally{try{n&&!n.done&&(t=r.return)&&t.call(r)}finally{if(e)throw e.error}}this.connectionPool.clear()},e.prototype.handle=function(e,t){var r=this,i=(void 0===t?{}:t).abortSignal;return new Promise((function(t,a){var u,c=!1,f=function(e){c=!0,a(e)};if(null==i?void 0:i.aborted){var p=new Error(\"Request aborted\");return p.name=\"AbortError\",void f(p)}var d=e.hostname,y=e.method,v=e.port,m=e.protocol,_=e.path,b=s(e.query||{}),w=r.getSession(m+\"//\"+d+(v?\":\"+v:\"\")).request((0,o.pi)((0,o.pi)({},e.headers),((u={})[g.constants.HTTP2_HEADER_PATH]=b?_+\"?\"+b:_,u[g.constants.HTTP2_HEADER_METHOD]=y,u)));w.on(\"response\",(function(e){var r=new n.HttpResponse({statusCode:e[\":status\"]||-1,headers:l(e),body:w});c=!0,t({response:r})}));var S=r.requestTimeout;S&&w.setTimeout(S,(function(){w.close();var e=new Error(\"Stream timed out because of no activity for \"+S+\" ms\");e.name=\"TimeoutError\",f(e)})),i&&(i.onabort=function(){w.close();var e=new Error(\"Request aborted\");e.name=\"AbortError\",f(e)}),w.on(\"frameError\",f),w.on(\"error\",f),w.on(\"goaway\",f),w.on(\"aborted\",f),w.on(\"close\",(function(){c||f(new Error(\"Unexpected error: http2 request did not get a response\"))})),h(w,e)}))},e.prototype.getSession=function(e){var t=this,r=this.connectionPool,n=r.get(e);if(n)return n;var o=(0,g.connect)(e);r.set(e,o);var i=function(){t.destroySession(e,o)};o.on(\"goaway\",i),o.on(\"error\",i),o.on(\"frameError\",i);var s=this.sessionTimeout;return s&&o.setTimeout(s,(function(){r.get(e)===o&&(o.close(),r.delete(e))})),o},e.prototype.destroySession=function(e,t){this.connectionPool.get(e)===t&&(this.connectionPool.delete(e),t.removeAllListeners(\"goaway\"),t.removeAllListeners(\"error\"),t.removeAllListeners(\"frameError\"),t.destroyed||t.destroy())},e}(),v=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.bufferedBytes=[],t}return(0,o.ZT)(t,e),t.prototype._write=function(e,t,r){this.bufferedBytes.push(e),r()},t}(f.Writable),m=function(e){return new Promise((function(t,r){var n=new v;e.pipe(n),e.on(\"error\",(function(e){n.end(),r(e)})),n.on(\"error\",r),n.on(\"finish\",(function(){var e=new Uint8Array(Buffer.concat(this.bufferedBytes));t(e)}))}))}},468:(e,t,r)=>{\"use strict\";r.r(t),r.d(t,{HttpRequest:()=>i,HttpResponse:()=>n,isValidHostname:()=>s});var n=function(){function e(e){this.statusCode=e.statusCode,this.headers=e.headers||{},this.body=e.body}return e.isInstance=function(e){if(!e)return!1;var t=e;return\"number\"==typeof t.statusCode&&\"object\"==typeof t.headers},e}(),o=r(107),i=function(){function e(e){this.method=e.method||\"GET\",this.hostname=e.hostname||\"localhost\",this.port=e.port,this.query=e.query||{},this.headers=e.headers||{},this.body=e.body,this.protocol=e.protocol?\":\"!==e.protocol.substr(-1)?e.protocol+\":\":e.protocol:\"https:\",this.path=e.path?\"/\"!==e.path.charAt(0)?\"/\"+e.path:e.path:\"/\"}return e.isInstance=function(e){if(!e)return!1;var t=e;return\"method\"in t&&\"protocol\"in t&&\"hostname\"in t&&\"path\"in t&&\"object\"==typeof t.query&&\"object\"==typeof t.headers},e.prototype.clone=function(){var t,r=new e((0,o.pi)((0,o.pi)({},this),{headers:(0,o.pi)({},this.headers)}));return r.query&&(r.query=(t=r.query,Object.keys(t).reduce((function(e,r){var n,i=t[r];return(0,o.pi)((0,o.pi)({},e),((n={})[r]=Array.isArray(i)?(0,o.ev)([],(0,o.CR)(i)):i,n))}),{}))),r},e}();function s(e){return/^[a-z0-9][a-z0-9\\.\\-]*[a-z0-9]$/.test(e)}},568:(e,t,r)=>{\"use strict\";r.r(t),r.d(t,{SignatureV4:()=>I,clearCredentialCache:()=>L,createScope:()=>E,getSigningKey:()=>P});for(var n=r(107),o={},i={},s=0;s<256;s++){var a=s.toString(16).toLowerCase();1===a.length&&(a=\"0\"+a),o[s]=a,i[a]=s}function u(e){for(var t=\"\",r=0;r<e.byteLength;r++)t+=o[e[r]];return t}var c=\"X-Amz-Date\",l=\"X-Amz-Signature\",f=\"X-Amz-Security-Token\",h=\"authorization\",p=c.toLowerCase(),d=[h,p,\"date\"],g=l.toLowerCase(),y=\"x-amz-content-sha256\",v=f.toLowerCase(),m={authorization:!0,\"cache-control\":!0,connection:!0,expect:!0,from:!0,\"keep-alive\":!0,\"max-forwards\":!0,pragma:!0,referer:!0,te:!0,trailer:!0,\"transfer-encoding\":!0,upgrade:!0,\"user-agent\":!0,\"x-amzn-trace-id\":!0},_=/^proxy-/,b=/^sec-/,w=\"AWS4-HMAC-SHA256\",S=\"AWS4-HMAC-SHA256-PAYLOAD\",C=\"aws4_request\",O={},A=[];function E(e,t,r){return e+\"/\"+t+\"/\"+r+\"/\"+C}var P=function(e,t,r,o,i){return(0,n.mG)(void 0,void 0,void 0,(function(){var s,a,c,l,f,h,p,d,g;return(0,n.Jh)(this,(function(y){switch(y.label){case 0:return[4,T(e,t.secretAccessKey,t.accessKeyId)];case 1:if(s=y.sent(),(a=r+\":\"+o+\":\"+i+\":\"+u(s)+\":\"+t.sessionToken)in O)return[2,O[a]];for(A.push(a);A.length>50;)delete O[A.shift()];c=\"AWS4\"+t.secretAccessKey,y.label=2;case 2:y.trys.push([2,7,8,9]),l=(0,n.XA)([r,o,i,C]),f=l.next(),y.label=3;case 3:return f.done?[3,6]:(h=f.value,[4,T(e,c,h)]);case 4:c=y.sent(),y.label=5;case 5:return f=l.next(),[3,3];case 6:return[3,9];case 7:return p=y.sent(),d={error:p},[3,9];case 8:try{f&&!f.done&&(g=l.return)&&g.call(l)}finally{if(d)throw d.error}return[7];case 9:return[2,O[a]=c]}}))}))};function L(){A.length=0,Object.keys(O).forEach((function(e){delete O[e]}))}function T(e,t,r){var n=new e(t);return n.update(r),n.digest()}function j(e,t,r){var o,i,s=e.headers,a={};try{for(var u=(0,n.XA)(Object.keys(s).sort()),c=u.next();!c.done;c=u.next()){var l=c.value,f=l.toLowerCase();(f in m||(null==t?void 0:t.has(f))||_.test(f)||b.test(f))&&(!r||r&&!r.has(f))||(a[f]=s[l].trim().replace(/\\s+/g,\" \"))}}catch(e){o={error:e}}finally{try{c&&!c.done&&(i=u.return)&&i.call(u)}finally{if(o)throw o.error}}return a}var M=r(16),R=r(289);function x(e,t){var r=e.headers,o=e.body;return(0,n.mG)(this,void 0,void 0,(function(){var e,i,s,a,c,l,f;return(0,n.Jh)(this,(function(h){switch(h.label){case 0:try{for(e=(0,n.XA)(Object.keys(r)),i=e.next();!i.done;i=e.next())if((s=i.value).toLowerCase()===y)return[2,r[s]]}catch(e){l={error:e}}finally{try{i&&!i.done&&(f=e.return)&&f.call(e)}finally{if(l)throw l.error}}return null!=o?[3,1]:[2,\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"];case 1:return\"string\"==typeof o||ArrayBuffer.isView(o)||(0,R.e)(o)?((a=new t).update(o),c=u,[4,a.digest()]):[3,3];case 2:return[2,c.apply(void 0,[h.sent()])];case 3:return[2,\"UNSIGNED-PAYLOAD\"]}}))}))}function k(e){var t=e.headers,r=e.query,o=(0,n._T)(e,[\"headers\",\"query\"]);return(0,n.pi)((0,n.pi)({},o),{headers:(0,n.pi)({},t),query:r?B(r):void 0})}function B(e){return Object.keys(e).reduce((function(t,r){var o,i=e[r];return(0,n.pi)((0,n.pi)({},t),((o={})[r]=Array.isArray(i)?(0,n.ev)([],(0,n.CR)(i)):i,o))}),{})}function U(e){var t,r;e=\"function\"==typeof e.clone?e.clone():k(e);try{for(var o=(0,n.XA)(Object.keys(e.headers)),i=o.next();!i.done;i=o.next()){var s=i.value;d.indexOf(s.toLowerCase())>-1&&delete e.headers[s]}}catch(e){t={error:e}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(t)throw t.error}}return e}var I=function(){function e(e){var t=e.applyChecksum,r=e.credentials,n=e.region,o=e.service,i=e.sha256,s=e.uriEscapePath,a=void 0===s||s;this.service=o,this.sha256=i,this.uriEscapePath=a,this.applyChecksum=\"boolean\"!=typeof t||t,this.regionProvider=N(n),this.credentialProvider=H(r)}return e.prototype.presign=function(e,t){return void 0===t&&(t={}),(0,n.mG)(this,void 0,void 0,(function(){var r,o,i,s,a,u,h,p,d,g,y,v,m,_,b,S,C,O,A,P,L,T,M,R;return(0,n.Jh)(this,(function(B){switch(B.label){case 0:return r=t.signingDate,o=void 0===r?new Date:r,i=t.expiresIn,s=void 0===i?3600:i,a=t.unsignableHeaders,u=t.unhoistableHeaders,h=t.signableHeaders,p=t.signingRegion,d=t.signingService,[4,this.credentialProvider()];case 1:return g=B.sent(),null==p?[3,2]:(v=p,[3,4]);case 2:return[4,this.regionProvider()];case 3:v=B.sent(),B.label=4;case 4:return y=v,m=q(o),_=m.longDate,b=m.shortDate,s>604800?[2,Promise.reject(\"Signature version 4 presigned URLs must have an expiration date less than one week in the future\")]:(S=E(b,y,null!=d?d:this.service),C=function(e,t){var r,o,i;void 0===t&&(t={});var s=\"function\"==typeof e.clone?e.clone():k(e),a=s.headers,u=s.query,c=void 0===u?{}:u;try{for(var l=(0,n.XA)(Object.keys(a)),f=l.next();!f.done;f=l.next()){var h=f.value,p=h.toLowerCase();\"x-amz-\"!==p.substr(0,6)||(null===(i=t.unhoistableHeaders)||void 0===i?void 0:i.has(p))||(c[h]=a[h],delete a[h])}}catch(e){r={error:e}}finally{try{f&&!f.done&&(o=l.return)&&o.call(l)}finally{if(r)throw r.error}}return(0,n.pi)((0,n.pi)({},e),{headers:a,query:c})}(U(e),{unhoistableHeaders:u}),g.sessionToken&&(C.query[f]=g.sessionToken),C.query[\"X-Amz-Algorithm\"]=w,C.query[\"X-Amz-Credential\"]=g.accessKeyId+\"/\"+S,C.query[c]=_,C.query[\"X-Amz-Expires\"]=s.toString(10),O=j(C,a,h),C.query[\"X-Amz-SignedHeaders\"]=D(O),A=C.query,P=l,L=this.getSignature,T=[_,S,this.getSigningKey(g,y,b,d)],M=this.createCanonicalRequest,R=[C,O],[4,x(e,this.sha256)]);case 5:return[4,L.apply(this,T.concat([M.apply(this,R.concat([B.sent()]))]))];case 6:return A[P]=B.sent(),[2,C]}}))}))},e.prototype.sign=function(e,t){return(0,n.mG)(this,void 0,void 0,(function(){return(0,n.Jh)(this,(function(r){return\"string\"==typeof e?[2,this.signString(e,t)]:e.headers&&e.payload?[2,this.signEvent(e,t)]:[2,this.signRequest(e,t)]}))}))},e.prototype.signEvent=function(e,t){var r=e.headers,o=e.payload,i=t.signingDate,s=void 0===i?new Date:i,a=t.priorSignature,c=t.signingRegion,l=t.signingService;return(0,n.mG)(this,void 0,void 0,(function(){var e,t,i,f,h,p,d,g,y,v,m;return(0,n.Jh)(this,(function(n){switch(n.label){case 0:return null==c?[3,1]:(t=c,[3,3]);case 1:return[4,this.regionProvider()];case 2:t=n.sent(),n.label=3;case 3:return e=t,i=q(s),f=i.shortDate,h=i.longDate,p=E(f,e,null!=l?l:this.service),[4,x({headers:{},body:o},this.sha256)];case 4:return d=n.sent(),(g=new this.sha256).update(r),v=u,[4,g.digest()];case 5:return y=v.apply(void 0,[n.sent()]),m=[S,h,p,a,y,d].join(\"\\n\"),[2,this.signString(m,{signingDate:s,signingRegion:e,signingService:l})]}}))}))},e.prototype.signString=function(e,t){var r=void 0===t?{}:t,o=r.signingDate,i=void 0===o?new Date:o,s=r.signingRegion,a=r.signingService;return(0,n.mG)(this,void 0,void 0,(function(){var t,r,o,c,l,f,h,p;return(0,n.Jh)(this,(function(n){switch(n.label){case 0:return[4,this.credentialProvider()];case 1:return t=n.sent(),null==s?[3,2]:(o=s,[3,4]);case 2:return[4,this.regionProvider()];case 3:o=n.sent(),n.label=4;case 4:return r=o,c=q(i).shortDate,h=(f=this.sha256).bind,[4,this.getSigningKey(t,r,c,a)];case 5:return(l=new(h.apply(f,[void 0,n.sent()]))).update(e),p=u,[4,l.digest()];case 6:return[2,p.apply(void 0,[n.sent()])]}}))}))},e.prototype.signRequest=function(e,t){var r=void 0===t?{}:t,o=r.signingDate,i=void 0===o?new Date:o,s=r.signableHeaders,a=r.unsignableHeaders,u=r.signingRegion,c=r.signingService;return(0,n.mG)(this,void 0,void 0,(function(){var t,r,o,l,f,d,g,m,_,b,S;return(0,n.Jh)(this,(function(C){switch(C.label){case 0:return[4,this.credentialProvider()];case 1:return t=C.sent(),null==u?[3,2]:(o=u,[3,4]);case 2:return[4,this.regionProvider()];case 3:o=C.sent(),C.label=4;case 4:return r=o,l=U(e),f=q(i),d=f.longDate,g=f.shortDate,m=E(g,r,null!=c?c:this.service),l.headers[p]=d,t.sessionToken&&(l.headers[v]=t.sessionToken),[4,x(l,this.sha256)];case 5:return _=C.sent(),!function(e,t){var r,o;e=e.toLowerCase();try{for(var i=(0,n.XA)(Object.keys(t)),s=i.next();!s.done;s=i.next())if(e===s.value.toLowerCase())return!0}catch(e){r={error:e}}finally{try{s&&!s.done&&(o=i.return)&&o.call(i)}finally{if(r)throw r.error}}return!1}(y,l.headers)&&this.applyChecksum&&(l.headers[y]=_),b=j(l,a,s),[4,this.getSignature(d,m,this.getSigningKey(t,r,g,c),this.createCanonicalRequest(l,b,_))];case 6:return S=C.sent(),l.headers[h]=w+\" Credential=\"+t.accessKeyId+\"/\"+m+\", SignedHeaders=\"+D(b)+\", Signature=\"+S,[2,l]}}))}))},e.prototype.createCanonicalRequest=function(e,t,r){var o=Object.keys(t).sort();return e.method+\"\\n\"+this.getCanonicalPath(e)+\"\\n\"+function(e){var t,r,o=e.query,i=void 0===o?{}:o,s=[],a={},u=function(e){if(e.toLowerCase()===g)return\"continue\";s.push(e);var t=i[e];\"string\"==typeof t?a[e]=(0,M.i)(e)+\"=\"+(0,M.i)(t):Array.isArray(t)&&(a[e]=t.slice(0).sort().reduce((function(t,r){return t.concat([(0,M.i)(e)+\"=\"+(0,M.i)(r)])}),[]).join(\"&\"))};try{for(var c=(0,n.XA)(Object.keys(i).sort()),l=c.next();!l.done;l=c.next())u(l.value)}catch(e){t={error:e}}finally{try{l&&!l.done&&(r=c.return)&&r.call(c)}finally{if(t)throw t.error}}return s.map((function(e){return a[e]})).filter((function(e){return e})).join(\"&\")}(e)+\"\\n\"+o.map((function(e){return e+\":\"+t[e]})).join(\"\\n\")+\"\\n\\n\"+o.join(\";\")+\"\\n\"+r},e.prototype.createStringToSign=function(e,t,r){return(0,n.mG)(this,void 0,void 0,(function(){var o,i;return(0,n.Jh)(this,(function(n){switch(n.label){case 0:return(o=new this.sha256).update(r),[4,o.digest()];case 1:return i=n.sent(),[2,w+\"\\n\"+e+\"\\n\"+t+\"\\n\"+u(i)]}}))}))},e.prototype.getCanonicalPath=function(e){var t=e.path;return this.uriEscapePath?\"/\"+encodeURIComponent(t.replace(/^\\//,\"\")).replace(/%2F/g,\"/\"):t},e.prototype.getSignature=function(e,t,r,o){return(0,n.mG)(this,void 0,void 0,(function(){var i,s,a,c,l;return(0,n.Jh)(this,(function(n){switch(n.label){case 0:return[4,this.createStringToSign(e,t,o)];case 1:return i=n.sent(),c=(a=this.sha256).bind,[4,r];case 2:return(s=new(c.apply(a,[void 0,n.sent()]))).update(i),l=u,[4,s.digest()];case 3:return[2,l.apply(void 0,[n.sent()])]}}))}))},e.prototype.getSigningKey=function(e,t,r,n){return P(this.sha256,e,r,t,n||this.service)},e}(),q=function(e){var t,r=(t=e,function(e){return\"number\"==typeof e?new Date(1e3*e):\"string\"==typeof e?Number(e)?new Date(1e3*Number(e)):new Date(e):e}(t).toISOString().replace(/\\.\\d{3}Z$/,\"Z\")).replace(/[\\-:]/g,\"\");return{longDate:r,shortDate:r.substr(0,8)}},D=function(e){return Object.keys(e).sort().join(\";\")},N=function(e){if(\"string\"==typeof e){var t=Promise.resolve(e);return function(){return t}}return e},H=function(e){if(\"object\"==typeof e){var t=Promise.resolve(e);return function(){return t}}return e}},16:(e,t,r)=>{\"use strict\";r.d(t,{i:()=>n});var n=function(e){return encodeURIComponent(e).replace(/[!'()*]/g,o)},o=function(e){return\"%\"+e.charCodeAt(0).toString(16).toUpperCase()}},528:(e,t,r)=>{\"use strict\";r.r(t),r.d(t,{fromUtf8:()=>n,toUtf8:()=>o});var n=function(e){return\"function\"==typeof TextEncoder?function(e){return(new TextEncoder).encode(e)}(e):function(e){for(var t=[],r=0,n=e.length;r<n;r++){var o=e.charCodeAt(r);if(o<128)t.push(o);else if(o<2048)t.push(o>>6|192,63&o|128);else if(r+1<e.length&&55296==(64512&o)&&56320==(64512&e.charCodeAt(r+1))){var i=65536+((1023&o)<<10)+(1023&e.charCodeAt(++r));t.push(i>>18|240,i>>12&63|128,i>>6&63|128,63&i|128)}else t.push(o>>12|224,o>>6&63|128,63&o|128)}return Uint8Array.from(t)}(e)},o=function(e){return\"function\"==typeof TextDecoder?function(e){return new TextDecoder(\"utf-8\").decode(e)}(e):function(e){for(var t=\"\",r=0,n=e.length;r<n;r++){var o=e[r];if(o<128)t+=String.fromCharCode(o);else if(192<=o&&o<224){var i=e[++r];t+=String.fromCharCode((31&o)<<6|63&i)}else if(240<=o&&o<365){var s=\"%\"+[o,e[++r],e[++r],e[++r]].map((function(e){return e.toString(16)})).join(\"%\");t+=decodeURIComponent(s)}else t+=String.fromCharCode((15&o)<<12|(63&e[++r])<<6|63&e[++r])}return t}(e)}},128:(e,t,r)=>{\"use strict\";r.r(t),r.d(t,{fromUtf8:()=>i,toUtf8:()=>s});var n=r(289);const o=require(\"buffer\");var i=function(e){var t=function(e,t){if(\"string\"!=typeof e)throw new TypeError('The \"input\" argument must be of type string. Received type '+typeof e+\" (\"+e+\")\");return t?o.Buffer.from(e,t):o.Buffer.from(e)}(e,\"utf8\");return new Uint8Array(t.buffer,t.byteOffset,t.byteLength/Uint8Array.BYTES_PER_ELEMENT)},s=function(e){return function(e,t,r){if(void 0===t&&(t=0),void 0===r&&(r=e.byteLength-t),!(0,n.e)(e))throw new TypeError('The \"input\" argument must be ArrayBuffer. Received type '+typeof e+\" (\"+e+\")\");return o.Buffer.from(e,t,r)}(e.buffer,e.byteOffset,e.byteLength).toString(\"utf8\")}},669:e=>{var t=Object.prototype.toString,r=\"undefined\"!=typeof Buffer&&\"function\"==typeof Buffer.alloc&&\"function\"==typeof Buffer.allocUnsafe&&\"function\"==typeof Buffer.from;e.exports=function(e,n,o){if(\"number\"==typeof e)throw new TypeError('\"value\" argument must not be a number');return i=e,\"ArrayBuffer\"===t.call(i).slice(8,-1)?function(e,t,n){t>>>=0;var o=e.byteLength-t;if(o<0)throw new RangeError(\"'offset' is out of bounds\");if(void 0===n)n=o;else if((n>>>=0)>o)throw new RangeError(\"'length' is out of bounds\");return r?Buffer.from(e.slice(t,t+n)):new Buffer(new Uint8Array(e.slice(t,t+n)))}(e,n,o):\"string\"==typeof e?function(e,t){if(\"string\"==typeof t&&\"\"!==t||(t=\"utf8\"),!Buffer.isEncoding(t))throw new TypeError('\"encoding\" must be a valid string encoding');return r?Buffer.from(e,t):new Buffer(e,t)}(e,n):r?Buffer.from(e):new Buffer(e);var i}},649:()=>{var e;!function(e){!function(t){var r=\"object\"==typeof global?global:\"object\"==typeof self?self:\"object\"==typeof this?this:Function(\"return this;\")(),n=o(e);function o(e,t){return function(r,n){\"function\"!=typeof e[r]&&Object.defineProperty(e,r,{configurable:!0,writable:!0,value:n}),t&&t(r,n)}}void 0===r.Reflect?r.Reflect=e:n=o(r.Reflect,n),function(e){var t=Object.prototype.hasOwnProperty,r=\"function\"==typeof Symbol,n=r&&void 0!==Symbol.toPrimitive?Symbol.toPrimitive:\"@@toPrimitive\",o=r&&void 0!==Symbol.iterator?Symbol.iterator:\"@@iterator\",i=\"function\"==typeof Object.create,s={__proto__:[]}instanceof Array,a=!i&&!s,u={create:i?function(){return B(Object.create(null))}:s?function(){return B({__proto__:null})}:function(){return B({})},has:a?function(e,r){return t.call(e,r)}:function(e,t){return t in e},get:a?function(e,r){return t.call(e,r)?e[r]:void 0}:function(e,t){return e[t]}},c=Object.getPrototypeOf(Function),l=\"object\"==typeof process&&process.env&&\"true\"===process.env.REFLECT_METADATA_USE_MAP_POLYFILL,f=l||\"function\"!=typeof Map||\"function\"!=typeof Map.prototype.entries?function(){var e={},t=[],r=function(){function e(e,t,r){this._index=0,this._keys=e,this._values=t,this._selector=r}return e.prototype[\"@@iterator\"]=function(){return this},e.prototype[o]=function(){return this},e.prototype.next=function(){var e=this._index;if(e>=0&&e<this._keys.length){var r=this._selector(this._keys[e],this._values[e]);return e+1>=this._keys.length?(this._index=-1,this._keys=t,this._values=t):this._index++,{value:r,done:!1}}return{value:void 0,done:!0}},e.prototype.throw=function(e){throw this._index>=0&&(this._index=-1,this._keys=t,this._values=t),e},e.prototype.return=function(e){return this._index>=0&&(this._index=-1,this._keys=t,this._values=t),{value:e,done:!0}},e}();return function(){function t(){this._keys=[],this._values=[],this._cacheKey=e,this._cacheIndex=-2}return Object.defineProperty(t.prototype,\"size\",{get:function(){return this._keys.length},enumerable:!0,configurable:!0}),t.prototype.has=function(e){return this._find(e,!1)>=0},t.prototype.get=function(e){var t=this._find(e,!1);return t>=0?this._values[t]:void 0},t.prototype.set=function(e,t){var r=this._find(e,!0);return this._values[r]=t,this},t.prototype.delete=function(t){var r=this._find(t,!1);if(r>=0){for(var n=this._keys.length,o=r+1;o<n;o++)this._keys[o-1]=this._keys[o],this._values[o-1]=this._values[o];return this._keys.length--,this._values.length--,t===this._cacheKey&&(this._cacheKey=e,this._cacheIndex=-2),!0}return!1},t.prototype.clear=function(){this._keys.length=0,this._values.length=0,this._cacheKey=e,this._cacheIndex=-2},t.prototype.keys=function(){return new r(this._keys,this._values,n)},t.prototype.values=function(){return new r(this._keys,this._values,i)},t.prototype.entries=function(){return new r(this._keys,this._values,s)},t.prototype[\"@@iterator\"]=function(){return this.entries()},t.prototype[o]=function(){return this.entries()},t.prototype._find=function(e,t){return this._cacheKey!==e&&(this._cacheIndex=this._keys.indexOf(this._cacheKey=e)),this._cacheIndex<0&&t&&(this._cacheIndex=this._keys.length,this._keys.push(e),this._values.push(void 0)),this._cacheIndex},t}();function n(e,t){return e}function i(e,t){return t}function s(e,t){return[e,t]}}():Map,h=l||\"function\"!=typeof Set||\"function\"!=typeof Set.prototype.entries?function(){function e(){this._map=new f}return Object.defineProperty(e.prototype,\"size\",{get:function(){return this._map.size},enumerable:!0,configurable:!0}),e.prototype.has=function(e){return this._map.has(e)},e.prototype.add=function(e){return this._map.set(e,e),this},e.prototype.delete=function(e){return this._map.delete(e)},e.prototype.clear=function(){this._map.clear()},e.prototype.keys=function(){return this._map.keys()},e.prototype.values=function(){return this._map.values()},e.prototype.entries=function(){return this._map.entries()},e.prototype[\"@@iterator\"]=function(){return this.keys()},e.prototype[o]=function(){return this.keys()},e}():Set,p=new(l||\"function\"!=typeof WeakMap?function(){var e=16,r=u.create(),n=o();return function(){function e(){this._key=o()}return e.prototype.has=function(e){var t=i(e,!1);return void 0!==t&&u.has(t,this._key)},e.prototype.get=function(e){var t=i(e,!1);return void 0!==t?u.get(t,this._key):void 0},e.prototype.set=function(e,t){return i(e,!0)[this._key]=t,this},e.prototype.delete=function(e){var t=i(e,!1);return void 0!==t&&delete t[this._key]},e.prototype.clear=function(){this._key=o()},e}();function o(){var e;do{e=\"@@WeakMap@@\"+a()}while(u.has(r,e));return r[e]=!0,e}function i(e,r){if(!t.call(e,n)){if(!r)return;Object.defineProperty(e,n,{value:u.create()})}return e[n]}function s(e,t){for(var r=0;r<t;++r)e[r]=255*Math.random()|0;return e}function a(){var t,r=(t=e,\"function\"==typeof Uint8Array?\"undefined\"!=typeof crypto?crypto.getRandomValues(new Uint8Array(t)):\"undefined\"!=typeof msCrypto?msCrypto.getRandomValues(new Uint8Array(t)):s(new Uint8Array(t),t):s(new Array(t),t));r[6]=79&r[6]|64,r[8]=191&r[8]|128;for(var n=\"\",o=0;o<e;++o){var i=r[o];4!==o&&6!==o&&8!==o||(n+=\"-\"),i<16&&(n+=\"0\"),n+=i.toString(16).toLowerCase()}return n}}():WeakMap);function d(e,t,r){var n=p.get(e);if(C(n)){if(!r)return;n=new f,p.set(e,n)}var o=n.get(t);if(C(o)){if(!r)return;o=new f,n.set(t,o)}return o}function g(e,t,r){if(y(e,t,r))return!0;var n=k(t);return!O(n)&&g(e,n,r)}function y(e,t,r){var n=d(t,r,!1);return!C(n)&&!!n.has(e)}function v(e,t,r){if(y(e,t,r))return m(e,t,r);var n=k(t);return O(n)?void 0:v(e,n,r)}function m(e,t,r){var n=d(t,r,!1);if(!C(n))return n.get(e)}function _(e,t,r,n){d(r,n,!0).set(e,t)}function b(e,t){var r=w(e,t),n=k(e);if(null===n)return r;var o=b(n,t);if(o.length<=0)return r;if(r.length<=0)return o;for(var i=new h,s=[],a=0,u=r;a<u.length;a++){var c=u[a];i.has(c)||(i.add(c),s.push(c))}for(var l=0,f=o;l<f.length;l++)c=f[l],i.has(c)||(i.add(c),s.push(c));return s}function w(e,t){var r=[],n=d(e,t,!1);if(C(n))return r;for(var i=function(e){var t=M(e,o);if(!T(t))throw new TypeError;var r=t.call(e);if(!A(r))throw new TypeError;return r}(n.keys()),s=0;;){var a=R(i);if(!a)return r.length=s,r;var u=a.value;try{r[s]=u}catch(e){try{x(i)}finally{throw e}}s++}}function S(e){if(null===e)return 1;switch(typeof e){case\"undefined\":return 0;case\"boolean\":return 2;case\"string\":return 3;case\"symbol\":return 4;case\"number\":return 5;case\"object\":return null===e?1:6;default:return 6}}function C(e){return void 0===e}function O(e){return null===e}function A(e){return\"object\"==typeof e?null!==e:\"function\"==typeof e}function E(e,t){switch(S(e)){case 0:case 1:case 2:case 3:case 4:case 5:return e}var r=3===t?\"string\":5===t?\"number\":\"default\",o=M(e,n);if(void 0!==o){var i=o.call(e,r);if(A(i))throw new TypeError;return i}return function(e,t){if(\"string\"===t){var r=e.toString;if(T(r)&&!A(o=r.call(e)))return o;if(T(n=e.valueOf)&&!A(o=n.call(e)))return o}else{var n;if(T(n=e.valueOf)&&!A(o=n.call(e)))return o;var o,i=e.toString;if(T(i)&&!A(o=i.call(e)))return o}throw new TypeError}(e,\"default\"===r?\"number\":r)}function P(e){var t=E(e,3);return\"symbol\"==typeof t?t:function(e){return\"\"+e}(t)}function L(e){return Array.isArray?Array.isArray(e):e instanceof Object?e instanceof Array:\"[object Array]\"===Object.prototype.toString.call(e)}function T(e){return\"function\"==typeof e}function j(e){return\"function\"==typeof e}function M(e,t){var r=e[t];if(null!=r){if(!T(r))throw new TypeError;return r}}function R(e){var t=e.next();return!t.done&&t}function x(e){var t=e.return;t&&t.call(e)}function k(e){var t=Object.getPrototypeOf(e);if(\"function\"!=typeof e||e===c)return t;if(t!==c)return t;var r=e.prototype,n=r&&Object.getPrototypeOf(r);if(null==n||n===Object.prototype)return t;var o=n.constructor;return\"function\"!=typeof o||o===e?t:o}function B(e){return e.__=void 0,delete e.__,e}e(\"decorate\",(function(e,t,r,n){if(C(r)){if(!L(e))throw new TypeError;if(!j(t))throw new TypeError;return function(e,t){for(var r=e.length-1;r>=0;--r){var n=(0,e[r])(t);if(!C(n)&&!O(n)){if(!j(n))throw new TypeError;t=n}}return t}(e,t)}if(!L(e))throw new TypeError;if(!A(t))throw new TypeError;if(!A(n)&&!C(n)&&!O(n))throw new TypeError;return O(n)&&(n=void 0),function(e,t,r,n){for(var o=e.length-1;o>=0;--o){var i=(0,e[o])(t,r,n);if(!C(i)&&!O(i)){if(!A(i))throw new TypeError;n=i}}return n}(e,t,r=P(r),n)})),e(\"metadata\",(function(e,t){return function(r,n){if(!A(r))throw new TypeError;if(!C(n)&&!function(e){switch(S(e)){case 3:case 4:return!0;default:return!1}}(n))throw new TypeError;_(e,t,r,n)}})),e(\"defineMetadata\",(function(e,t,r,n){if(!A(r))throw new TypeError;return C(n)||(n=P(n)),_(e,t,r,n)})),e(\"hasMetadata\",(function(e,t,r){if(!A(t))throw new TypeError;return C(r)||(r=P(r)),g(e,t,r)})),e(\"hasOwnMetadata\",(function(e,t,r){if(!A(t))throw new TypeError;return C(r)||(r=P(r)),y(e,t,r)})),e(\"getMetadata\",(function(e,t,r){if(!A(t))throw new TypeError;return C(r)||(r=P(r)),v(e,t,r)})),e(\"getOwnMetadata\",(function(e,t,r){if(!A(t))throw new TypeError;return C(r)||(r=P(r)),m(e,t,r)})),e(\"getMetadataKeys\",(function(e,t){if(!A(e))throw new TypeError;return C(t)||(t=P(t)),b(e,t)})),e(\"getOwnMetadataKeys\",(function(e,t){if(!A(e))throw new TypeError;return C(t)||(t=P(t)),w(e,t)})),e(\"deleteMetadata\",(function(e,t,r){if(!A(t))throw new TypeError;C(r)||(r=P(r));var n=d(t,r,!1);if(C(n))return!1;if(!n.delete(e))return!1;if(n.size>0)return!0;var o=p.get(t);return o.delete(r),o.size>0||p.delete(t),!0}))}(n)}()}(e||(e={}))},822:(e,t,r)=>{r(226).install()},226:(e,t,r)=>{e=r.nmd(e);var n,o=r(192).SourceMapConsumer,i=r(17);try{(n=r(147)).existsSync&&n.readFileSync||(n=null)}catch(e){}var s=r(669);function a(e,t){return e.require(t)}var u=!1,c=!1,l=!1,f=\"auto\",h={},p={},d=/^data:application\\/json[^,]+base64,/,g=[],y=[];function v(){return\"browser\"===f||\"node\"!==f&&\"undefined\"!=typeof window&&\"function\"==typeof XMLHttpRequest&&!(window.require&&window.module&&window.process&&\"renderer\"===window.process.type)}function m(e){return function(t){for(var r=0;r<e.length;r++){var n=e[r](t);if(n)return n}return null}}var _=m(g);function b(e,t){if(!e)return t;var r=i.dirname(e),n=/^\\w+:\\/\\/[^\\/]*/.exec(r),o=n?n[0]:\"\",s=r.slice(o.length);return o&&/^\\/\\w\\:/.test(s)?(o+=\"/\")+i.resolve(r.slice(o.length),t).replace(/\\\\/g,\"/\"):o+i.resolve(r.slice(o.length),t)}g.push((function(e){if(e=e.trim(),/^file:/.test(e)&&(e=e.replace(/file:\\/\\/\\/(\\w:)?/,(function(e,t){return t?\"\":\"/\"}))),e in h)return h[e];var t=\"\";try{if(n)n.existsSync(e)&&(t=n.readFileSync(e,\"utf8\"));else{var r=new XMLHttpRequest;r.open(\"GET\",e,!1),r.send(null),4===r.readyState&&200===r.status&&(t=r.responseText)}}catch(e){}return h[e]=t}));var w=m(y);function S(e){var t=p[e.source];if(!t){var r=w(e.source);r?(t=p[e.source]={url:r.url,map:new o(r.map)}).map.sourcesContent&&t.map.sources.forEach((function(e,r){var n=t.map.sourcesContent[r];if(n){var o=b(t.url,e);h[o]=n}})):t=p[e.source]={url:null,map:null}}if(t&&t.map&&\"function\"==typeof t.map.originalPositionFor){var n=t.map.originalPositionFor(e);if(null!==n.source)return n.source=b(t.url,n.source),n}return e}function C(e){var t=/^eval at ([^(]+) \\((.+):(\\d+):(\\d+)\\)$/.exec(e);if(t){var r=S({source:t[2],line:+t[3],column:t[4]-1});return\"eval at \"+t[1]+\" (\"+r.source+\":\"+r.line+\":\"+(r.column+1)+\")\"}return(t=/^eval at ([^(]+) \\((.+)\\)$/.exec(e))?\"eval at \"+t[1]+\" (\"+C(t[2])+\")\":e}function O(){var e,t=\"\";if(this.isNative())t=\"native\";else{!(e=this.getScriptNameOrSourceURL())&&this.isEval()&&(t=this.getEvalOrigin(),t+=\", \"),t+=e||\"<anonymous>\";var r=this.getLineNumber();if(null!=r){t+=\":\"+r;var n=this.getColumnNumber();n&&(t+=\":\"+n)}}var o=\"\",i=this.getFunctionName(),s=!0,a=this.isConstructor();if(this.isToplevel()||a)a?o+=\"new \"+(i||\"<anonymous>\"):i?o+=i:(o+=t,s=!1);else{var u=this.getTypeName();\"[object Object]\"===u&&(u=\"null\");var c=this.getMethodName();i?(u&&0!=i.indexOf(u)&&(o+=u+\".\"),o+=i,c&&i.indexOf(\".\"+c)!=i.length-c.length-1&&(o+=\" [as \"+c+\"]\")):o+=u+\".\"+(c||\"<anonymous>\")}return s&&(o+=\" (\"+t+\")\"),o}function A(e){var t={};return Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach((function(r){t[r]=/^(?:is|get)/.test(r)?function(){return e[r].call(e)}:e[r]})),t.toString=O,t}function E(e,t){if(void 0===t&&(t={nextPosition:null,curPosition:null}),e.isNative())return t.curPosition=null,e;var r=e.getFileName()||e.getScriptNameOrSourceURL();if(r){var n=e.getLineNumber(),o=e.getColumnNumber()-1,i=/^v(10\\.1[6-9]|10\\.[2-9][0-9]|10\\.[0-9]{3,}|1[2-9]\\d*|[2-9]\\d|\\d{3,}|11\\.11)/.test(\"object\"==typeof process&&null!==process?process.version:\"\")?0:62;1===n&&o>i&&!v()&&!e.isEval()&&(o-=i);var s=S({source:r,line:n,column:o});t.curPosition=s;var a=(e=A(e)).getFunctionName;return e.getFunctionName=function(){return null==t.nextPosition?a():t.nextPosition.name||a()},e.getFileName=function(){return s.source},e.getLineNumber=function(){return s.line},e.getColumnNumber=function(){return s.column+1},e.getScriptNameOrSourceURL=function(){return s.source},e}var u=e.isEval()&&e.getEvalOrigin();return u?(u=C(u),(e=A(e)).getEvalOrigin=function(){return u},e):e}function P(e,t){l&&(h={},p={});for(var r=(e.name||\"Error\")+\": \"+(e.message||\"\"),n={nextPosition:null,curPosition:null},o=[],i=t.length-1;i>=0;i--)o.push(\"\\n    at \"+E(t[i],n)),n.nextPosition=n.curPosition;return n.curPosition=n.nextPosition=null,r+o.reverse().join(\"\")}function L(e){var t=/\\n    at [^(]+ \\((.*):(\\d+):(\\d+)\\)/.exec(e.stack);if(t){var r=t[1],o=+t[2],i=+t[3],s=h[r];if(!s&&n&&n.existsSync(r))try{s=n.readFileSync(r,\"utf8\")}catch(e){s=\"\"}if(s){var a=s.split(/(?:\\r\\n|\\r|\\n)/)[o-1];if(a)return r+\":\"+o+\"\\n\"+a+\"\\n\"+new Array(i).join(\" \")+\"^\"}}return null}y.push((function(e){var t,r=function(e){var t;if(v())try{var r=new XMLHttpRequest;r.open(\"GET\",e,!1),r.send(null),t=4===r.readyState?r.responseText:null;var n=r.getResponseHeader(\"SourceMap\")||r.getResponseHeader(\"X-SourceMap\");if(n)return n}catch(e){}t=_(e);for(var o,i,s=/(?:\\/\\/[@#][\\s]*sourceMappingURL=([^\\s'\"]+)[\\s]*$)|(?:\\/\\*[@#][\\s]*sourceMappingURL=([^\\s*'\"]+)[\\s]*(?:\\*\\/)[\\s]*$)/gm;i=s.exec(t);)o=i;return o?o[1]:null}(e);if(!r)return null;if(d.test(r)){var n=r.slice(r.indexOf(\",\")+1);t=s(n,\"base64\").toString(),r=e}else r=b(e,r),t=_(r);return t?{url:r,map:t}:null}));var T=g.slice(0),j=y.slice(0);t.wrapCallSite=E,t.getErrorSource=L,t.mapSourcePosition=S,t.retrieveSourceMap=w,t.install=function(t){if((t=t||{}).environment&&(f=t.environment,-1===[\"node\",\"browser\",\"auto\"].indexOf(f)))throw new Error(\"environment \"+f+\" was unknown. Available options are {auto, browser, node}\");if(t.retrieveFile&&(t.overrideRetrieveFile&&(g.length=0),g.unshift(t.retrieveFile)),t.retrieveSourceMap&&(t.overrideRetrieveSourceMap&&(y.length=0),y.unshift(t.retrieveSourceMap)),t.hookRequire&&!v()){var r=a(e,\"module\"),n=r.prototype._compile;n.__sourceMapSupport||(r.prototype._compile=function(e,t){return h[t]=e,p[t]=void 0,n.call(this,e,t)},r.prototype._compile.__sourceMapSupport=!0)}if(l||(l=\"emptyCacheBetweenOperations\"in t&&t.emptyCacheBetweenOperations),u||(u=!0,Error.prepareStackTrace=P),!c){var o=!(\"handleUncaughtExceptions\"in t)||t.handleUncaughtExceptions;try{!1===a(e,\"worker_threads\").isMainThread&&(o=!1)}catch(e){}o&&\"object\"==typeof process&&null!==process&&\"function\"==typeof process.on&&(c=!0,i=process.emit,process.emit=function(e){if(\"uncaughtException\"===e){var t=arguments[1]&&arguments[1].stack,r=this.listeners(e).length>0;if(t&&!r)return o=L(n=arguments[1]),(s=function(){if(\"object\"==typeof process&&null!==process)return process.stderr}())&&s._handle&&s._handle.setBlocking&&s._handle.setBlocking(!0),o&&(console.error(),console.error(o)),console.error(n.stack),void(\"object\"==typeof process&&null!==process&&\"function\"==typeof process.exit&&process.exit(1))}var n,o,s;return i.apply(this,arguments)})}var i},t.resetRetrieveHandlers=function(){g.length=0,y.length=0,g=T.slice(0),y=j.slice(0),w=m(y),_=m(g)}},163:(e,t,r)=>{var n=r(886),o=Object.prototype.hasOwnProperty,i=\"undefined\"!=typeof Map;function s(){this._array=[],this._set=i?new Map:Object.create(null)}s.fromArray=function(e,t){for(var r=new s,n=0,o=e.length;n<o;n++)r.add(e[n],t);return r},s.prototype.size=function(){return i?this._set.size:Object.getOwnPropertyNames(this._set).length},s.prototype.add=function(e,t){var r=i?e:n.toSetString(e),s=i?this.has(e):o.call(this._set,r),a=this._array.length;s&&!t||this._array.push(e),s||(i?this._set.set(e,a):this._set[r]=a)},s.prototype.has=function(e){if(i)return this._set.has(e);var t=n.toSetString(e);return o.call(this._set,t)},s.prototype.indexOf=function(e){if(i){var t=this._set.get(e);if(t>=0)return t}else{var r=n.toSetString(e);if(o.call(this._set,r))return this._set[r]}throw new Error('\"'+e+'\" is not in the set.')},s.prototype.at=function(e){if(e>=0&&e<this._array.length)return this._array[e];throw new Error(\"No element indexed by \"+e)},s.prototype.toArray=function(){return this._array.slice()},t.I=s},572:(e,t,r)=>{var n=r(225);t.encode=function(e){var t,r=\"\",o=function(e){return e<0?1+(-e<<1):0+(e<<1)}(e);do{t=31&o,(o>>>=5)>0&&(t|=32),r+=n.encode(t)}while(o>0);return r},t.decode=function(e,t,r){var o,i,s,a,u=e.length,c=0,l=0;do{if(t>=u)throw new Error(\"Expected more digits in base 64 VLQ value.\");if(-1===(i=n.decode(e.charCodeAt(t++))))throw new Error(\"Invalid base64 digit: \"+e.charAt(t-1));o=!!(32&i),c+=(i&=31)<<l,l+=5}while(o);r.value=(a=(s=c)>>1,1==(1&s)?-a:a),r.rest=t}},225:(e,t)=>{var r=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\".split(\"\");t.encode=function(e){if(0<=e&&e<r.length)return r[e];throw new TypeError(\"Must be between 0 and 63: \"+e)},t.decode=function(e){return 65<=e&&e<=90?e-65:97<=e&&e<=122?e-97+26:48<=e&&e<=57?e-48+52:43==e?62:47==e?63:-1}},626:(e,t)=>{function r(e,n,o,i,s,a){var u=Math.floor((n-e)/2)+e,c=s(o,i[u],!0);return 0===c?u:c>0?n-u>1?r(u,n,o,i,s,a):a==t.LEAST_UPPER_BOUND?n<i.length?n:-1:u:u-e>1?r(e,u,o,i,s,a):a==t.LEAST_UPPER_BOUND?u:e<0?-1:e}t.GREATEST_LOWER_BOUND=1,t.LEAST_UPPER_BOUND=2,t.search=function(e,n,o,i){if(0===n.length)return-1;var s=r(-1,n.length,e,n,o,i||t.GREATEST_LOWER_BOUND);if(s<0)return-1;for(;s-1>=0&&0===o(n[s],n[s-1],!0);)--s;return s}},89:(e,t,r)=>{var n=r(886);function o(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}o.prototype.unsortedForEach=function(e,t){this._array.forEach(e,t)},o.prototype.add=function(e){var t,r,o,i,s,a;r=e,o=(t=this._last).generatedLine,i=r.generatedLine,s=t.generatedColumn,a=r.generatedColumn,i>o||i==o&&a>=s||n.compareByGeneratedPositionsInflated(t,r)<=0?(this._last=e,this._array.push(e)):(this._sorted=!1,this._array.push(e))},o.prototype.toArray=function(){return this._sorted||(this._array.sort(n.compareByGeneratedPositionsInflated),this._sorted=!0),this._array},t.H=o},538:(e,t)=>{function r(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function n(e,t,o,i){if(o<i){var s=o-1;r(e,(l=o,f=i,Math.round(l+Math.random()*(f-l))),i);for(var a=e[i],u=o;u<i;u++)t(e[u],a)<=0&&r(e,s+=1,u);r(e,s+1,u);var c=s+1;n(e,t,o,c-1),n(e,t,c+1,i)}var l,f}t.U=function(e,t){n(e,t,0,e.length-1)}},458:(e,t,r)=>{var n=r(886),o=r(626),i=r(163).I,s=r(572),a=r(538).U;function u(e,t){var r=e;return\"string\"==typeof e&&(r=n.parseSourceMapInput(e)),null!=r.sections?new f(r,t):new c(r,t)}function c(e,t){var r=e;\"string\"==typeof e&&(r=n.parseSourceMapInput(e));var o=n.getArg(r,\"version\"),s=n.getArg(r,\"sources\"),a=n.getArg(r,\"names\",[]),u=n.getArg(r,\"sourceRoot\",null),c=n.getArg(r,\"sourcesContent\",null),l=n.getArg(r,\"mappings\"),f=n.getArg(r,\"file\",null);if(o!=this._version)throw new Error(\"Unsupported version: \"+o);u&&(u=n.normalize(u)),s=s.map(String).map(n.normalize).map((function(e){return u&&n.isAbsolute(u)&&n.isAbsolute(e)?n.relative(u,e):e})),this._names=i.fromArray(a.map(String),!0),this._sources=i.fromArray(s,!0),this._absoluteSources=this._sources.toArray().map((function(e){return n.computeSourceURL(u,e,t)})),this.sourceRoot=u,this.sourcesContent=c,this._mappings=l,this._sourceMapURL=t,this.file=f}function l(){this.generatedLine=0,this.generatedColumn=0,this.source=null,this.originalLine=null,this.originalColumn=null,this.name=null}function f(e,t){var r=e;\"string\"==typeof e&&(r=n.parseSourceMapInput(e));var o=n.getArg(r,\"version\"),s=n.getArg(r,\"sections\");if(o!=this._version)throw new Error(\"Unsupported version: \"+o);this._sources=new i,this._names=new i;var a={line:-1,column:0};this._sections=s.map((function(e){if(e.url)throw new Error(\"Support for url field in sections not implemented.\");var r=n.getArg(e,\"offset\"),o=n.getArg(r,\"line\"),i=n.getArg(r,\"column\");if(o<a.line||o===a.line&&i<a.column)throw new Error(\"Section offsets must be ordered and non-overlapping.\");return a=r,{generatedOffset:{generatedLine:o+1,generatedColumn:i+1},consumer:new u(n.getArg(e,\"map\"),t)}}))}u.fromSourceMap=function(e,t){return c.fromSourceMap(e,t)},u.prototype._version=3,u.prototype.__generatedMappings=null,Object.defineProperty(u.prototype,\"_generatedMappings\",{configurable:!0,enumerable:!0,get:function(){return this.__generatedMappings||this._parseMappings(this._mappings,this.sourceRoot),this.__generatedMappings}}),u.prototype.__originalMappings=null,Object.defineProperty(u.prototype,\"_originalMappings\",{configurable:!0,enumerable:!0,get:function(){return this.__originalMappings||this._parseMappings(this._mappings,this.sourceRoot),this.__originalMappings}}),u.prototype._charIsMappingSeparator=function(e,t){var r=e.charAt(t);return\";\"===r||\",\"===r},u.prototype._parseMappings=function(e,t){throw new Error(\"Subclasses must implement _parseMappings\")},u.GENERATED_ORDER=1,u.ORIGINAL_ORDER=2,u.GREATEST_LOWER_BOUND=1,u.LEAST_UPPER_BOUND=2,u.prototype.eachMapping=function(e,t,r){var o,i=t||null;switch(r||u.GENERATED_ORDER){case u.GENERATED_ORDER:o=this._generatedMappings;break;case u.ORIGINAL_ORDER:o=this._originalMappings;break;default:throw new Error(\"Unknown order of iteration.\")}var s=this.sourceRoot;o.map((function(e){var t=null===e.source?null:this._sources.at(e.source);return{source:t=n.computeSourceURL(s,t,this._sourceMapURL),generatedLine:e.generatedLine,generatedColumn:e.generatedColumn,originalLine:e.originalLine,originalColumn:e.originalColumn,name:null===e.name?null:this._names.at(e.name)}}),this).forEach(e,i)},u.prototype.allGeneratedPositionsFor=function(e){var t=n.getArg(e,\"line\"),r={source:n.getArg(e,\"source\"),originalLine:t,originalColumn:n.getArg(e,\"column\",0)};if(r.source=this._findSourceIndex(r.source),r.source<0)return[];var i=[],s=this._findMapping(r,this._originalMappings,\"originalLine\",\"originalColumn\",n.compareByOriginalPositions,o.LEAST_UPPER_BOUND);if(s>=0){var a=this._originalMappings[s];if(void 0===e.column)for(var u=a.originalLine;a&&a.originalLine===u;)i.push({line:n.getArg(a,\"generatedLine\",null),column:n.getArg(a,\"generatedColumn\",null),lastColumn:n.getArg(a,\"lastGeneratedColumn\",null)}),a=this._originalMappings[++s];else for(var c=a.originalColumn;a&&a.originalLine===t&&a.originalColumn==c;)i.push({line:n.getArg(a,\"generatedLine\",null),column:n.getArg(a,\"generatedColumn\",null),lastColumn:n.getArg(a,\"lastGeneratedColumn\",null)}),a=this._originalMappings[++s]}return i},t.SourceMapConsumer=u,c.prototype=Object.create(u.prototype),c.prototype.consumer=u,c.prototype._findSourceIndex=function(e){var t,r=e;if(null!=this.sourceRoot&&(r=n.relative(this.sourceRoot,r)),this._sources.has(r))return this._sources.indexOf(r);for(t=0;t<this._absoluteSources.length;++t)if(this._absoluteSources[t]==e)return t;return-1},c.fromSourceMap=function(e,t){var r=Object.create(c.prototype),o=r._names=i.fromArray(e._names.toArray(),!0),s=r._sources=i.fromArray(e._sources.toArray(),!0);r.sourceRoot=e._sourceRoot,r.sourcesContent=e._generateSourcesContent(r._sources.toArray(),r.sourceRoot),r.file=e._file,r._sourceMapURL=t,r._absoluteSources=r._sources.toArray().map((function(e){return n.computeSourceURL(r.sourceRoot,e,t)}));for(var u=e._mappings.toArray().slice(),f=r.__generatedMappings=[],h=r.__originalMappings=[],p=0,d=u.length;p<d;p++){var g=u[p],y=new l;y.generatedLine=g.generatedLine,y.generatedColumn=g.generatedColumn,g.source&&(y.source=s.indexOf(g.source),y.originalLine=g.originalLine,y.originalColumn=g.originalColumn,g.name&&(y.name=o.indexOf(g.name)),h.push(y)),f.push(y)}return a(r.__originalMappings,n.compareByOriginalPositions),r},c.prototype._version=3,Object.defineProperty(c.prototype,\"sources\",{get:function(){return this._absoluteSources.slice()}}),c.prototype._parseMappings=function(e,t){for(var r,o,i,u,c,f=1,h=0,p=0,d=0,g=0,y=0,v=e.length,m=0,_={},b={},w=[],S=[];m<v;)if(\";\"===e.charAt(m))f++,m++,h=0;else if(\",\"===e.charAt(m))m++;else{for((r=new l).generatedLine=f,u=m;u<v&&!this._charIsMappingSeparator(e,u);u++);if(i=_[o=e.slice(m,u)])m+=o.length;else{for(i=[];m<u;)s.decode(e,m,b),c=b.value,m=b.rest,i.push(c);if(2===i.length)throw new Error(\"Found a source, but no line and column\");if(3===i.length)throw new Error(\"Found a source and line, but no column\");_[o]=i}r.generatedColumn=h+i[0],h=r.generatedColumn,i.length>1&&(r.source=g+i[1],g+=i[1],r.originalLine=p+i[2],p=r.originalLine,r.originalLine+=1,r.originalColumn=d+i[3],d=r.originalColumn,i.length>4&&(r.name=y+i[4],y+=i[4])),S.push(r),\"number\"==typeof r.originalLine&&w.push(r)}a(S,n.compareByGeneratedPositionsDeflated),this.__generatedMappings=S,a(w,n.compareByOriginalPositions),this.__originalMappings=w},c.prototype._findMapping=function(e,t,r,n,i,s){if(e[r]<=0)throw new TypeError(\"Line must be greater than or equal to 1, got \"+e[r]);if(e[n]<0)throw new TypeError(\"Column must be greater than or equal to 0, got \"+e[n]);return o.search(e,t,i,s)},c.prototype.computeColumnSpans=function(){for(var e=0;e<this._generatedMappings.length;++e){var t=this._generatedMappings[e];if(e+1<this._generatedMappings.length){var r=this._generatedMappings[e+1];if(t.generatedLine===r.generatedLine){t.lastGeneratedColumn=r.generatedColumn-1;continue}}t.lastGeneratedColumn=1/0}},c.prototype.originalPositionFor=function(e){var t={generatedLine:n.getArg(e,\"line\"),generatedColumn:n.getArg(e,\"column\")},r=this._findMapping(t,this._generatedMappings,\"generatedLine\",\"generatedColumn\",n.compareByGeneratedPositionsDeflated,n.getArg(e,\"bias\",u.GREATEST_LOWER_BOUND));if(r>=0){var o=this._generatedMappings[r];if(o.generatedLine===t.generatedLine){var i=n.getArg(o,\"source\",null);null!==i&&(i=this._sources.at(i),i=n.computeSourceURL(this.sourceRoot,i,this._sourceMapURL));var s=n.getArg(o,\"name\",null);return null!==s&&(s=this._names.at(s)),{source:i,line:n.getArg(o,\"originalLine\",null),column:n.getArg(o,\"originalColumn\",null),name:s}}}return{source:null,line:null,column:null,name:null}},c.prototype.hasContentsOfAllSources=function(){return!!this.sourcesContent&&this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some((function(e){return null==e}))},c.prototype.sourceContentFor=function(e,t){if(!this.sourcesContent)return null;var r=this._findSourceIndex(e);if(r>=0)return this.sourcesContent[r];var o,i=e;if(null!=this.sourceRoot&&(i=n.relative(this.sourceRoot,i)),null!=this.sourceRoot&&(o=n.urlParse(this.sourceRoot))){var s=i.replace(/^file:\\/\\//,\"\");if(\"file\"==o.scheme&&this._sources.has(s))return this.sourcesContent[this._sources.indexOf(s)];if((!o.path||\"/\"==o.path)&&this._sources.has(\"/\"+i))return this.sourcesContent[this._sources.indexOf(\"/\"+i)]}if(t)return null;throw new Error('\"'+i+'\" is not in the SourceMap.')},c.prototype.generatedPositionFor=function(e){var t=n.getArg(e,\"source\");if((t=this._findSourceIndex(t))<0)return{line:null,column:null,lastColumn:null};var r={source:t,originalLine:n.getArg(e,\"line\"),originalColumn:n.getArg(e,\"column\")},o=this._findMapping(r,this._originalMappings,\"originalLine\",\"originalColumn\",n.compareByOriginalPositions,n.getArg(e,\"bias\",u.GREATEST_LOWER_BOUND));if(o>=0){var i=this._originalMappings[o];if(i.source===r.source)return{line:n.getArg(i,\"generatedLine\",null),column:n.getArg(i,\"generatedColumn\",null),lastColumn:n.getArg(i,\"lastGeneratedColumn\",null)}}return{line:null,column:null,lastColumn:null}},f.prototype=Object.create(u.prototype),f.prototype.constructor=u,f.prototype._version=3,Object.defineProperty(f.prototype,\"sources\",{get:function(){for(var e=[],t=0;t<this._sections.length;t++)for(var r=0;r<this._sections[t].consumer.sources.length;r++)e.push(this._sections[t].consumer.sources[r]);return e}}),f.prototype.originalPositionFor=function(e){var t={generatedLine:n.getArg(e,\"line\"),generatedColumn:n.getArg(e,\"column\")},r=o.search(t,this._sections,(function(e,t){return e.generatedLine-t.generatedOffset.generatedLine||e.generatedColumn-t.generatedOffset.generatedColumn})),i=this._sections[r];return i?i.consumer.originalPositionFor({line:t.generatedLine-(i.generatedOffset.generatedLine-1),column:t.generatedColumn-(i.generatedOffset.generatedLine===t.generatedLine?i.generatedOffset.generatedColumn-1:0),bias:e.bias}):{source:null,line:null,column:null,name:null}},f.prototype.hasContentsOfAllSources=function(){return this._sections.every((function(e){return e.consumer.hasContentsOfAllSources()}))},f.prototype.sourceContentFor=function(e,t){for(var r=0;r<this._sections.length;r++){var n=this._sections[r].consumer.sourceContentFor(e,!0);if(n)return n}if(t)return null;throw new Error('\"'+e+'\" is not in the SourceMap.')},f.prototype.generatedPositionFor=function(e){for(var t=0;t<this._sections.length;t++){var r=this._sections[t];if(-1!==r.consumer._findSourceIndex(n.getArg(e,\"source\"))){var o=r.consumer.generatedPositionFor(e);if(o)return{line:o.line+(r.generatedOffset.generatedLine-1),column:o.column+(r.generatedOffset.generatedLine===o.line?r.generatedOffset.generatedColumn-1:0)}}}return{line:null,column:null}},f.prototype._parseMappings=function(e,t){this.__generatedMappings=[],this.__originalMappings=[];for(var r=0;r<this._sections.length;r++)for(var o=this._sections[r],i=o.consumer._generatedMappings,s=0;s<i.length;s++){var u=i[s],c=o.consumer._sources.at(u.source);c=n.computeSourceURL(o.consumer.sourceRoot,c,this._sourceMapURL),this._sources.add(c),c=this._sources.indexOf(c);var l=null;u.name&&(l=o.consumer._names.at(u.name),this._names.add(l),l=this._names.indexOf(l));var f={source:c,generatedLine:u.generatedLine+(o.generatedOffset.generatedLine-1),generatedColumn:u.generatedColumn+(o.generatedOffset.generatedLine===u.generatedLine?o.generatedOffset.generatedColumn-1:0),originalLine:u.originalLine,originalColumn:u.originalColumn,name:l};this.__generatedMappings.push(f),\"number\"==typeof f.originalLine&&this.__originalMappings.push(f)}a(this.__generatedMappings,n.compareByGeneratedPositionsDeflated),a(this.__originalMappings,n.compareByOriginalPositions)}},10:(e,t,r)=>{var n=r(572),o=r(886),i=r(163).I,s=r(89).H;function a(e){e||(e={}),this._file=o.getArg(e,\"file\",null),this._sourceRoot=o.getArg(e,\"sourceRoot\",null),this._skipValidation=o.getArg(e,\"skipValidation\",!1),this._sources=new i,this._names=new i,this._mappings=new s,this._sourcesContents=null}a.prototype._version=3,a.fromSourceMap=function(e){var t=e.sourceRoot,r=new a({file:e.file,sourceRoot:t});return e.eachMapping((function(e){var n={generated:{line:e.generatedLine,column:e.generatedColumn}};null!=e.source&&(n.source=e.source,null!=t&&(n.source=o.relative(t,n.source)),n.original={line:e.originalLine,column:e.originalColumn},null!=e.name&&(n.name=e.name)),r.addMapping(n)})),e.sources.forEach((function(n){var i=n;null!==t&&(i=o.relative(t,n)),r._sources.has(i)||r._sources.add(i);var s=e.sourceContentFor(n);null!=s&&r.setSourceContent(n,s)})),r},a.prototype.addMapping=function(e){var t=o.getArg(e,\"generated\"),r=o.getArg(e,\"original\",null),n=o.getArg(e,\"source\",null),i=o.getArg(e,\"name\",null);this._skipValidation||this._validateMapping(t,r,n,i),null!=n&&(n=String(n),this._sources.has(n)||this._sources.add(n)),null!=i&&(i=String(i),this._names.has(i)||this._names.add(i)),this._mappings.add({generatedLine:t.line,generatedColumn:t.column,originalLine:null!=r&&r.line,originalColumn:null!=r&&r.column,source:n,name:i})},a.prototype.setSourceContent=function(e,t){var r=e;null!=this._sourceRoot&&(r=o.relative(this._sourceRoot,r)),null!=t?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[o.toSetString(r)]=t):this._sourcesContents&&(delete this._sourcesContents[o.toSetString(r)],0===Object.keys(this._sourcesContents).length&&(this._sourcesContents=null))},a.prototype.applySourceMap=function(e,t,r){var n=t;if(null==t){if(null==e.file)throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map\\'s \"file\" property. Both were omitted.');n=e.file}var s=this._sourceRoot;null!=s&&(n=o.relative(s,n));var a=new i,u=new i;this._mappings.unsortedForEach((function(t){if(t.source===n&&null!=t.originalLine){var i=e.originalPositionFor({line:t.originalLine,column:t.originalColumn});null!=i.source&&(t.source=i.source,null!=r&&(t.source=o.join(r,t.source)),null!=s&&(t.source=o.relative(s,t.source)),t.originalLine=i.line,t.originalColumn=i.column,null!=i.name&&(t.name=i.name))}var c=t.source;null==c||a.has(c)||a.add(c);var l=t.name;null==l||u.has(l)||u.add(l)}),this),this._sources=a,this._names=u,e.sources.forEach((function(t){var n=e.sourceContentFor(t);null!=n&&(null!=r&&(t=o.join(r,t)),null!=s&&(t=o.relative(s,t)),this.setSourceContent(t,n))}),this)},a.prototype._validateMapping=function(e,t,r,n){if(t&&\"number\"!=typeof t.line&&\"number\"!=typeof t.column)throw new Error(\"original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.\");if((!(e&&\"line\"in e&&\"column\"in e&&e.line>0&&e.column>=0)||t||r||n)&&!(e&&\"line\"in e&&\"column\"in e&&t&&\"line\"in t&&\"column\"in t&&e.line>0&&e.column>=0&&t.line>0&&t.column>=0&&r))throw new Error(\"Invalid mapping: \"+JSON.stringify({generated:e,source:r,original:t,name:n}))},a.prototype._serializeMappings=function(){for(var e,t,r,i,s=0,a=1,u=0,c=0,l=0,f=0,h=\"\",p=this._mappings.toArray(),d=0,g=p.length;d<g;d++){if(e=\"\",(t=p[d]).generatedLine!==a)for(s=0;t.generatedLine!==a;)e+=\";\",a++;else if(d>0){if(!o.compareByGeneratedPositionsInflated(t,p[d-1]))continue;e+=\",\"}e+=n.encode(t.generatedColumn-s),s=t.generatedColumn,null!=t.source&&(i=this._sources.indexOf(t.source),e+=n.encode(i-f),f=i,e+=n.encode(t.originalLine-1-c),c=t.originalLine-1,e+=n.encode(t.originalColumn-u),u=t.originalColumn,null!=t.name&&(r=this._names.indexOf(t.name),e+=n.encode(r-l),l=r)),h+=e}return h},a.prototype._generateSourcesContent=function(e,t){return e.map((function(e){if(!this._sourcesContents)return null;null!=t&&(e=o.relative(t,e));var r=o.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,r)?this._sourcesContents[r]:null}),this)},a.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},a.prototype.toString=function(){return JSON.stringify(this.toJSON())},t.h=a},148:(e,t,r)=>{var n=r(10).h,o=r(886),i=/(\\r?\\n)/,s=\"$$$isSourceNode$$$\";function a(e,t,r,n,o){this.children=[],this.sourceContents={},this.line=null==e?null:e,this.column=null==t?null:t,this.source=null==r?null:r,this.name=null==o?null:o,this[s]=!0,null!=n&&this.add(n)}a.fromStringWithSourceMap=function(e,t,r){var n=new a,s=e.split(i),u=0,c=function(){return e()+(e()||\"\");function e(){return u<s.length?s[u++]:void 0}},l=1,f=0,h=null;return t.eachMapping((function(e){if(null!==h){if(!(l<e.generatedLine)){var t=(r=s[u]||\"\").substr(0,e.generatedColumn-f);return s[u]=r.substr(e.generatedColumn-f),f=e.generatedColumn,p(h,t),void(h=e)}p(h,c()),l++,f=0}for(;l<e.generatedLine;)n.add(c()),l++;if(f<e.generatedColumn){var r=s[u]||\"\";n.add(r.substr(0,e.generatedColumn)),s[u]=r.substr(e.generatedColumn),f=e.generatedColumn}h=e}),this),u<s.length&&(h&&p(h,c()),n.add(s.splice(u).join(\"\"))),t.sources.forEach((function(e){var i=t.sourceContentFor(e);null!=i&&(null!=r&&(e=o.join(r,e)),n.setSourceContent(e,i))})),n;function p(e,t){if(null===e||void 0===e.source)n.add(t);else{var i=r?o.join(r,e.source):e.source;n.add(new a(e.originalLine,e.originalColumn,i,t,e.name))}}},a.prototype.add=function(e){if(Array.isArray(e))e.forEach((function(e){this.add(e)}),this);else{if(!e[s]&&\"string\"!=typeof e)throw new TypeError(\"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \"+e);e&&this.children.push(e)}return this},a.prototype.prepend=function(e){if(Array.isArray(e))for(var t=e.length-1;t>=0;t--)this.prepend(e[t]);else{if(!e[s]&&\"string\"!=typeof e)throw new TypeError(\"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \"+e);this.children.unshift(e)}return this},a.prototype.walk=function(e){for(var t,r=0,n=this.children.length;r<n;r++)(t=this.children[r])[s]?t.walk(e):\"\"!==t&&e(t,{source:this.source,line:this.line,column:this.column,name:this.name})},a.prototype.join=function(e){var t,r,n=this.children.length;if(n>0){for(t=[],r=0;r<n-1;r++)t.push(this.children[r]),t.push(e);t.push(this.children[r]),this.children=t}return this},a.prototype.replaceRight=function(e,t){var r=this.children[this.children.length-1];return r[s]?r.replaceRight(e,t):\"string\"==typeof r?this.children[this.children.length-1]=r.replace(e,t):this.children.push(\"\".replace(e,t)),this},a.prototype.setSourceContent=function(e,t){this.sourceContents[o.toSetString(e)]=t},a.prototype.walkSourceContents=function(e){for(var t=0,r=this.children.length;t<r;t++)this.children[t][s]&&this.children[t].walkSourceContents(e);var n=Object.keys(this.sourceContents);for(t=0,r=n.length;t<r;t++)e(o.fromSetString(n[t]),this.sourceContents[n[t]])},a.prototype.toString=function(){var e=\"\";return this.walk((function(t){e+=t})),e},a.prototype.toStringWithSourceMap=function(e){var t={code:\"\",line:1,column:0},r=new n(e),o=!1,i=null,s=null,a=null,u=null;return this.walk((function(e,n){t.code+=e,null!==n.source&&null!==n.line&&null!==n.column?(i===n.source&&s===n.line&&a===n.column&&u===n.name||r.addMapping({source:n.source,original:{line:n.line,column:n.column},generated:{line:t.line,column:t.column},name:n.name}),i=n.source,s=n.line,a=n.column,u=n.name,o=!0):o&&(r.addMapping({generated:{line:t.line,column:t.column}}),i=null,o=!1);for(var c=0,l=e.length;c<l;c++)10===e.charCodeAt(c)?(t.line++,t.column=0,c+1===l?(i=null,o=!1):o&&r.addMapping({source:n.source,original:{line:n.line,column:n.column},generated:{line:t.line,column:t.column},name:n.name})):t.column++})),this.walkSourceContents((function(e,t){r.setSourceContent(e,t)})),{code:t.code,map:r}}},886:(e,t)=>{t.getArg=function(e,t,r){if(t in e)return e[t];if(3===arguments.length)return r;throw new Error('\"'+t+'\" is a required argument.')};var r=/^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.-]*)(?::(\\d+))?(.*)$/,n=/^data:.+\\,.+$/;function o(e){var t=e.match(r);return t?{scheme:t[1],auth:t[2],host:t[3],port:t[4],path:t[5]}:null}function i(e){var t=\"\";return e.scheme&&(t+=e.scheme+\":\"),t+=\"//\",e.auth&&(t+=e.auth+\"@\"),e.host&&(t+=e.host),e.port&&(t+=\":\"+e.port),e.path&&(t+=e.path),t}function s(e){var r=e,n=o(e);if(n){if(!n.path)return e;r=n.path}for(var s,a=t.isAbsolute(r),u=r.split(/\\/+/),c=0,l=u.length-1;l>=0;l--)\".\"===(s=u[l])?u.splice(l,1):\"..\"===s?c++:c>0&&(\"\"===s?(u.splice(l+1,c),c=0):(u.splice(l,2),c--));return\"\"===(r=u.join(\"/\"))&&(r=a?\"/\":\".\"),n?(n.path=r,i(n)):r}function a(e,t){\"\"===e&&(e=\".\"),\"\"===t&&(t=\".\");var r=o(t),a=o(e);if(a&&(e=a.path||\"/\"),r&&!r.scheme)return a&&(r.scheme=a.scheme),i(r);if(r||t.match(n))return t;if(a&&!a.host&&!a.path)return a.host=t,i(a);var u=\"/\"===t.charAt(0)?t:s(e.replace(/\\/+$/,\"\")+\"/\"+t);return a?(a.path=u,i(a)):u}t.urlParse=o,t.urlGenerate=i,t.normalize=s,t.join=a,t.isAbsolute=function(e){return\"/\"===e.charAt(0)||r.test(e)},t.relative=function(e,t){\"\"===e&&(e=\".\"),e=e.replace(/\\/$/,\"\");for(var r=0;0!==t.indexOf(e+\"/\");){var n=e.lastIndexOf(\"/\");if(n<0)return t;if((e=e.slice(0,n)).match(/^([^\\/]+:\\/)?\\/*$/))return t;++r}return Array(r+1).join(\"../\")+t.substr(e.length+1)};var u=!(\"__proto__\"in Object.create(null));function c(e){return e}function l(e){if(!e)return!1;var t=e.length;if(t<9)return!1;if(95!==e.charCodeAt(t-1)||95!==e.charCodeAt(t-2)||111!==e.charCodeAt(t-3)||116!==e.charCodeAt(t-4)||111!==e.charCodeAt(t-5)||114!==e.charCodeAt(t-6)||112!==e.charCodeAt(t-7)||95!==e.charCodeAt(t-8)||95!==e.charCodeAt(t-9))return!1;for(var r=t-10;r>=0;r--)if(36!==e.charCodeAt(r))return!1;return!0}function f(e,t){return e===t?0:null===e?1:null===t?-1:e>t?1:-1}t.toSetString=u?c:function(e){return l(e)?\"$\"+e:e},t.fromSetString=u?c:function(e){return l(e)?e.slice(1):e},t.compareByOriginalPositions=function(e,t,r){var n=f(e.source,t.source);return 0!==n||0!=(n=e.originalLine-t.originalLine)||0!=(n=e.originalColumn-t.originalColumn)||r||0!=(n=e.generatedColumn-t.generatedColumn)||0!=(n=e.generatedLine-t.generatedLine)?n:f(e.name,t.name)},t.compareByGeneratedPositionsDeflated=function(e,t,r){var n=e.generatedLine-t.generatedLine;return 0!==n||0!=(n=e.generatedColumn-t.generatedColumn)||r||0!==(n=f(e.source,t.source))||0!=(n=e.originalLine-t.originalLine)||0!=(n=e.originalColumn-t.originalColumn)?n:f(e.name,t.name)},t.compareByGeneratedPositionsInflated=function(e,t){var r=e.generatedLine-t.generatedLine;return 0!==r||0!=(r=e.generatedColumn-t.generatedColumn)||0!==(r=f(e.source,t.source))||0!=(r=e.originalLine-t.originalLine)||0!=(r=e.originalColumn-t.originalColumn)?r:f(e.name,t.name)},t.parseSourceMapInput=function(e){return JSON.parse(e.replace(/^\\)]}'[^\\n]*\\n/,\"\"))},t.computeSourceURL=function(e,t,r){if(t=t||\"\",e&&(\"/\"!==e[e.length-1]&&\"/\"!==t[0]&&(e+=\"/\"),t=e+t),r){var n=o(r);if(!n)throw new Error(\"sourceMapURL could not be parsed\");if(n.path){var u=n.path.lastIndexOf(\"/\");u>=0&&(n.path=n.path.substring(0,u+1))}t=a(i(n),t)}return s(t)}},192:(e,t,r)=>{r(10).h,t.SourceMapConsumer=r(458).SourceMapConsumer,r(148)},107:(e,t,r)=>{\"use strict\";r.d(t,{CR:()=>l,Jh:()=>u,XA:()=>c,ZT:()=>o,_T:()=>s,ev:()=>f,mG:()=>a,pi:()=>i});var n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)};function o(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Class extends value \"+String(t)+\" is not a constructor or null\");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}var i=function(){return i=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},i.apply(this,arguments)};function s(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&\"function\"==typeof Object.getOwnPropertySymbols){var o=0;for(n=Object.getOwnPropertySymbols(e);o<n.length;o++)t.indexOf(n[o])<0&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]])}return r}function a(e,t,r,n){return new(r||(r=Promise))((function(o,i){function s(e){try{u(n.next(e))}catch(e){i(e)}}function a(e){try{u(n.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,a)}u((n=n.apply(e,t||[])).next())}))}function u(e,t){var r,n,o,i,s={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(a){return function(u){return function(a){if(r)throw new TypeError(\"Generator is already executing.\");for(;i&&(i=0,a[0]&&(s=0)),s;)try{if(r=1,n&&(o=2&a[0]?n.return:a[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,a[1])).done)return o;switch(n=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return s.label++,{value:a[1],done:!1};case 5:s.label++,n=a[1],a=[0];continue;case 7:a=s.ops.pop(),s.trys.pop();continue;default:if(!((o=(o=s.trys).length>0&&o[o.length-1])||6!==a[0]&&2!==a[0])){s=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){s.label=a[1];break}if(6===a[0]&&s.label<o[1]){s.label=o[1],o=a;break}if(o&&s.label<o[2]){s.label=o[2],s.ops.push(a);break}o[2]&&s.ops.pop(),s.trys.pop();continue}a=t.call(e,s)}catch(e){a=[6,e],n=0}finally{r=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,u])}}}function c(e){var t=\"function\"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&\"number\"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")}function l(e,t){var r=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,i=r.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(n=i.next()).done;)s.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(o)throw o.error}}return s}function f(e,t,r){if(r||2===arguments.length)for(var n,o=0,i=t.length;o<i;o++)!n&&o in t||(n||(n=Array.prototype.slice.call(t,0,o)),n[o]=t[o]);return e.concat(n||Array.prototype.slice.call(t))}Object.create,Object.create},451:e=>{\"use strict\";e.exports=require(\"Synthetics\")},907:e=>{\"use strict\";e.exports=require(\"SyntheticsLogger\")},990:e=>{\"use strict\";e.exports=require(\"aws-sdk\")},147:e=>{\"use strict\";e.exports=require(\"fs\")},17:e=>{\"use strict\";e.exports=require(\"path\")},310:e=>{\"use strict\";e.exports=require(\"url\")}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var i=t[n]={id:n,loaded:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.loaded=!0,i.exports}r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e);var n={};(()=>{\"use strict\";var e=n;Object.defineProperty(e,\"__esModule\",{value:!0}),e.handler=void 0;const t=r(953),o=r(160),i=new t.CanaryFactory({region:process.env.AWS_REGION,testTargetApi:process.env.TEST_TARGET_API,testCasesType:[o.FirewallConfigApiTest],waitBetweenTestsInMs:1e3});e.handler=i.createCanaryHandler()})(),module.exports=n})();\n//# sourceMappingURL=index.js.map"
        },
        "ExecutionRoleArn": {
          "Fn::GetAtt": [
            "CanaryExecutionRole07ED3987",
            "Arn"
          ]
        },
        "Name": "ff-canary",
        "RuntimeVersion": "syn-nodejs-puppeteer-3.8",
        "Schedule": {
          "Expression": "rate(5 minutes)"
        },
        "StartCanaryAfterCreation": true,
        "RunConfig": {
          "ActiveTracing": true,
          "EnvironmentVariables": {
            "TEST_TARGET_API": {
              "Fn::Join": [
                "",
                [
                  "https://",
                  {
                    "Ref": "autoconfigapiAPI373CEEE7"
                  },
                  ".execute-api.",
                  {
                    "Ref": "AWS::Region"
                  },
                  ".amazonaws.com/prod/"
                ]
              ]
            }
          },
          "TimeoutInSeconds": 15
        },
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ],
        "VPCConfig": {
          "SecurityGroupIds": [
            {
              "Fn::GetAtt": [
                "autoconfigapiSecurityGroup842A12D5",
                "GroupId"
              ]
            }
          ],
          "SubnetIds": [
            {
              "Ref": "networkobjectextensionVpcPrivateSubnetASubnet1SubnetE5FAF545"
            },
            {
              "Ref": "networkobjectextensionVpcPrivateSubnetASubnet2SubnetCEA49EBF"
            }
          ],
          "VpcId": {
            "Ref": "networkobjectextensionVpcB3285E3D"
          }
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/canary/Canary"
      }
    },
    "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Version": "2012-10-17",
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "lambda.amazonaws.com"
              }
            }
          ]
        },
        "ManagedPolicyArns": [
          {
            "Fn::Sub": "arn:${AWS::Partition}:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/Custom::S3AutoDeleteObjectsCustomResourceProvider/Role"
      }
    },
    "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Code": {
          "S3Bucket": {
            "Fn::Sub": "solutions-${AWS::Region}"
          },
          "S3Key": "dynamic-object-and-rule-extensions-for-aws-network-firewall/v1.1.2/asset3f51abb709b8e65167a45aeed02bab11540603d909005d7148230ba5ce6c74d7.zip"
        },
        "Timeout": 900,
        "MemorySize": 128,
        "Handler": "__entrypoint__.handler",
        "Role": {
          "Fn::GetAtt": [
            "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092",
            "Arn"
          ]
        },
        "Runtime": "nodejs14.x",
        "Description": {
          "Fn::Join": [
            "",
            [
              "Lambda function for auto-deleting objects in ",
              {
                "Ref": "canaryCanaryArtifactBucketagsCanaryArtifactBucketB6BAD0ED"
              },
              " S3 bucket."
            ]
          ]
        }
      },
      "DependsOn": [
        "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092"
      ],
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler",
        "aws:asset:path": "asset.3f51abb709b8e65167a45aeed02bab11540603d909005d7148230ba5ce6c74d7",
        "aws:asset:property": "Code"
      }
    },
    "metricscollectorconstructCustomResourceFunctionServiceRole731C3913": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "lambda.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "ManagedPolicyArns": [
          {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
              ]
            ]
          }
        ],
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/metrics-collector-construct/CustomResourceFunction/ServiceRole/Resource"
      }
    },
    "metricscollectorconstructCustomResourceFunction93E34BD8": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Code": {
          "S3Bucket": {
            "Fn::Sub": "solutions-${AWS::Region}"
          },
          "S3Key": "dynamic-object-and-rule-extensions-for-aws-network-firewall/v1.1.2/assetad93cb312c4f912246de1484bd52daa81a0a9e8e0eddabce59c629d734301807.zip"
        },
        "Role": {
          "Fn::GetAtt": [
            "metricscollectorconstructCustomResourceFunctionServiceRole731C3913",
            "Arn"
          ]
        },
        "Description": "Dynamic Object and Rule Extensions for AWS Network Firewall (v1.1.2): Custom resource",
        "Environment": {
          "Variables": {
            "SOLUTION_ID": "SO0196",
            "SOLUTION_VERSION": "v1.1.2"
          }
        },
        "Handler": "app.lambdaHandler",
        "MemorySize": 128,
        "Runtime": "nodejs14.x",
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ],
        "Timeout": 60
      },
      "DependsOn": [
        "metricscollectorconstructCustomResourceFunctionServiceRole731C3913"
      ],
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/metrics-collector-construct/CustomResourceFunction/Resource",
        "aws:asset:path": "asset.ad93cb312c4f912246de1484bd52daa81a0a9e8e0eddabce59c629d734301807",
        "aws:asset:is-bundled": false,
        "aws:asset:property": "Code"
      }
    },
    "metricscollectorconstructmetricsCollectorCrProviderframeworkonEventServiceRole815DEDF6": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "lambda.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "ManagedPolicyArns": [
          {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
              ]
            ]
          }
        ],
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/metrics-collector-construct/metricsCollectorCrProvider/framework-onEvent/ServiceRole/Resource"
      }
    },
    "metricscollectorconstructmetricsCollectorCrProviderframeworkonEventServiceRoleDefaultPolicy986F6844": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "lambda:InvokeFunction",
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "metricscollectorconstructCustomResourceFunction93E34BD8",
                    "Arn"
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "metricscollectorconstructCustomResourceFunction93E34BD8",
                          "Arn"
                        ]
                      },
                      ":*"
                    ]
                  ]
                }
              ]
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "metricscollectorconstructmetricsCollectorCrProviderframeworkonEventServiceRoleDefaultPolicy986F6844",
        "Roles": [
          {
            "Ref": "metricscollectorconstructmetricsCollectorCrProviderframeworkonEventServiceRole815DEDF6"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/metrics-collector-construct/metricsCollectorCrProvider/framework-onEvent/ServiceRole/DefaultPolicy/Resource"
      }
    },
    "metricscollectorconstructmetricsCollectorCrProviderframeworkonEvent2053A6CE": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Code": {
          "S3Bucket": {
            "Fn::Sub": "solutions-${AWS::Region}"
          },
          "S3Key": "dynamic-object-and-rule-extensions-for-aws-network-firewall/v1.1.2/asset6ff23d2800aac27308e31c227529dc13854507c3b2598d2433fcf82604fa054d.zip"
        },
        "Role": {
          "Fn::GetAtt": [
            "metricscollectorconstructmetricsCollectorCrProviderframeworkonEventServiceRole815DEDF6",
            "Arn"
          ]
        },
        "Description": "AWS CDK resource provider framework - onEvent (FirewallObjectExtensionSolutionStack/metrics-collector-construct/metricsCollectorCrProvider)",
        "Environment": {
          "Variables": {
            "USER_ON_EVENT_FUNCTION_ARN": {
              "Fn::GetAtt": [
                "metricscollectorconstructCustomResourceFunction93E34BD8",
                "Arn"
              ]
            }
          }
        },
        "Handler": "framework.onEvent",
        "Runtime": "nodejs14.x",
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ],
        "Timeout": 900
      },
      "DependsOn": [
        "metricscollectorconstructmetricsCollectorCrProviderframeworkonEventServiceRoleDefaultPolicy986F6844",
        "metricscollectorconstructmetricsCollectorCrProviderframeworkonEventServiceRole815DEDF6"
      ],
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/metrics-collector-construct/metricsCollectorCrProvider/framework-onEvent/Resource",
        "aws:asset:path": "asset.6ff23d2800aac27308e31c227529dc13854507c3b2598d2433fcf82604fa054d",
        "aws:asset:is-bundled": false,
        "aws:asset:property": "Code"
      }
    },
    "metricscollectorconstruct906DBEA5": {
      "Type": "AWS::CloudFormation::CustomResource",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "metricscollectorconstructmetricsCollectorCrProviderframeworkonEvent2053A6CE",
            "Arn"
          ]
        },
        "sendAnonymousMetric": "Yes",
        "enabledOpa": false,
        "privateEndpoint": true,
        "importedVpc": false
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/metrics-collector-construct/metrics-collector-construct/Default"
      }
    },
    "appregistryaspectRegistrySetup102673FE": {
      "Type": "AWS::ServiceCatalogAppRegistry::Application",
      "Properties": {
        "Name": {
          "Fn::Join": [
            "-",
            [
              "Dynamic-Object-and-Rule-Extensions-for-AWS-Network-Firewall",
              {
                "Ref": "AWS::Region"
              },
              {
                "Ref": "AWS::AccountId"
              }
            ]
          ]
        },
        "Description": "Service Catalog application to track and manage all your resources for the solution Dynamic-Object-and-Rule-Extensions-for-AWS-Network-Firewall",
        "Tags": {
          "SOLUTION-ID": "SO0196",
          "Solutions:ApplicationType": "AWS-Solutions",
          "Solutions:SolutionID": "SO0196",
          "Solutions:SolutionName": "Dynamic-Object-and-Rule-Extensions-for-AWS-Network-Firewall",
          "Solutions:SolutionVersion": "v1.1.2",
          "VERSION": "v1.1.2"
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/appregistry-aspect/RegistrySetup/Resource"
      }
    },
    "appregistryaspectRegistrySetupAttributeGroupAssociation895af3b42aa769ECAD9D": {
      "Type": "AWS::ServiceCatalogAppRegistry::AttributeGroupAssociation",
      "Properties": {
        "Application": {
          "Fn::GetAtt": [
            "appregistryaspectRegistrySetup102673FE",
            "Id"
          ]
        },
        "AttributeGroup": {
          "Fn::GetAtt": [
            "appregistryaspectAppAttributes2B0F8607",
            "Id"
          ]
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/appregistry-aspect/RegistrySetup/AttributeGroupAssociation895af3b42aa7"
      }
    },
    "appregistryaspectAppAttributes2B0F8607": {
      "Type": "AWS::ServiceCatalogAppRegistry::AttributeGroup",
      "Properties": {
        "Attributes": {
          "applicationType": "AWS-Solutions",
          "version": "v1.1.2",
          "solutionID": "SO0196",
          "solutionName": "Dynamic-Object-and-Rule-Extensions-for-AWS-Network-Firewall"
        },
        "Name": {
          "Ref": "AWS::StackName"
        },
        "Description": "Attributes for Solutions Metadata",
        "Tags": {
          "SOLUTION-ID": "SO0196",
          "VERSION": "v1.1.2"
        }
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/appregistry-aspect/AppAttributes/Resource"
      }
    },
    "appregistryaspectappRegistryCloudFormationHandlerServiceRole6FBB7B08": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "lambda.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "ManagedPolicyArns": [
          {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
              ]
            ]
          }
        ],
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/appregistry-aspect/appRegistryCloudFormationHandler/ServiceRole/Resource"
      }
    },
    "appregistryaspectappRegistryCloudFormationHandlerServiceRoleDefaultPolicyC17895B1": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "servicecatalog:GetApplication",
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::Join": [
                    "",
                    [
                      "arn:",
                      {
                        "Ref": "AWS::Partition"
                      },
                      ":servicecatalog:",
                      {
                        "Ref": "AWS::Region"
                      },
                      ":",
                      {
                        "Ref": "AWS::AccountId"
                      },
                      ":application/*"
                    ]
                  ]
                },
                {
                  "Fn::GetAtt": [
                    "appregistryaspectRegistrySetup102673FE",
                    "Arn"
                  ]
                }
              ]
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "appregistryaspectappRegistryCloudFormationHandlerServiceRoleDefaultPolicyC17895B1",
        "Roles": [
          {
            "Ref": "appregistryaspectappRegistryCloudFormationHandlerServiceRole6FBB7B08"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/appregistry-aspect/appRegistryCloudFormationHandler/ServiceRole/DefaultPolicy/Resource"
      }
    },
    "appregistryaspectappRegistryCloudFormationHandlerCBF7436D": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Code": {
          "S3Bucket": {
            "Fn::Sub": "solutions-${AWS::Region}"
          },
          "S3Key": "dynamic-object-and-rule-extensions-for-aws-network-firewall/v1.1.2/assetdab4f2363b9935460f97311fc0d988879b63ffb9188791a391acf366909e09e3.zip"
        },
        "Role": {
          "Fn::GetAtt": [
            "appregistryaspectappRegistryCloudFormationHandlerServiceRole6FBB7B08",
            "Arn"
          ]
        },
        "Description": "Customer resource lambda to check the completion of application insight creation",
        "Handler": "index.handler",
        "Runtime": "nodejs14.x",
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ],
        "Timeout": 300
      },
      "DependsOn": [
        "appregistryaspectappRegistryCloudFormationHandlerServiceRoleDefaultPolicyC17895B1",
        "appregistryaspectappRegistryCloudFormationHandlerServiceRole6FBB7B08"
      ],
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/appregistry-aspect/appRegistryCloudFormationHandler/Resource",
        "aws:asset:path": "asset.dab4f2363b9935460f97311fc0d988879b63ffb9188791a391acf366909e09e3",
        "aws:asset:is-bundled": false,
        "aws:asset:property": "Code"
      }
    },
    "appregistryaspectProviderframeworkonEventServiceRole78A543A0": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "lambda.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "ManagedPolicyArns": [
          {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
              ]
            ]
          }
        ],
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/appregistry-aspect/Provider/framework-onEvent/ServiceRole/Resource"
      }
    },
    "appregistryaspectProviderframeworkonEventServiceRoleDefaultPolicy03B6AC29": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "lambda:InvokeFunction",
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "appregistryaspectappRegistryCloudFormationHandlerCBF7436D",
                    "Arn"
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "appregistryaspectappRegistryCloudFormationHandlerCBF7436D",
                          "Arn"
                        ]
                      },
                      ":*"
                    ]
                  ]
                }
              ]
            },
            {
              "Action": "states:StartExecution",
              "Effect": "Allow",
              "Resource": {
                "Ref": "appregistryaspectProviderwaiterstatemachine3C9DF9E8"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "appregistryaspectProviderframeworkonEventServiceRoleDefaultPolicy03B6AC29",
        "Roles": [
          {
            "Ref": "appregistryaspectProviderframeworkonEventServiceRole78A543A0"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/appregistry-aspect/Provider/framework-onEvent/ServiceRole/DefaultPolicy/Resource"
      }
    },
    "appregistryaspectProviderframeworkonEventEED2B509": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Code": {
          "S3Bucket": {
            "Fn::Sub": "solutions-${AWS::Region}"
          },
          "S3Key": "dynamic-object-and-rule-extensions-for-aws-network-firewall/v1.1.2/asset6ff23d2800aac27308e31c227529dc13854507c3b2598d2433fcf82604fa054d.zip"
        },
        "Role": {
          "Fn::GetAtt": [
            "appregistryaspectProviderframeworkonEventServiceRole78A543A0",
            "Arn"
          ]
        },
        "Description": "AWS CDK resource provider framework - onEvent (FirewallObjectExtensionSolutionStack/appregistry-aspect/Provider)",
        "Environment": {
          "Variables": {
            "USER_ON_EVENT_FUNCTION_ARN": {
              "Fn::GetAtt": [
                "appregistryaspectappRegistryCloudFormationHandlerCBF7436D",
                "Arn"
              ]
            },
            "USER_IS_COMPLETE_FUNCTION_ARN": {
              "Fn::GetAtt": [
                "appregistryaspectappRegistryCloudFormationHandlerCBF7436D",
                "Arn"
              ]
            },
            "WAITER_STATE_MACHINE_ARN": {
              "Ref": "appregistryaspectProviderwaiterstatemachine3C9DF9E8"
            }
          }
        },
        "Handler": "framework.onEvent",
        "Runtime": "nodejs14.x",
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ],
        "Timeout": 900
      },
      "DependsOn": [
        "appregistryaspectProviderframeworkonEventServiceRoleDefaultPolicy03B6AC29",
        "appregistryaspectProviderframeworkonEventServiceRole78A543A0"
      ],
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/appregistry-aspect/Provider/framework-onEvent/Resource",
        "aws:asset:path": "asset.6ff23d2800aac27308e31c227529dc13854507c3b2598d2433fcf82604fa054d",
        "aws:asset:is-bundled": false,
        "aws:asset:property": "Code"
      }
    },
    "appregistryaspectProviderframeworkisCompleteServiceRole1EC35BE9": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "lambda.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "ManagedPolicyArns": [
          {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
              ]
            ]
          }
        ],
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/appregistry-aspect/Provider/framework-isComplete/ServiceRole/Resource"
      }
    },
    "appregistryaspectProviderframeworkisCompleteServiceRoleDefaultPolicy97608DF3": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "lambda:InvokeFunction",
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "appregistryaspectappRegistryCloudFormationHandlerCBF7436D",
                    "Arn"
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "appregistryaspectappRegistryCloudFormationHandlerCBF7436D",
                          "Arn"
                        ]
                      },
                      ":*"
                    ]
                  ]
                }
              ]
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "appregistryaspectProviderframeworkisCompleteServiceRoleDefaultPolicy97608DF3",
        "Roles": [
          {
            "Ref": "appregistryaspectProviderframeworkisCompleteServiceRole1EC35BE9"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/appregistry-aspect/Provider/framework-isComplete/ServiceRole/DefaultPolicy/Resource"
      }
    },
    "appregistryaspectProviderframeworkisComplete58E1A4AC": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Code": {
          "S3Bucket": {
            "Fn::Sub": "solutions-${AWS::Region}"
          },
          "S3Key": "dynamic-object-and-rule-extensions-for-aws-network-firewall/v1.1.2/asset6ff23d2800aac27308e31c227529dc13854507c3b2598d2433fcf82604fa054d.zip"
        },
        "Role": {
          "Fn::GetAtt": [
            "appregistryaspectProviderframeworkisCompleteServiceRole1EC35BE9",
            "Arn"
          ]
        },
        "Description": "AWS CDK resource provider framework - isComplete (FirewallObjectExtensionSolutionStack/appregistry-aspect/Provider)",
        "Environment": {
          "Variables": {
            "USER_ON_EVENT_FUNCTION_ARN": {
              "Fn::GetAtt": [
                "appregistryaspectappRegistryCloudFormationHandlerCBF7436D",
                "Arn"
              ]
            },
            "USER_IS_COMPLETE_FUNCTION_ARN": {
              "Fn::GetAtt": [
                "appregistryaspectappRegistryCloudFormationHandlerCBF7436D",
                "Arn"
              ]
            }
          }
        },
        "Handler": "framework.isComplete",
        "Runtime": "nodejs14.x",
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ],
        "Timeout": 900
      },
      "DependsOn": [
        "appregistryaspectProviderframeworkisCompleteServiceRoleDefaultPolicy97608DF3",
        "appregistryaspectProviderframeworkisCompleteServiceRole1EC35BE9"
      ],
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/appregistry-aspect/Provider/framework-isComplete/Resource",
        "aws:asset:path": "asset.6ff23d2800aac27308e31c227529dc13854507c3b2598d2433fcf82604fa054d",
        "aws:asset:is-bundled": false,
        "aws:asset:property": "Code"
      }
    },
    "appregistryaspectProviderframeworkonTimeoutServiceRoleB98309E2": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "lambda.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "ManagedPolicyArns": [
          {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
              ]
            ]
          }
        ],
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/appregistry-aspect/Provider/framework-onTimeout/ServiceRole/Resource"
      }
    },
    "appregistryaspectProviderframeworkonTimeoutServiceRoleDefaultPolicy18D1092A": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "lambda:InvokeFunction",
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "appregistryaspectappRegistryCloudFormationHandlerCBF7436D",
                    "Arn"
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "appregistryaspectappRegistryCloudFormationHandlerCBF7436D",
                          "Arn"
                        ]
                      },
                      ":*"
                    ]
                  ]
                }
              ]
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "appregistryaspectProviderframeworkonTimeoutServiceRoleDefaultPolicy18D1092A",
        "Roles": [
          {
            "Ref": "appregistryaspectProviderframeworkonTimeoutServiceRoleB98309E2"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/appregistry-aspect/Provider/framework-onTimeout/ServiceRole/DefaultPolicy/Resource"
      }
    },
    "appregistryaspectProviderframeworkonTimeout302C3FC1": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Code": {
          "S3Bucket": {
            "Fn::Sub": "solutions-${AWS::Region}"
          },
          "S3Key": "dynamic-object-and-rule-extensions-for-aws-network-firewall/v1.1.2/asset6ff23d2800aac27308e31c227529dc13854507c3b2598d2433fcf82604fa054d.zip"
        },
        "Role": {
          "Fn::GetAtt": [
            "appregistryaspectProviderframeworkonTimeoutServiceRoleB98309E2",
            "Arn"
          ]
        },
        "Description": "AWS CDK resource provider framework - onTimeout (FirewallObjectExtensionSolutionStack/appregistry-aspect/Provider)",
        "Environment": {
          "Variables": {
            "USER_ON_EVENT_FUNCTION_ARN": {
              "Fn::GetAtt": [
                "appregistryaspectappRegistryCloudFormationHandlerCBF7436D",
                "Arn"
              ]
            },
            "USER_IS_COMPLETE_FUNCTION_ARN": {
              "Fn::GetAtt": [
                "appregistryaspectappRegistryCloudFormationHandlerCBF7436D",
                "Arn"
              ]
            }
          }
        },
        "Handler": "framework.onTimeout",
        "Runtime": "nodejs14.x",
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ],
        "Timeout": 900
      },
      "DependsOn": [
        "appregistryaspectProviderframeworkonTimeoutServiceRoleDefaultPolicy18D1092A",
        "appregistryaspectProviderframeworkonTimeoutServiceRoleB98309E2"
      ],
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/appregistry-aspect/Provider/framework-onTimeout/Resource",
        "aws:asset:path": "asset.6ff23d2800aac27308e31c227529dc13854507c3b2598d2433fcf82604fa054d",
        "aws:asset:is-bundled": false,
        "aws:asset:property": "Code"
      }
    },
    "appregistryaspectProviderwaiterstatemachineRoleBD186E16": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": {
                  "Fn::FindInMap": [
                    "ServiceprincipalMap",
                    {
                      "Ref": "AWS::Region"
                    },
                    "states"
                  ]
                }
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/appregistry-aspect/Provider/waiter-state-machine/Role/Resource"
      }
    },
    "appregistryaspectProviderwaiterstatemachineRoleDefaultPolicyC697EB3B": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "lambda:InvokeFunction",
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "appregistryaspectProviderframeworkisComplete58E1A4AC",
                    "Arn"
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "appregistryaspectProviderframeworkisComplete58E1A4AC",
                          "Arn"
                        ]
                      },
                      ":*"
                    ]
                  ]
                }
              ]
            },
            {
              "Action": "lambda:InvokeFunction",
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "appregistryaspectProviderframeworkonTimeout302C3FC1",
                    "Arn"
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "appregistryaspectProviderframeworkonTimeout302C3FC1",
                          "Arn"
                        ]
                      },
                      ":*"
                    ]
                  ]
                }
              ]
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "appregistryaspectProviderwaiterstatemachineRoleDefaultPolicyC697EB3B",
        "Roles": [
          {
            "Ref": "appregistryaspectProviderwaiterstatemachineRoleBD186E16"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/appregistry-aspect/Provider/waiter-state-machine/Role/DefaultPolicy/Resource"
      }
    },
    "appregistryaspectProviderwaiterstatemachine3C9DF9E8": {
      "Type": "AWS::StepFunctions::StateMachine",
      "Properties": {
        "DefinitionString": {
          "Fn::Join": [
            "",
            [
              "{\"StartAt\":\"framework-isComplete-task\",\"States\":{\"framework-isComplete-task\":{\"End\":true,\"Retry\":[{\"ErrorEquals\":[\"States.ALL\"],\"IntervalSeconds\":1,\"MaxAttempts\":300,\"BackoffRate\":1}],\"Catch\":[{\"ErrorEquals\":[\"States.ALL\"],\"Next\":\"framework-onTimeout-task\"}],\"Type\":\"Task\",\"Resource\":\"",
              {
                "Fn::GetAtt": [
                  "appregistryaspectProviderframeworkisComplete58E1A4AC",
                  "Arn"
                ]
              },
              "\"},\"framework-onTimeout-task\":{\"End\":true,\"Type\":\"Task\",\"Resource\":\"",
              {
                "Fn::GetAtt": [
                  "appregistryaspectProviderframeworkonTimeout302C3FC1",
                  "Arn"
                ]
              },
              "\"}}}"
            ]
          ]
        },
        "RoleArn": {
          "Fn::GetAtt": [
            "appregistryaspectProviderwaiterstatemachineRoleBD186E16",
            "Arn"
          ]
        }
      },
      "DependsOn": [
        "appregistryaspectProviderwaiterstatemachineRoleDefaultPolicyC697EB3B",
        "appregistryaspectProviderwaiterstatemachineRoleBD186E16"
      ],
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/appregistry-aspect/Provider/waiter-state-machine/Resource"
      }
    },
    "appregistryaspectCustomResource939AB474": {
      "Type": "AWS::CloudFormation::CustomResource",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "appregistryaspectProviderframeworkonEventEED2B509",
            "Arn"
          ]
        },
        "applicationId": {
          "Fn::GetAtt": [
            "appregistryaspectRegistrySetup102673FE",
            "Id"
          ]
        },
        "applicationName": {
          "Fn::Join": [
            "-",
            [
              "Dynamic-Object-and-Rule-Extensions-for-AWS-Network-Firewall",
              {
                "Ref": "AWS::Region"
              },
              {
                "Ref": "AWS::AccountId"
              }
            ]
          ]
        }
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/appregistry-aspect/CustomResource/Default"
      }
    },
    "appregistryaspectAppInsightsSetup1F80DFA2": {
      "Type": "AWS::ApplicationInsights::Application",
      "Properties": {
        "ResourceGroupName": {
          "Fn::Join": [
            "-",
            [
              "AWS_AppRegistry_Application-Dynamic-Object-and-Rule-Extensions-for-AWS-Network-Firewall",
              {
                "Ref": "AWS::Region"
              },
              {
                "Ref": "AWS::AccountId"
              }
            ]
          ]
        },
        "AutoConfigurationEnabled": true,
        "CWEMonitorEnabled": true,
        "OpsCenterEnabled": true,
        "Tags": [
          {
            "Key": "SOLUTION-ID",
            "Value": "SO0196"
          },
          {
            "Key": "VERSION",
            "Value": "v1.1.2"
          }
        ]
      },
      "DependsOn": [
        "appregistryaspectCustomResource939AB474"
      ],
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/appregistry-aspect/AppInsightsSetup"
      }
    },
    "AppRegistryAssociation": {
      "Type": "AWS::ServiceCatalogAppRegistry::ResourceAssociation",
      "Properties": {
        "Application": {
          "Fn::GetAtt": [
            "appregistryaspectRegistrySetup102673FE",
            "Id"
          ]
        },
        "Resource": {
          "Ref": "AWS::StackId"
        },
        "ResourceType": "CFN_STACK"
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/AppRegistryAssociation"
      }
    },
    "CDKMetadata": {
      "Type": "AWS::CDK::Metadata",
      "Properties": {
        "Analytics": "v2:deflate64:H4sIAAAAAAAA/3VU227bMAz9lr4rapZhe557RbF185KurwEts7EaW9J0SRAY/vdRsmM7w/bEwyOal0PJK/5pydvlFRzdQpT7RS0L3m48iD0jatuiWPH21Qh2+6Ze81uWW3kAj5tQKPSRnNBaB48vUNQ48ROXOaeFBC+1GoNZHopaiinF/VMezXfwj1TkCKfoPSmPlgJmFHUyeJmnXqsGlWcDQ83eq9JoqfwQOroPtT5+07tIn+EGRbDSnx6tDib1fUGk2m8gcJa1Y/vG8fYrplaiyWoJLjoJdKzWOwqg9GPWM+6YhIa3a92LlGyuSYOUq0cdcx95exPEvhdlQL2Zgi/83rkBhx0TtQ6ltyBr3r5EE6MT6Fh5UtDoknY8LioBqqmo5RdtZFp1AkT+JvJnwJAiE6DpoClK4O1DUOK8zjnO0TbSOfLiJFtwDr3jWTQMD7QpyrkOgwAh1gYjd/3y6ASdz4xMhxPMhNCBNniHptantG5iZx5d2V1/7xKgT3WwAqMi7Bl9pct4OKDz6VCkx78cfZjXkGYYnUHOI3hR8fYOXFVosCnZ5GQ12KbfPwGa+qR8hV4Kx4m8BQX2xBzagxQowAPdDzDG4k46b2nm+KUxtMjxedC1trKgJ5JuzV9v5/JwPsQsMKo6ppTKyV3lUzuzSt2FEj+CN8GztKioolT0UoLzuvmnXpdHudUHWaJlItFbO/COjydRCq1KeR7jmRqkGh1bLqA2FfDl1ZfhN3Qd7X8FG8LbuWaXmnQdU7pE/u6uDx8+89WScr87KReWLpFskK97+wfq9KsT/gQAAA=="
      },
      "Metadata": {
        "aws:cdk:path": "FirewallObjectExtensionSolutionStack/CDKMetadata/Default"
      },
      "Condition": "CDKMetadataAvailable"
    }
  },
  "Outputs": {
    "DataSourcesRuleEvaluationResultTopicARN44D5208F": {
      "Value": {
        "Ref": "DataSourcesRuleEvaluationResultTopic5273BF75"
      }
    },
    "autoconfigautoConfigFunctionScheduler2B44A1E9": {
      "Value": {
        "Ref": "autoconfigautoConfigSchedulerE6836502"
      }
    },
    "autoconfigapiAPIEndpoint07B44425": {
      "Value": {
        "Fn::Join": [
          "",
          [
            "https://",
            {
              "Ref": "autoconfigapiAPI373CEEE7"
            },
            ".execute-api.",
            {
              "Ref": "AWS::Region"
            },
            ".",
            {
              "Ref": "AWS::URLSuffix"
            },
            "/",
            {
              "Ref": "autoconfigapiAPIDeploymentStageprod291BEEF2"
            },
            "/"
          ]
        ]
      }
    },
    "autoconfigapiadminRoleArnB087DB58": {
      "Value": {
        "Fn::GetAtt": [
          "autoconfigapiapiadminrole61E8F682",
          "Arn"
        ]
      }
    }
  },
  "Conditions": {
    "CDKMetadataAvailable": {
      "Fn::Or": [
        {
          "Fn::Or": [
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "af-south-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ap-east-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ap-northeast-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ap-northeast-2"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ap-south-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ap-southeast-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ap-southeast-2"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ca-central-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "cn-north-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "cn-northwest-1"
              ]
            }
          ]
        },
        {
          "Fn::Or": [
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "eu-central-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "eu-north-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "eu-south-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "eu-west-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "eu-west-2"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "eu-west-3"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "me-south-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "sa-east-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "us-east-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "us-east-2"
              ]
            }
          ]
        },
        {
          "Fn::Or": [
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "us-west-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "us-west-2"
              ]
            }
          ]
        }
      ]
    }
  },
  "Mappings": {
    "ServiceprincipalMap": {
      "af-south-1": {
        "states": "states.af-south-1.amazonaws.com"
      },
      "ap-east-1": {
        "states": "states.ap-east-1.amazonaws.com"
      },
      "ap-northeast-1": {
        "states": "states.ap-northeast-1.amazonaws.com"
      },
      "ap-northeast-2": {
        "states": "states.ap-northeast-2.amazonaws.com"
      },
      "ap-northeast-3": {
        "states": "states.ap-northeast-3.amazonaws.com"
      },
      "ap-south-1": {
        "states": "states.ap-south-1.amazonaws.com"
      },
      "ap-southeast-1": {
        "states": "states.ap-southeast-1.amazonaws.com"
      },
      "ap-southeast-2": {
        "states": "states.ap-southeast-2.amazonaws.com"
      },
      "ap-southeast-3": {
        "states": "states.ap-southeast-3.amazonaws.com"
      },
      "ca-central-1": {
        "states": "states.ca-central-1.amazonaws.com"
      },
      "cn-north-1": {
        "states": "states.cn-north-1.amazonaws.com"
      },
      "cn-northwest-1": {
        "states": "states.cn-northwest-1.amazonaws.com"
      },
      "eu-central-1": {
        "states": "states.eu-central-1.amazonaws.com"
      },
      "eu-north-1": {
        "states": "states.eu-north-1.amazonaws.com"
      },
      "eu-south-1": {
        "states": "states.eu-south-1.amazonaws.com"
      },
      "eu-south-2": {
        "states": "states.eu-south-2.amazonaws.com"
      },
      "eu-west-1": {
        "states": "states.eu-west-1.amazonaws.com"
      },
      "eu-west-2": {
        "states": "states.eu-west-2.amazonaws.com"
      },
      "eu-west-3": {
        "states": "states.eu-west-3.amazonaws.com"
      },
      "me-south-1": {
        "states": "states.me-south-1.amazonaws.com"
      },
      "sa-east-1": {
        "states": "states.sa-east-1.amazonaws.com"
      },
      "us-east-1": {
        "states": "states.us-east-1.amazonaws.com"
      },
      "us-east-2": {
        "states": "states.us-east-2.amazonaws.com"
      },
      "us-gov-east-1": {
        "states": "states.us-gov-east-1.amazonaws.com"
      },
      "us-gov-west-1": {
        "states": "states.us-gov-west-1.amazonaws.com"
      },
      "us-iso-east-1": {
        "states": "states.amazonaws.com"
      },
      "us-iso-west-1": {
        "states": "states.amazonaws.com"
      },
      "us-isob-east-1": {
        "states": "states.amazonaws.com"
      },
      "us-west-1": {
        "states": "states.us-west-1.amazonaws.com"
      },
      "us-west-2": {
        "states": "states.us-west-2.amazonaws.com"
      }
    }
  },
  "Parameters": {
    "BootstrapVersion": {
      "Type": "AWS::SSM::Parameter::Value<String>",
      "Default": "/cdk-bootstrap/hnb659fds/version",
      "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]"
    }
  },
  "Rules": {
    "CheckBootstrapVersion": {
      "Assertions": [
        {
          "Assert": {
            "Fn::Not": [
              {
                "Fn::Contains": [
                  [
                    "1",
                    "2",
                    "3",
                    "4",
                    "5"
                  ],
                  {
                    "Ref": "BootstrapVersion"
                  }
                ]
              }
            ]
          },
          "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI."
        }
      ]
    }
  }
}