Skip to content

web-acl resource

Source: internal/service/wafv2/web_acl_types.go:578

Example usage:

imports: {
  aws-wafv2: 'github.com/cloudboss/unobin-library-aws//service/wafv2'
}

resources: {
  example: aws-wafv2.web-acl {
    # Set input fields here.
  }
}

Inputs

application-config

optional(object)
optional(
  object({
    attributes: list(
      object({
        name: string
        values: list(string)
      })
    )
  })
)

association-config

optional(object)
optional(
  object({
    request-body: object({
      api-gateway: optional(
        object({
          default-size-inspection-limit: string
        })
      )
      app-runner-service: optional(
        object({
          default-size-inspection-limit: string
        })
      )
      cloudfront: optional(
        object({
          default-size-inspection-limit: string
        })
      )
      cognito-user-pool: optional(
        object({
          default-size-inspection-limit: string
        })
      )
      verified-access-instance: optional(
        object({
          default-size-inspection-limit: string
        })
      )
    })
  })
)

captcha-config

optional(object)
optional(
  object({
    immunity-time-property: optional(
      object({
        immunity-time: integer
      })
    )
  })
)

challenge-config

optional(object)
optional(
  object({
    immunity-time-property: optional(
      object({
        immunity-time: integer
      })
    )
  })
)

custom-response-bodies

optional(map(object))
optional(
  map(
    object({
      content: string
      content-type: string
    })
  )
)

data-protection-config

optional(object)
optional(
  object({
    data-protections: list(
      object({
        action: string
        exclude-rate-based-details: boolean
        exclude-rule-match-details: boolean
        field: object({
          field-keys: optional(list(string))
          field-type: string
        })
      })
    )
  })
)

on-source-ddos-protection-config

optional(object)
optional(
  object({
    alb-low-reputation-mode: string
  })
)

name

optional(string)

scope

string

required

default-action

object
object({
  allow: optional(
    object({
      custom-request-handling: optional(
        object({
          insert-headers: list(
            object({
              name: string
              value: string
            })
          )
        })
      )
    })
  )
  block: optional(
    object({
      custom-response: optional(
        object({
          response-code: integer
          custom-response-body-key: optional(string)
          response-headers: optional(
            list(
              object({
                name: string
                value: string
              })
            )
          )
        })
      )
    })
  )
})

required

visibility-config

object
object({
  cloudwatch-metrics-enabled: boolean
  metric-name: string
  sampled-requests-enabled: boolean
})

required

description

optional(string)

rules

optional(list(object))
optional(
  list(
    object({
      action: optional(
        object({
          allow: optional(
            object({
              custom-request-handling: optional(
                object({
                  insert-headers: list(
                    object({
                      name: string
                      value: string
                    })
                  )
                })
              )
            })
          )
          block: optional(
            object({
              custom-response: optional(
                object({
                  response-code: integer
                  custom-response-body-key: optional(string)
                  response-headers: optional(
                    list(
                      object({
                        name: string
                        value: string
                      })
                    )
                  )
                })
              )
            })
          )
          captcha: optional(
            object({
              custom-request-handling: optional(
                object({
                  insert-headers: list(
                    object({
                      name: string
                      value: string
                    })
                  )
                })
              )
            })
          )
          challenge: optional(
            object({
              custom-request-handling: optional(
                object({
                  insert-headers: list(
                    object({
                      name: string
                      value: string
                    })
                  )
                })
              )
            })
          )
          count: optional(
            object({
              custom-request-handling: optional(
                object({
                  insert-headers: list(
                    object({
                      name: string
                      value: string
                    })
                  )
                })
              )
            })
          )
        })
      )
      captcha-config: optional(
        object({
          immunity-time-property: optional(
            object({
              immunity-time: integer
            })
          )
        })
      )
      challenge-config: optional(
        object({
          immunity-time-property: optional(
            object({
              immunity-time: integer
            })
          )
        })
      )
      name: string
      override-action: optional(
        object({
          count: optional(object({}))
          none: optional(object({}))
        })
      )
      priority: integer
      rule-labels: optional(
        list(
          object({
            name: string
          })
        )
      )
      statement: object({
        and-statement: optional(
          object({
            statements: list(
              object({
                and-statement: optional(
                  object({
                    statements: list(
                      object({
                        and-statement: optional(
                          object({
                            statements: list(
                              object({
                                asn-match-statement: optional(
                                  object({
                                    asn-list: list(integer)
                                    forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                      })
                                    )
                                  })
                                )
                                byte-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    positional-constraint: string
                                    search-string: optional(string)
                                    search-string-base64: optional(string)
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                geo-match-statement: optional(
                                  object({
                                    country-codes: list(string)
                                    forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                      })
                                    )
                                  })
                                )
                                ip-set-reference-statement: optional(
                                  object({
                                    arn: string
                                    ip-set-forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                        position: string
                                      })
                                    )
                                  })
                                )
                                label-match-statement: optional(
                                  object({
                                    key: string
                                    scope: string
                                  })
                                )
                                regex-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    regex-string: string
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                regex-pattern-set-reference-statement: optional(
                                  object({
                                    arn: string
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                size-constraint-statement: optional(
                                  object({
                                    comparison-operator: string
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    size: integer
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                sqli-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    sensitivity-level: optional(string)
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                xss-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                              })
                            )
                          })
                        )
                        not-statement: optional(
                          object({
                            statement: object({
                              asn-match-statement: optional(
                                object({
                                  asn-list: list(integer)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              byte-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  positional-constraint: string
                                  search-string: optional(string)
                                  search-string-base64: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              geo-match-statement: optional(
                                object({
                                  country-codes: list(string)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              ip-set-reference-statement: optional(
                                object({
                                  arn: string
                                  ip-set-forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                      position: string
                                    })
                                  )
                                })
                              )
                              label-match-statement: optional(
                                object({
                                  key: string
                                  scope: string
                                })
                              )
                              regex-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  regex-string: string
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              regex-pattern-set-reference-statement: optional(
                                object({
                                  arn: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              size-constraint-statement: optional(
                                object({
                                  comparison-operator: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  size: integer
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              sqli-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  sensitivity-level: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              xss-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                            })
                          })
                        )
                        or-statement: optional(
                          object({
                            statements: list(
                              object({
                                asn-match-statement: optional(
                                  object({
                                    asn-list: list(integer)
                                    forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                      })
                                    )
                                  })
                                )
                                byte-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    positional-constraint: string
                                    search-string: optional(string)
                                    search-string-base64: optional(string)
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                geo-match-statement: optional(
                                  object({
                                    country-codes: list(string)
                                    forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                      })
                                    )
                                  })
                                )
                                ip-set-reference-statement: optional(
                                  object({
                                    arn: string
                                    ip-set-forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                        position: string
                                      })
                                    )
                                  })
                                )
                                label-match-statement: optional(
                                  object({
                                    key: string
                                    scope: string
                                  })
                                )
                                regex-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    regex-string: string
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                regex-pattern-set-reference-statement: optional(
                                  object({
                                    arn: string
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                size-constraint-statement: optional(
                                  object({
                                    comparison-operator: string
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    size: integer
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                sqli-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    sensitivity-level: optional(string)
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                xss-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                              })
                            )
                          })
                        )
                        asn-match-statement: optional(
                          object({
                            asn-list: list(integer)
                            forwarded-ip-config: optional(
                              object({
                                fallback-behavior: string
                                header-name: string
                              })
                            )
                          })
                        )
                        byte-match-statement: optional(
                          object({
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            positional-constraint: string
                            search-string: optional(string)
                            search-string-base64: optional(string)
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        geo-match-statement: optional(
                          object({
                            country-codes: list(string)
                            forwarded-ip-config: optional(
                              object({
                                fallback-behavior: string
                                header-name: string
                              })
                            )
                          })
                        )
                        ip-set-reference-statement: optional(
                          object({
                            arn: string
                            ip-set-forwarded-ip-config: optional(
                              object({
                                fallback-behavior: string
                                header-name: string
                                position: string
                              })
                            )
                          })
                        )
                        label-match-statement: optional(
                          object({
                            key: string
                            scope: string
                          })
                        )
                        regex-match-statement: optional(
                          object({
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            regex-string: string
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        regex-pattern-set-reference-statement: optional(
                          object({
                            arn: string
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        size-constraint-statement: optional(
                          object({
                            comparison-operator: string
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            size: integer
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        sqli-match-statement: optional(
                          object({
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            sensitivity-level: optional(string)
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        xss-match-statement: optional(
                          object({
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                      })
                    )
                  })
                )
                not-statement: optional(
                  object({
                    statement: object({
                      and-statement: optional(
                        object({
                          statements: list(
                            object({
                              asn-match-statement: optional(
                                object({
                                  asn-list: list(integer)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              byte-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  positional-constraint: string
                                  search-string: optional(string)
                                  search-string-base64: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              geo-match-statement: optional(
                                object({
                                  country-codes: list(string)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              ip-set-reference-statement: optional(
                                object({
                                  arn: string
                                  ip-set-forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                      position: string
                                    })
                                  )
                                })
                              )
                              label-match-statement: optional(
                                object({
                                  key: string
                                  scope: string
                                })
                              )
                              regex-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  regex-string: string
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              regex-pattern-set-reference-statement: optional(
                                object({
                                  arn: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              size-constraint-statement: optional(
                                object({
                                  comparison-operator: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  size: integer
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              sqli-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  sensitivity-level: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              xss-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                            })
                          )
                        })
                      )
                      not-statement: optional(
                        object({
                          statement: object({
                            asn-match-statement: optional(
                              object({
                                asn-list: list(integer)
                                forwarded-ip-config: optional(
                                  object({
                                    fallback-behavior: string
                                    header-name: string
                                  })
                                )
                              })
                            )
                            byte-match-statement: optional(
                              object({
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                positional-constraint: string
                                search-string: optional(string)
                                search-string-base64: optional(string)
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            geo-match-statement: optional(
                              object({
                                country-codes: list(string)
                                forwarded-ip-config: optional(
                                  object({
                                    fallback-behavior: string
                                    header-name: string
                                  })
                                )
                              })
                            )
                            ip-set-reference-statement: optional(
                              object({
                                arn: string
                                ip-set-forwarded-ip-config: optional(
                                  object({
                                    fallback-behavior: string
                                    header-name: string
                                    position: string
                                  })
                                )
                              })
                            )
                            label-match-statement: optional(
                              object({
                                key: string
                                scope: string
                              })
                            )
                            regex-match-statement: optional(
                              object({
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                regex-string: string
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            regex-pattern-set-reference-statement: optional(
                              object({
                                arn: string
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            size-constraint-statement: optional(
                              object({
                                comparison-operator: string
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                size: integer
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            sqli-match-statement: optional(
                              object({
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                sensitivity-level: optional(string)
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            xss-match-statement: optional(
                              object({
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                          })
                        })
                      )
                      or-statement: optional(
                        object({
                          statements: list(
                            object({
                              asn-match-statement: optional(
                                object({
                                  asn-list: list(integer)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              byte-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  positional-constraint: string
                                  search-string: optional(string)
                                  search-string-base64: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              geo-match-statement: optional(
                                object({
                                  country-codes: list(string)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              ip-set-reference-statement: optional(
                                object({
                                  arn: string
                                  ip-set-forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                      position: string
                                    })
                                  )
                                })
                              )
                              label-match-statement: optional(
                                object({
                                  key: string
                                  scope: string
                                })
                              )
                              regex-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  regex-string: string
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              regex-pattern-set-reference-statement: optional(
                                object({
                                  arn: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              size-constraint-statement: optional(
                                object({
                                  comparison-operator: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  size: integer
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              sqli-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  sensitivity-level: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              xss-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                            })
                          )
                        })
                      )
                      asn-match-statement: optional(
                        object({
                          asn-list: list(integer)
                          forwarded-ip-config: optional(
                            object({
                              fallback-behavior: string
                              header-name: string
                            })
                          )
                        })
                      )
                      byte-match-statement: optional(
                        object({
                          field-to-match: object({
                            all-query-arguments: optional(object({}))
                            body: optional(
                              object({
                                oversize-handling: optional(string)
                              })
                            )
                            cookies: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-cookies: optional(list(string))
                                  included-cookies: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            header-order: optional(
                              object({
                                oversize-handling: string
                              })
                            )
                            headers: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-headers: optional(list(string))
                                  included-headers: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            ja3-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            ja4-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            json-body: optional(
                              object({
                                invalid-fallback-behavior: optional(string)
                                match-pattern: object({
                                  all: optional(object({}))
                                  included-paths: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            method: optional(object({}))
                            query-string: optional(object({}))
                            single-header: optional(
                              object({
                                name: string
                              })
                            )
                            single-query-argument: optional(
                              object({
                                name: string
                              })
                            )
                            uri-fragment: optional(
                              object({
                                fallback-behavior: optional(string)
                              })
                            )
                            uri-path: optional(object({}))
                          })
                          positional-constraint: string
                          search-string: optional(string)
                          search-string-base64: optional(string)
                          text-transformations: list(
                            object({
                              priority: integer
                              type: string
                            })
                          )
                        })
                      )
                      geo-match-statement: optional(
                        object({
                          country-codes: list(string)
                          forwarded-ip-config: optional(
                            object({
                              fallback-behavior: string
                              header-name: string
                            })
                          )
                        })
                      )
                      ip-set-reference-statement: optional(
                        object({
                          arn: string
                          ip-set-forwarded-ip-config: optional(
                            object({
                              fallback-behavior: string
                              header-name: string
                              position: string
                            })
                          )
                        })
                      )
                      label-match-statement: optional(
                        object({
                          key: string
                          scope: string
                        })
                      )
                      regex-match-statement: optional(
                        object({
                          field-to-match: object({
                            all-query-arguments: optional(object({}))
                            body: optional(
                              object({
                                oversize-handling: optional(string)
                              })
                            )
                            cookies: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-cookies: optional(list(string))
                                  included-cookies: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            header-order: optional(
                              object({
                                oversize-handling: string
                              })
                            )
                            headers: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-headers: optional(list(string))
                                  included-headers: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            ja3-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            ja4-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            json-body: optional(
                              object({
                                invalid-fallback-behavior: optional(string)
                                match-pattern: object({
                                  all: optional(object({}))
                                  included-paths: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            method: optional(object({}))
                            query-string: optional(object({}))
                            single-header: optional(
                              object({
                                name: string
                              })
                            )
                            single-query-argument: optional(
                              object({
                                name: string
                              })
                            )
                            uri-fragment: optional(
                              object({
                                fallback-behavior: optional(string)
                              })
                            )
                            uri-path: optional(object({}))
                          })
                          regex-string: string
                          text-transformations: list(
                            object({
                              priority: integer
                              type: string
                            })
                          )
                        })
                      )
                      regex-pattern-set-reference-statement: optional(
                        object({
                          arn: string
                          field-to-match: object({
                            all-query-arguments: optional(object({}))
                            body: optional(
                              object({
                                oversize-handling: optional(string)
                              })
                            )
                            cookies: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-cookies: optional(list(string))
                                  included-cookies: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            header-order: optional(
                              object({
                                oversize-handling: string
                              })
                            )
                            headers: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-headers: optional(list(string))
                                  included-headers: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            ja3-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            ja4-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            json-body: optional(
                              object({
                                invalid-fallback-behavior: optional(string)
                                match-pattern: object({
                                  all: optional(object({}))
                                  included-paths: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            method: optional(object({}))
                            query-string: optional(object({}))
                            single-header: optional(
                              object({
                                name: string
                              })
                            )
                            single-query-argument: optional(
                              object({
                                name: string
                              })
                            )
                            uri-fragment: optional(
                              object({
                                fallback-behavior: optional(string)
                              })
                            )
                            uri-path: optional(object({}))
                          })
                          text-transformations: list(
                            object({
                              priority: integer
                              type: string
                            })
                          )
                        })
                      )
                      size-constraint-statement: optional(
                        object({
                          comparison-operator: string
                          field-to-match: object({
                            all-query-arguments: optional(object({}))
                            body: optional(
                              object({
                                oversize-handling: optional(string)
                              })
                            )
                            cookies: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-cookies: optional(list(string))
                                  included-cookies: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            header-order: optional(
                              object({
                                oversize-handling: string
                              })
                            )
                            headers: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-headers: optional(list(string))
                                  included-headers: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            ja3-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            ja4-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            json-body: optional(
                              object({
                                invalid-fallback-behavior: optional(string)
                                match-pattern: object({
                                  all: optional(object({}))
                                  included-paths: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            method: optional(object({}))
                            query-string: optional(object({}))
                            single-header: optional(
                              object({
                                name: string
                              })
                            )
                            single-query-argument: optional(
                              object({
                                name: string
                              })
                            )
                            uri-fragment: optional(
                              object({
                                fallback-behavior: optional(string)
                              })
                            )
                            uri-path: optional(object({}))
                          })
                          size: integer
                          text-transformations: list(
                            object({
                              priority: integer
                              type: string
                            })
                          )
                        })
                      )
                      sqli-match-statement: optional(
                        object({
                          field-to-match: object({
                            all-query-arguments: optional(object({}))
                            body: optional(
                              object({
                                oversize-handling: optional(string)
                              })
                            )
                            cookies: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-cookies: optional(list(string))
                                  included-cookies: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            header-order: optional(
                              object({
                                oversize-handling: string
                              })
                            )
                            headers: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-headers: optional(list(string))
                                  included-headers: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            ja3-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            ja4-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            json-body: optional(
                              object({
                                invalid-fallback-behavior: optional(string)
                                match-pattern: object({
                                  all: optional(object({}))
                                  included-paths: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            method: optional(object({}))
                            query-string: optional(object({}))
                            single-header: optional(
                              object({
                                name: string
                              })
                            )
                            single-query-argument: optional(
                              object({
                                name: string
                              })
                            )
                            uri-fragment: optional(
                              object({
                                fallback-behavior: optional(string)
                              })
                            )
                            uri-path: optional(object({}))
                          })
                          sensitivity-level: optional(string)
                          text-transformations: list(
                            object({
                              priority: integer
                              type: string
                            })
                          )
                        })
                      )
                      xss-match-statement: optional(
                        object({
                          field-to-match: object({
                            all-query-arguments: optional(object({}))
                            body: optional(
                              object({
                                oversize-handling: optional(string)
                              })
                            )
                            cookies: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-cookies: optional(list(string))
                                  included-cookies: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            header-order: optional(
                              object({
                                oversize-handling: string
                              })
                            )
                            headers: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-headers: optional(list(string))
                                  included-headers: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            ja3-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            ja4-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            json-body: optional(
                              object({
                                invalid-fallback-behavior: optional(string)
                                match-pattern: object({
                                  all: optional(object({}))
                                  included-paths: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            method: optional(object({}))
                            query-string: optional(object({}))
                            single-header: optional(
                              object({
                                name: string
                              })
                            )
                            single-query-argument: optional(
                              object({
                                name: string
                              })
                            )
                            uri-fragment: optional(
                              object({
                                fallback-behavior: optional(string)
                              })
                            )
                            uri-path: optional(object({}))
                          })
                          text-transformations: list(
                            object({
                              priority: integer
                              type: string
                            })
                          )
                        })
                      )
                    })
                  })
                )
                or-statement: optional(
                  object({
                    statements: list(
                      object({
                        and-statement: optional(
                          object({
                            statements: list(
                              object({
                                asn-match-statement: optional(
                                  object({
                                    asn-list: list(integer)
                                    forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                      })
                                    )
                                  })
                                )
                                byte-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    positional-constraint: string
                                    search-string: optional(string)
                                    search-string-base64: optional(string)
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                geo-match-statement: optional(
                                  object({
                                    country-codes: list(string)
                                    forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                      })
                                    )
                                  })
                                )
                                ip-set-reference-statement: optional(
                                  object({
                                    arn: string
                                    ip-set-forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                        position: string
                                      })
                                    )
                                  })
                                )
                                label-match-statement: optional(
                                  object({
                                    key: string
                                    scope: string
                                  })
                                )
                                regex-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    regex-string: string
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                regex-pattern-set-reference-statement: optional(
                                  object({
                                    arn: string
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                size-constraint-statement: optional(
                                  object({
                                    comparison-operator: string
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    size: integer
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                sqli-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    sensitivity-level: optional(string)
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                xss-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                              })
                            )
                          })
                        )
                        not-statement: optional(
                          object({
                            statement: object({
                              asn-match-statement: optional(
                                object({
                                  asn-list: list(integer)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              byte-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  positional-constraint: string
                                  search-string: optional(string)
                                  search-string-base64: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              geo-match-statement: optional(
                                object({
                                  country-codes: list(string)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              ip-set-reference-statement: optional(
                                object({
                                  arn: string
                                  ip-set-forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                      position: string
                                    })
                                  )
                                })
                              )
                              label-match-statement: optional(
                                object({
                                  key: string
                                  scope: string
                                })
                              )
                              regex-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  regex-string: string
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              regex-pattern-set-reference-statement: optional(
                                object({
                                  arn: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              size-constraint-statement: optional(
                                object({
                                  comparison-operator: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  size: integer
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              sqli-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  sensitivity-level: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              xss-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                            })
                          })
                        )
                        or-statement: optional(
                          object({
                            statements: list(
                              object({
                                asn-match-statement: optional(
                                  object({
                                    asn-list: list(integer)
                                    forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                      })
                                    )
                                  })
                                )
                                byte-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    positional-constraint: string
                                    search-string: optional(string)
                                    search-string-base64: optional(string)
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                geo-match-statement: optional(
                                  object({
                                    country-codes: list(string)
                                    forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                      })
                                    )
                                  })
                                )
                                ip-set-reference-statement: optional(
                                  object({
                                    arn: string
                                    ip-set-forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                        position: string
                                      })
                                    )
                                  })
                                )
                                label-match-statement: optional(
                                  object({
                                    key: string
                                    scope: string
                                  })
                                )
                                regex-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    regex-string: string
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                regex-pattern-set-reference-statement: optional(
                                  object({
                                    arn: string
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                size-constraint-statement: optional(
                                  object({
                                    comparison-operator: string
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    size: integer
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                sqli-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    sensitivity-level: optional(string)
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                xss-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                              })
                            )
                          })
                        )
                        asn-match-statement: optional(
                          object({
                            asn-list: list(integer)
                            forwarded-ip-config: optional(
                              object({
                                fallback-behavior: string
                                header-name: string
                              })
                            )
                          })
                        )
                        byte-match-statement: optional(
                          object({
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            positional-constraint: string
                            search-string: optional(string)
                            search-string-base64: optional(string)
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        geo-match-statement: optional(
                          object({
                            country-codes: list(string)
                            forwarded-ip-config: optional(
                              object({
                                fallback-behavior: string
                                header-name: string
                              })
                            )
                          })
                        )
                        ip-set-reference-statement: optional(
                          object({
                            arn: string
                            ip-set-forwarded-ip-config: optional(
                              object({
                                fallback-behavior: string
                                header-name: string
                                position: string
                              })
                            )
                          })
                        )
                        label-match-statement: optional(
                          object({
                            key: string
                            scope: string
                          })
                        )
                        regex-match-statement: optional(
                          object({
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            regex-string: string
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        regex-pattern-set-reference-statement: optional(
                          object({
                            arn: string
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        size-constraint-statement: optional(
                          object({
                            comparison-operator: string
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            size: integer
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        sqli-match-statement: optional(
                          object({
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            sensitivity-level: optional(string)
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        xss-match-statement: optional(
                          object({
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                      })
                    )
                  })
                )
                asn-match-statement: optional(
                  object({
                    asn-list: list(integer)
                    forwarded-ip-config: optional(
                      object({
                        fallback-behavior: string
                        header-name: string
                      })
                    )
                  })
                )
                byte-match-statement: optional(
                  object({
                    field-to-match: object({
                      all-query-arguments: optional(object({}))
                      body: optional(
                        object({
                          oversize-handling: optional(string)
                        })
                      )
                      cookies: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-cookies: optional(list(string))
                            included-cookies: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      header-order: optional(
                        object({
                          oversize-handling: string
                        })
                      )
                      headers: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-headers: optional(list(string))
                            included-headers: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      ja3-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      ja4-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      json-body: optional(
                        object({
                          invalid-fallback-behavior: optional(string)
                          match-pattern: object({
                            all: optional(object({}))
                            included-paths: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      method: optional(object({}))
                      query-string: optional(object({}))
                      single-header: optional(
                        object({
                          name: string
                        })
                      )
                      single-query-argument: optional(
                        object({
                          name: string
                        })
                      )
                      uri-fragment: optional(
                        object({
                          fallback-behavior: optional(string)
                        })
                      )
                      uri-path: optional(object({}))
                    })
                    positional-constraint: string
                    search-string: optional(string)
                    search-string-base64: optional(string)
                    text-transformations: list(
                      object({
                        priority: integer
                        type: string
                      })
                    )
                  })
                )
                geo-match-statement: optional(
                  object({
                    country-codes: list(string)
                    forwarded-ip-config: optional(
                      object({
                        fallback-behavior: string
                        header-name: string
                      })
                    )
                  })
                )
                ip-set-reference-statement: optional(
                  object({
                    arn: string
                    ip-set-forwarded-ip-config: optional(
                      object({
                        fallback-behavior: string
                        header-name: string
                        position: string
                      })
                    )
                  })
                )
                label-match-statement: optional(
                  object({
                    key: string
                    scope: string
                  })
                )
                regex-match-statement: optional(
                  object({
                    field-to-match: object({
                      all-query-arguments: optional(object({}))
                      body: optional(
                        object({
                          oversize-handling: optional(string)
                        })
                      )
                      cookies: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-cookies: optional(list(string))
                            included-cookies: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      header-order: optional(
                        object({
                          oversize-handling: string
                        })
                      )
                      headers: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-headers: optional(list(string))
                            included-headers: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      ja3-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      ja4-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      json-body: optional(
                        object({
                          invalid-fallback-behavior: optional(string)
                          match-pattern: object({
                            all: optional(object({}))
                            included-paths: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      method: optional(object({}))
                      query-string: optional(object({}))
                      single-header: optional(
                        object({
                          name: string
                        })
                      )
                      single-query-argument: optional(
                        object({
                          name: string
                        })
                      )
                      uri-fragment: optional(
                        object({
                          fallback-behavior: optional(string)
                        })
                      )
                      uri-path: optional(object({}))
                    })
                    regex-string: string
                    text-transformations: list(
                      object({
                        priority: integer
                        type: string
                      })
                    )
                  })
                )
                regex-pattern-set-reference-statement: optional(
                  object({
                    arn: string
                    field-to-match: object({
                      all-query-arguments: optional(object({}))
                      body: optional(
                        object({
                          oversize-handling: optional(string)
                        })
                      )
                      cookies: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-cookies: optional(list(string))
                            included-cookies: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      header-order: optional(
                        object({
                          oversize-handling: string
                        })
                      )
                      headers: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-headers: optional(list(string))
                            included-headers: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      ja3-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      ja4-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      json-body: optional(
                        object({
                          invalid-fallback-behavior: optional(string)
                          match-pattern: object({
                            all: optional(object({}))
                            included-paths: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      method: optional(object({}))
                      query-string: optional(object({}))
                      single-header: optional(
                        object({
                          name: string
                        })
                      )
                      single-query-argument: optional(
                        object({
                          name: string
                        })
                      )
                      uri-fragment: optional(
                        object({
                          fallback-behavior: optional(string)
                        })
                      )
                      uri-path: optional(object({}))
                    })
                    text-transformations: list(
                      object({
                        priority: integer
                        type: string
                      })
                    )
                  })
                )
                size-constraint-statement: optional(
                  object({
                    comparison-operator: string
                    field-to-match: object({
                      all-query-arguments: optional(object({}))
                      body: optional(
                        object({
                          oversize-handling: optional(string)
                        })
                      )
                      cookies: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-cookies: optional(list(string))
                            included-cookies: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      header-order: optional(
                        object({
                          oversize-handling: string
                        })
                      )
                      headers: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-headers: optional(list(string))
                            included-headers: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      ja3-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      ja4-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      json-body: optional(
                        object({
                          invalid-fallback-behavior: optional(string)
                          match-pattern: object({
                            all: optional(object({}))
                            included-paths: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      method: optional(object({}))
                      query-string: optional(object({}))
                      single-header: optional(
                        object({
                          name: string
                        })
                      )
                      single-query-argument: optional(
                        object({
                          name: string
                        })
                      )
                      uri-fragment: optional(
                        object({
                          fallback-behavior: optional(string)
                        })
                      )
                      uri-path: optional(object({}))
                    })
                    size: integer
                    text-transformations: list(
                      object({
                        priority: integer
                        type: string
                      })
                    )
                  })
                )
                sqli-match-statement: optional(
                  object({
                    field-to-match: object({
                      all-query-arguments: optional(object({}))
                      body: optional(
                        object({
                          oversize-handling: optional(string)
                        })
                      )
                      cookies: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-cookies: optional(list(string))
                            included-cookies: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      header-order: optional(
                        object({
                          oversize-handling: string
                        })
                      )
                      headers: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-headers: optional(list(string))
                            included-headers: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      ja3-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      ja4-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      json-body: optional(
                        object({
                          invalid-fallback-behavior: optional(string)
                          match-pattern: object({
                            all: optional(object({}))
                            included-paths: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      method: optional(object({}))
                      query-string: optional(object({}))
                      single-header: optional(
                        object({
                          name: string
                        })
                      )
                      single-query-argument: optional(
                        object({
                          name: string
                        })
                      )
                      uri-fragment: optional(
                        object({
                          fallback-behavior: optional(string)
                        })
                      )
                      uri-path: optional(object({}))
                    })
                    sensitivity-level: optional(string)
                    text-transformations: list(
                      object({
                        priority: integer
                        type: string
                      })
                    )
                  })
                )
                xss-match-statement: optional(
                  object({
                    field-to-match: object({
                      all-query-arguments: optional(object({}))
                      body: optional(
                        object({
                          oversize-handling: optional(string)
                        })
                      )
                      cookies: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-cookies: optional(list(string))
                            included-cookies: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      header-order: optional(
                        object({
                          oversize-handling: string
                        })
                      )
                      headers: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-headers: optional(list(string))
                            included-headers: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      ja3-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      ja4-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      json-body: optional(
                        object({
                          invalid-fallback-behavior: optional(string)
                          match-pattern: object({
                            all: optional(object({}))
                            included-paths: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      method: optional(object({}))
                      query-string: optional(object({}))
                      single-header: optional(
                        object({
                          name: string
                        })
                      )
                      single-query-argument: optional(
                        object({
                          name: string
                        })
                      )
                      uri-fragment: optional(
                        object({
                          fallback-behavior: optional(string)
                        })
                      )
                      uri-path: optional(object({}))
                    })
                    text-transformations: list(
                      object({
                        priority: integer
                        type: string
                      })
                    )
                  })
                )
              })
            )
          })
        )
        not-statement: optional(
          object({
            statement: object({
              and-statement: optional(
                object({
                  statements: list(
                    object({
                      and-statement: optional(
                        object({
                          statements: list(
                            object({
                              asn-match-statement: optional(
                                object({
                                  asn-list: list(integer)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              byte-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  positional-constraint: string
                                  search-string: optional(string)
                                  search-string-base64: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              geo-match-statement: optional(
                                object({
                                  country-codes: list(string)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              ip-set-reference-statement: optional(
                                object({
                                  arn: string
                                  ip-set-forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                      position: string
                                    })
                                  )
                                })
                              )
                              label-match-statement: optional(
                                object({
                                  key: string
                                  scope: string
                                })
                              )
                              regex-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  regex-string: string
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              regex-pattern-set-reference-statement: optional(
                                object({
                                  arn: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              size-constraint-statement: optional(
                                object({
                                  comparison-operator: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  size: integer
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              sqli-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  sensitivity-level: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              xss-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                            })
                          )
                        })
                      )
                      not-statement: optional(
                        object({
                          statement: object({
                            asn-match-statement: optional(
                              object({
                                asn-list: list(integer)
                                forwarded-ip-config: optional(
                                  object({
                                    fallback-behavior: string
                                    header-name: string
                                  })
                                )
                              })
                            )
                            byte-match-statement: optional(
                              object({
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                positional-constraint: string
                                search-string: optional(string)
                                search-string-base64: optional(string)
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            geo-match-statement: optional(
                              object({
                                country-codes: list(string)
                                forwarded-ip-config: optional(
                                  object({
                                    fallback-behavior: string
                                    header-name: string
                                  })
                                )
                              })
                            )
                            ip-set-reference-statement: optional(
                              object({
                                arn: string
                                ip-set-forwarded-ip-config: optional(
                                  object({
                                    fallback-behavior: string
                                    header-name: string
                                    position: string
                                  })
                                )
                              })
                            )
                            label-match-statement: optional(
                              object({
                                key: string
                                scope: string
                              })
                            )
                            regex-match-statement: optional(
                              object({
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                regex-string: string
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            regex-pattern-set-reference-statement: optional(
                              object({
                                arn: string
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            size-constraint-statement: optional(
                              object({
                                comparison-operator: string
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                size: integer
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            sqli-match-statement: optional(
                              object({
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                sensitivity-level: optional(string)
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            xss-match-statement: optional(
                              object({
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                          })
                        })
                      )
                      or-statement: optional(
                        object({
                          statements: list(
                            object({
                              asn-match-statement: optional(
                                object({
                                  asn-list: list(integer)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              byte-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  positional-constraint: string
                                  search-string: optional(string)
                                  search-string-base64: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              geo-match-statement: optional(
                                object({
                                  country-codes: list(string)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              ip-set-reference-statement: optional(
                                object({
                                  arn: string
                                  ip-set-forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                      position: string
                                    })
                                  )
                                })
                              )
                              label-match-statement: optional(
                                object({
                                  key: string
                                  scope: string
                                })
                              )
                              regex-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  regex-string: string
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              regex-pattern-set-reference-statement: optional(
                                object({
                                  arn: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              size-constraint-statement: optional(
                                object({
                                  comparison-operator: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  size: integer
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              sqli-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  sensitivity-level: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              xss-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                            })
                          )
                        })
                      )
                      asn-match-statement: optional(
                        object({
                          asn-list: list(integer)
                          forwarded-ip-config: optional(
                            object({
                              fallback-behavior: string
                              header-name: string
                            })
                          )
                        })
                      )
                      byte-match-statement: optional(
                        object({
                          field-to-match: object({
                            all-query-arguments: optional(object({}))
                            body: optional(
                              object({
                                oversize-handling: optional(string)
                              })
                            )
                            cookies: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-cookies: optional(list(string))
                                  included-cookies: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            header-order: optional(
                              object({
                                oversize-handling: string
                              })
                            )
                            headers: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-headers: optional(list(string))
                                  included-headers: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            ja3-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            ja4-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            json-body: optional(
                              object({
                                invalid-fallback-behavior: optional(string)
                                match-pattern: object({
                                  all: optional(object({}))
                                  included-paths: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            method: optional(object({}))
                            query-string: optional(object({}))
                            single-header: optional(
                              object({
                                name: string
                              })
                            )
                            single-query-argument: optional(
                              object({
                                name: string
                              })
                            )
                            uri-fragment: optional(
                              object({
                                fallback-behavior: optional(string)
                              })
                            )
                            uri-path: optional(object({}))
                          })
                          positional-constraint: string
                          search-string: optional(string)
                          search-string-base64: optional(string)
                          text-transformations: list(
                            object({
                              priority: integer
                              type: string
                            })
                          )
                        })
                      )
                      geo-match-statement: optional(
                        object({
                          country-codes: list(string)
                          forwarded-ip-config: optional(
                            object({
                              fallback-behavior: string
                              header-name: string
                            })
                          )
                        })
                      )
                      ip-set-reference-statement: optional(
                        object({
                          arn: string
                          ip-set-forwarded-ip-config: optional(
                            object({
                              fallback-behavior: string
                              header-name: string
                              position: string
                            })
                          )
                        })
                      )
                      label-match-statement: optional(
                        object({
                          key: string
                          scope: string
                        })
                      )
                      regex-match-statement: optional(
                        object({
                          field-to-match: object({
                            all-query-arguments: optional(object({}))
                            body: optional(
                              object({
                                oversize-handling: optional(string)
                              })
                            )
                            cookies: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-cookies: optional(list(string))
                                  included-cookies: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            header-order: optional(
                              object({
                                oversize-handling: string
                              })
                            )
                            headers: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-headers: optional(list(string))
                                  included-headers: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            ja3-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            ja4-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            json-body: optional(
                              object({
                                invalid-fallback-behavior: optional(string)
                                match-pattern: object({
                                  all: optional(object({}))
                                  included-paths: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            method: optional(object({}))
                            query-string: optional(object({}))
                            single-header: optional(
                              object({
                                name: string
                              })
                            )
                            single-query-argument: optional(
                              object({
                                name: string
                              })
                            )
                            uri-fragment: optional(
                              object({
                                fallback-behavior: optional(string)
                              })
                            )
                            uri-path: optional(object({}))
                          })
                          regex-string: string
                          text-transformations: list(
                            object({
                              priority: integer
                              type: string
                            })
                          )
                        })
                      )
                      regex-pattern-set-reference-statement: optional(
                        object({
                          arn: string
                          field-to-match: object({
                            all-query-arguments: optional(object({}))
                            body: optional(
                              object({
                                oversize-handling: optional(string)
                              })
                            )
                            cookies: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-cookies: optional(list(string))
                                  included-cookies: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            header-order: optional(
                              object({
                                oversize-handling: string
                              })
                            )
                            headers: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-headers: optional(list(string))
                                  included-headers: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            ja3-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            ja4-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            json-body: optional(
                              object({
                                invalid-fallback-behavior: optional(string)
                                match-pattern: object({
                                  all: optional(object({}))
                                  included-paths: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            method: optional(object({}))
                            query-string: optional(object({}))
                            single-header: optional(
                              object({
                                name: string
                              })
                            )
                            single-query-argument: optional(
                              object({
                                name: string
                              })
                            )
                            uri-fragment: optional(
                              object({
                                fallback-behavior: optional(string)
                              })
                            )
                            uri-path: optional(object({}))
                          })
                          text-transformations: list(
                            object({
                              priority: integer
                              type: string
                            })
                          )
                        })
                      )
                      size-constraint-statement: optional(
                        object({
                          comparison-operator: string
                          field-to-match: object({
                            all-query-arguments: optional(object({}))
                            body: optional(
                              object({
                                oversize-handling: optional(string)
                              })
                            )
                            cookies: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-cookies: optional(list(string))
                                  included-cookies: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            header-order: optional(
                              object({
                                oversize-handling: string
                              })
                            )
                            headers: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-headers: optional(list(string))
                                  included-headers: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            ja3-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            ja4-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            json-body: optional(
                              object({
                                invalid-fallback-behavior: optional(string)
                                match-pattern: object({
                                  all: optional(object({}))
                                  included-paths: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            method: optional(object({}))
                            query-string: optional(object({}))
                            single-header: optional(
                              object({
                                name: string
                              })
                            )
                            single-query-argument: optional(
                              object({
                                name: string
                              })
                            )
                            uri-fragment: optional(
                              object({
                                fallback-behavior: optional(string)
                              })
                            )
                            uri-path: optional(object({}))
                          })
                          size: integer
                          text-transformations: list(
                            object({
                              priority: integer
                              type: string
                            })
                          )
                        })
                      )
                      sqli-match-statement: optional(
                        object({
                          field-to-match: object({
                            all-query-arguments: optional(object({}))
                            body: optional(
                              object({
                                oversize-handling: optional(string)
                              })
                            )
                            cookies: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-cookies: optional(list(string))
                                  included-cookies: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            header-order: optional(
                              object({
                                oversize-handling: string
                              })
                            )
                            headers: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-headers: optional(list(string))
                                  included-headers: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            ja3-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            ja4-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            json-body: optional(
                              object({
                                invalid-fallback-behavior: optional(string)
                                match-pattern: object({
                                  all: optional(object({}))
                                  included-paths: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            method: optional(object({}))
                            query-string: optional(object({}))
                            single-header: optional(
                              object({
                                name: string
                              })
                            )
                            single-query-argument: optional(
                              object({
                                name: string
                              })
                            )
                            uri-fragment: optional(
                              object({
                                fallback-behavior: optional(string)
                              })
                            )
                            uri-path: optional(object({}))
                          })
                          sensitivity-level: optional(string)
                          text-transformations: list(
                            object({
                              priority: integer
                              type: string
                            })
                          )
                        })
                      )
                      xss-match-statement: optional(
                        object({
                          field-to-match: object({
                            all-query-arguments: optional(object({}))
                            body: optional(
                              object({
                                oversize-handling: optional(string)
                              })
                            )
                            cookies: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-cookies: optional(list(string))
                                  included-cookies: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            header-order: optional(
                              object({
                                oversize-handling: string
                              })
                            )
                            headers: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-headers: optional(list(string))
                                  included-headers: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            ja3-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            ja4-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            json-body: optional(
                              object({
                                invalid-fallback-behavior: optional(string)
                                match-pattern: object({
                                  all: optional(object({}))
                                  included-paths: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            method: optional(object({}))
                            query-string: optional(object({}))
                            single-header: optional(
                              object({
                                name: string
                              })
                            )
                            single-query-argument: optional(
                              object({
                                name: string
                              })
                            )
                            uri-fragment: optional(
                              object({
                                fallback-behavior: optional(string)
                              })
                            )
                            uri-path: optional(object({}))
                          })
                          text-transformations: list(
                            object({
                              priority: integer
                              type: string
                            })
                          )
                        })
                      )
                    })
                  )
                })
              )
              not-statement: optional(
                object({
                  statement: object({
                    and-statement: optional(
                      object({
                        statements: list(
                          object({
                            asn-match-statement: optional(
                              object({
                                asn-list: list(integer)
                                forwarded-ip-config: optional(
                                  object({
                                    fallback-behavior: string
                                    header-name: string
                                  })
                                )
                              })
                            )
                            byte-match-statement: optional(
                              object({
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                positional-constraint: string
                                search-string: optional(string)
                                search-string-base64: optional(string)
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            geo-match-statement: optional(
                              object({
                                country-codes: list(string)
                                forwarded-ip-config: optional(
                                  object({
                                    fallback-behavior: string
                                    header-name: string
                                  })
                                )
                              })
                            )
                            ip-set-reference-statement: optional(
                              object({
                                arn: string
                                ip-set-forwarded-ip-config: optional(
                                  object({
                                    fallback-behavior: string
                                    header-name: string
                                    position: string
                                  })
                                )
                              })
                            )
                            label-match-statement: optional(
                              object({
                                key: string
                                scope: string
                              })
                            )
                            regex-match-statement: optional(
                              object({
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                regex-string: string
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            regex-pattern-set-reference-statement: optional(
                              object({
                                arn: string
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            size-constraint-statement: optional(
                              object({
                                comparison-operator: string
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                size: integer
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            sqli-match-statement: optional(
                              object({
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                sensitivity-level: optional(string)
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            xss-match-statement: optional(
                              object({
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                          })
                        )
                      })
                    )
                    not-statement: optional(
                      object({
                        statement: object({
                          asn-match-statement: optional(
                            object({
                              asn-list: list(integer)
                              forwarded-ip-config: optional(
                                object({
                                  fallback-behavior: string
                                  header-name: string
                                })
                              )
                            })
                          )
                          byte-match-statement: optional(
                            object({
                              field-to-match: object({
                                all-query-arguments: optional(object({}))
                                body: optional(
                                  object({
                                    oversize-handling: optional(string)
                                  })
                                )
                                cookies: optional(
                                  object({
                                    match-pattern: object({
                                      all: optional(object({}))
                                      excluded-cookies: optional(list(string))
                                      included-cookies: optional(list(string))
                                    })
                                    match-scope: string
                                    oversize-handling: string
                                  })
                                )
                                header-order: optional(
                                  object({
                                    oversize-handling: string
                                  })
                                )
                                headers: optional(
                                  object({
                                    match-pattern: object({
                                      all: optional(object({}))
                                      excluded-headers: optional(list(string))
                                      included-headers: optional(list(string))
                                    })
                                    match-scope: string
                                    oversize-handling: string
                                  })
                                )
                                ja3-fingerprint: optional(
                                  object({
                                    fallback-behavior: string
                                  })
                                )
                                ja4-fingerprint: optional(
                                  object({
                                    fallback-behavior: string
                                  })
                                )
                                json-body: optional(
                                  object({
                                    invalid-fallback-behavior: optional(string)
                                    match-pattern: object({
                                      all: optional(object({}))
                                      included-paths: optional(list(string))
                                    })
                                    match-scope: string
                                    oversize-handling: string
                                  })
                                )
                                method: optional(object({}))
                                query-string: optional(object({}))
                                single-header: optional(
                                  object({
                                    name: string
                                  })
                                )
                                single-query-argument: optional(
                                  object({
                                    name: string
                                  })
                                )
                                uri-fragment: optional(
                                  object({
                                    fallback-behavior: optional(string)
                                  })
                                )
                                uri-path: optional(object({}))
                              })
                              positional-constraint: string
                              search-string: optional(string)
                              search-string-base64: optional(string)
                              text-transformations: list(
                                object({
                                  priority: integer
                                  type: string
                                })
                              )
                            })
                          )
                          geo-match-statement: optional(
                            object({
                              country-codes: list(string)
                              forwarded-ip-config: optional(
                                object({
                                  fallback-behavior: string
                                  header-name: string
                                })
                              )
                            })
                          )
                          ip-set-reference-statement: optional(
                            object({
                              arn: string
                              ip-set-forwarded-ip-config: optional(
                                object({
                                  fallback-behavior: string
                                  header-name: string
                                  position: string
                                })
                              )
                            })
                          )
                          label-match-statement: optional(
                            object({
                              key: string
                              scope: string
                            })
                          )
                          regex-match-statement: optional(
                            object({
                              field-to-match: object({
                                all-query-arguments: optional(object({}))
                                body: optional(
                                  object({
                                    oversize-handling: optional(string)
                                  })
                                )
                                cookies: optional(
                                  object({
                                    match-pattern: object({
                                      all: optional(object({}))
                                      excluded-cookies: optional(list(string))
                                      included-cookies: optional(list(string))
                                    })
                                    match-scope: string
                                    oversize-handling: string
                                  })
                                )
                                header-order: optional(
                                  object({
                                    oversize-handling: string
                                  })
                                )
                                headers: optional(
                                  object({
                                    match-pattern: object({
                                      all: optional(object({}))
                                      excluded-headers: optional(list(string))
                                      included-headers: optional(list(string))
                                    })
                                    match-scope: string
                                    oversize-handling: string
                                  })
                                )
                                ja3-fingerprint: optional(
                                  object({
                                    fallback-behavior: string
                                  })
                                )
                                ja4-fingerprint: optional(
                                  object({
                                    fallback-behavior: string
                                  })
                                )
                                json-body: optional(
                                  object({
                                    invalid-fallback-behavior: optional(string)
                                    match-pattern: object({
                                      all: optional(object({}))
                                      included-paths: optional(list(string))
                                    })
                                    match-scope: string
                                    oversize-handling: string
                                  })
                                )
                                method: optional(object({}))
                                query-string: optional(object({}))
                                single-header: optional(
                                  object({
                                    name: string
                                  })
                                )
                                single-query-argument: optional(
                                  object({
                                    name: string
                                  })
                                )
                                uri-fragment: optional(
                                  object({
                                    fallback-behavior: optional(string)
                                  })
                                )
                                uri-path: optional(object({}))
                              })
                              regex-string: string
                              text-transformations: list(
                                object({
                                  priority: integer
                                  type: string
                                })
                              )
                            })
                          )
                          regex-pattern-set-reference-statement: optional(
                            object({
                              arn: string
                              field-to-match: object({
                                all-query-arguments: optional(object({}))
                                body: optional(
                                  object({
                                    oversize-handling: optional(string)
                                  })
                                )
                                cookies: optional(
                                  object({
                                    match-pattern: object({
                                      all: optional(object({}))
                                      excluded-cookies: optional(list(string))
                                      included-cookies: optional(list(string))
                                    })
                                    match-scope: string
                                    oversize-handling: string
                                  })
                                )
                                header-order: optional(
                                  object({
                                    oversize-handling: string
                                  })
                                )
                                headers: optional(
                                  object({
                                    match-pattern: object({
                                      all: optional(object({}))
                                      excluded-headers: optional(list(string))
                                      included-headers: optional(list(string))
                                    })
                                    match-scope: string
                                    oversize-handling: string
                                  })
                                )
                                ja3-fingerprint: optional(
                                  object({
                                    fallback-behavior: string
                                  })
                                )
                                ja4-fingerprint: optional(
                                  object({
                                    fallback-behavior: string
                                  })
                                )
                                json-body: optional(
                                  object({
                                    invalid-fallback-behavior: optional(string)
                                    match-pattern: object({
                                      all: optional(object({}))
                                      included-paths: optional(list(string))
                                    })
                                    match-scope: string
                                    oversize-handling: string
                                  })
                                )
                                method: optional(object({}))
                                query-string: optional(object({}))
                                single-header: optional(
                                  object({
                                    name: string
                                  })
                                )
                                single-query-argument: optional(
                                  object({
                                    name: string
                                  })
                                )
                                uri-fragment: optional(
                                  object({
                                    fallback-behavior: optional(string)
                                  })
                                )
                                uri-path: optional(object({}))
                              })
                              text-transformations: list(
                                object({
                                  priority: integer
                                  type: string
                                })
                              )
                            })
                          )
                          size-constraint-statement: optional(
                            object({
                              comparison-operator: string
                              field-to-match: object({
                                all-query-arguments: optional(object({}))
                                body: optional(
                                  object({
                                    oversize-handling: optional(string)
                                  })
                                )
                                cookies: optional(
                                  object({
                                    match-pattern: object({
                                      all: optional(object({}))
                                      excluded-cookies: optional(list(string))
                                      included-cookies: optional(list(string))
                                    })
                                    match-scope: string
                                    oversize-handling: string
                                  })
                                )
                                header-order: optional(
                                  object({
                                    oversize-handling: string
                                  })
                                )
                                headers: optional(
                                  object({
                                    match-pattern: object({
                                      all: optional(object({}))
                                      excluded-headers: optional(list(string))
                                      included-headers: optional(list(string))
                                    })
                                    match-scope: string
                                    oversize-handling: string
                                  })
                                )
                                ja3-fingerprint: optional(
                                  object({
                                    fallback-behavior: string
                                  })
                                )
                                ja4-fingerprint: optional(
                                  object({
                                    fallback-behavior: string
                                  })
                                )
                                json-body: optional(
                                  object({
                                    invalid-fallback-behavior: optional(string)
                                    match-pattern: object({
                                      all: optional(object({}))
                                      included-paths: optional(list(string))
                                    })
                                    match-scope: string
                                    oversize-handling: string
                                  })
                                )
                                method: optional(object({}))
                                query-string: optional(object({}))
                                single-header: optional(
                                  object({
                                    name: string
                                  })
                                )
                                single-query-argument: optional(
                                  object({
                                    name: string
                                  })
                                )
                                uri-fragment: optional(
                                  object({
                                    fallback-behavior: optional(string)
                                  })
                                )
                                uri-path: optional(object({}))
                              })
                              size: integer
                              text-transformations: list(
                                object({
                                  priority: integer
                                  type: string
                                })
                              )
                            })
                          )
                          sqli-match-statement: optional(
                            object({
                              field-to-match: object({
                                all-query-arguments: optional(object({}))
                                body: optional(
                                  object({
                                    oversize-handling: optional(string)
                                  })
                                )
                                cookies: optional(
                                  object({
                                    match-pattern: object({
                                      all: optional(object({}))
                                      excluded-cookies: optional(list(string))
                                      included-cookies: optional(list(string))
                                    })
                                    match-scope: string
                                    oversize-handling: string
                                  })
                                )
                                header-order: optional(
                                  object({
                                    oversize-handling: string
                                  })
                                )
                                headers: optional(
                                  object({
                                    match-pattern: object({
                                      all: optional(object({}))
                                      excluded-headers: optional(list(string))
                                      included-headers: optional(list(string))
                                    })
                                    match-scope: string
                                    oversize-handling: string
                                  })
                                )
                                ja3-fingerprint: optional(
                                  object({
                                    fallback-behavior: string
                                  })
                                )
                                ja4-fingerprint: optional(
                                  object({
                                    fallback-behavior: string
                                  })
                                )
                                json-body: optional(
                                  object({
                                    invalid-fallback-behavior: optional(string)
                                    match-pattern: object({
                                      all: optional(object({}))
                                      included-paths: optional(list(string))
                                    })
                                    match-scope: string
                                    oversize-handling: string
                                  })
                                )
                                method: optional(object({}))
                                query-string: optional(object({}))
                                single-header: optional(
                                  object({
                                    name: string
                                  })
                                )
                                single-query-argument: optional(
                                  object({
                                    name: string
                                  })
                                )
                                uri-fragment: optional(
                                  object({
                                    fallback-behavior: optional(string)
                                  })
                                )
                                uri-path: optional(object({}))
                              })
                              sensitivity-level: optional(string)
                              text-transformations: list(
                                object({
                                  priority: integer
                                  type: string
                                })
                              )
                            })
                          )
                          xss-match-statement: optional(
                            object({
                              field-to-match: object({
                                all-query-arguments: optional(object({}))
                                body: optional(
                                  object({
                                    oversize-handling: optional(string)
                                  })
                                )
                                cookies: optional(
                                  object({
                                    match-pattern: object({
                                      all: optional(object({}))
                                      excluded-cookies: optional(list(string))
                                      included-cookies: optional(list(string))
                                    })
                                    match-scope: string
                                    oversize-handling: string
                                  })
                                )
                                header-order: optional(
                                  object({
                                    oversize-handling: string
                                  })
                                )
                                headers: optional(
                                  object({
                                    match-pattern: object({
                                      all: optional(object({}))
                                      excluded-headers: optional(list(string))
                                      included-headers: optional(list(string))
                                    })
                                    match-scope: string
                                    oversize-handling: string
                                  })
                                )
                                ja3-fingerprint: optional(
                                  object({
                                    fallback-behavior: string
                                  })
                                )
                                ja4-fingerprint: optional(
                                  object({
                                    fallback-behavior: string
                                  })
                                )
                                json-body: optional(
                                  object({
                                    invalid-fallback-behavior: optional(string)
                                    match-pattern: object({
                                      all: optional(object({}))
                                      included-paths: optional(list(string))
                                    })
                                    match-scope: string
                                    oversize-handling: string
                                  })
                                )
                                method: optional(object({}))
                                query-string: optional(object({}))
                                single-header: optional(
                                  object({
                                    name: string
                                  })
                                )
                                single-query-argument: optional(
                                  object({
                                    name: string
                                  })
                                )
                                uri-fragment: optional(
                                  object({
                                    fallback-behavior: optional(string)
                                  })
                                )
                                uri-path: optional(object({}))
                              })
                              text-transformations: list(
                                object({
                                  priority: integer
                                  type: string
                                })
                              )
                            })
                          )
                        })
                      })
                    )
                    or-statement: optional(
                      object({
                        statements: list(
                          object({
                            asn-match-statement: optional(
                              object({
                                asn-list: list(integer)
                                forwarded-ip-config: optional(
                                  object({
                                    fallback-behavior: string
                                    header-name: string
                                  })
                                )
                              })
                            )
                            byte-match-statement: optional(
                              object({
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                positional-constraint: string
                                search-string: optional(string)
                                search-string-base64: optional(string)
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            geo-match-statement: optional(
                              object({
                                country-codes: list(string)
                                forwarded-ip-config: optional(
                                  object({
                                    fallback-behavior: string
                                    header-name: string
                                  })
                                )
                              })
                            )
                            ip-set-reference-statement: optional(
                              object({
                                arn: string
                                ip-set-forwarded-ip-config: optional(
                                  object({
                                    fallback-behavior: string
                                    header-name: string
                                    position: string
                                  })
                                )
                              })
                            )
                            label-match-statement: optional(
                              object({
                                key: string
                                scope: string
                              })
                            )
                            regex-match-statement: optional(
                              object({
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                regex-string: string
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            regex-pattern-set-reference-statement: optional(
                              object({
                                arn: string
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            size-constraint-statement: optional(
                              object({
                                comparison-operator: string
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                size: integer
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            sqli-match-statement: optional(
                              object({
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                sensitivity-level: optional(string)
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            xss-match-statement: optional(
                              object({
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                          })
                        )
                      })
                    )
                    asn-match-statement: optional(
                      object({
                        asn-list: list(integer)
                        forwarded-ip-config: optional(
                          object({
                            fallback-behavior: string
                            header-name: string
                          })
                        )
                      })
                    )
                    byte-match-statement: optional(
                      object({
                        field-to-match: object({
                          all-query-arguments: optional(object({}))
                          body: optional(
                            object({
                              oversize-handling: optional(string)
                            })
                          )
                          cookies: optional(
                            object({
                              match-pattern: object({
                                all: optional(object({}))
                                excluded-cookies: optional(list(string))
                                included-cookies: optional(list(string))
                              })
                              match-scope: string
                              oversize-handling: string
                            })
                          )
                          header-order: optional(
                            object({
                              oversize-handling: string
                            })
                          )
                          headers: optional(
                            object({
                              match-pattern: object({
                                all: optional(object({}))
                                excluded-headers: optional(list(string))
                                included-headers: optional(list(string))
                              })
                              match-scope: string
                              oversize-handling: string
                            })
                          )
                          ja3-fingerprint: optional(
                            object({
                              fallback-behavior: string
                            })
                          )
                          ja4-fingerprint: optional(
                            object({
                              fallback-behavior: string
                            })
                          )
                          json-body: optional(
                            object({
                              invalid-fallback-behavior: optional(string)
                              match-pattern: object({
                                all: optional(object({}))
                                included-paths: optional(list(string))
                              })
                              match-scope: string
                              oversize-handling: string
                            })
                          )
                          method: optional(object({}))
                          query-string: optional(object({}))
                          single-header: optional(
                            object({
                              name: string
                            })
                          )
                          single-query-argument: optional(
                            object({
                              name: string
                            })
                          )
                          uri-fragment: optional(
                            object({
                              fallback-behavior: optional(string)
                            })
                          )
                          uri-path: optional(object({}))
                        })
                        positional-constraint: string
                        search-string: optional(string)
                        search-string-base64: optional(string)
                        text-transformations: list(
                          object({
                            priority: integer
                            type: string
                          })
                        )
                      })
                    )
                    geo-match-statement: optional(
                      object({
                        country-codes: list(string)
                        forwarded-ip-config: optional(
                          object({
                            fallback-behavior: string
                            header-name: string
                          })
                        )
                      })
                    )
                    ip-set-reference-statement: optional(
                      object({
                        arn: string
                        ip-set-forwarded-ip-config: optional(
                          object({
                            fallback-behavior: string
                            header-name: string
                            position: string
                          })
                        )
                      })
                    )
                    label-match-statement: optional(
                      object({
                        key: string
                        scope: string
                      })
                    )
                    regex-match-statement: optional(
                      object({
                        field-to-match: object({
                          all-query-arguments: optional(object({}))
                          body: optional(
                            object({
                              oversize-handling: optional(string)
                            })
                          )
                          cookies: optional(
                            object({
                              match-pattern: object({
                                all: optional(object({}))
                                excluded-cookies: optional(list(string))
                                included-cookies: optional(list(string))
                              })
                              match-scope: string
                              oversize-handling: string
                            })
                          )
                          header-order: optional(
                            object({
                              oversize-handling: string
                            })
                          )
                          headers: optional(
                            object({
                              match-pattern: object({
                                all: optional(object({}))
                                excluded-headers: optional(list(string))
                                included-headers: optional(list(string))
                              })
                              match-scope: string
                              oversize-handling: string
                            })
                          )
                          ja3-fingerprint: optional(
                            object({
                              fallback-behavior: string
                            })
                          )
                          ja4-fingerprint: optional(
                            object({
                              fallback-behavior: string
                            })
                          )
                          json-body: optional(
                            object({
                              invalid-fallback-behavior: optional(string)
                              match-pattern: object({
                                all: optional(object({}))
                                included-paths: optional(list(string))
                              })
                              match-scope: string
                              oversize-handling: string
                            })
                          )
                          method: optional(object({}))
                          query-string: optional(object({}))
                          single-header: optional(
                            object({
                              name: string
                            })
                          )
                          single-query-argument: optional(
                            object({
                              name: string
                            })
                          )
                          uri-fragment: optional(
                            object({
                              fallback-behavior: optional(string)
                            })
                          )
                          uri-path: optional(object({}))
                        })
                        regex-string: string
                        text-transformations: list(
                          object({
                            priority: integer
                            type: string
                          })
                        )
                      })
                    )
                    regex-pattern-set-reference-statement: optional(
                      object({
                        arn: string
                        field-to-match: object({
                          all-query-arguments: optional(object({}))
                          body: optional(
                            object({
                              oversize-handling: optional(string)
                            })
                          )
                          cookies: optional(
                            object({
                              match-pattern: object({
                                all: optional(object({}))
                                excluded-cookies: optional(list(string))
                                included-cookies: optional(list(string))
                              })
                              match-scope: string
                              oversize-handling: string
                            })
                          )
                          header-order: optional(
                            object({
                              oversize-handling: string
                            })
                          )
                          headers: optional(
                            object({
                              match-pattern: object({
                                all: optional(object({}))
                                excluded-headers: optional(list(string))
                                included-headers: optional(list(string))
                              })
                              match-scope: string
                              oversize-handling: string
                            })
                          )
                          ja3-fingerprint: optional(
                            object({
                              fallback-behavior: string
                            })
                          )
                          ja4-fingerprint: optional(
                            object({
                              fallback-behavior: string
                            })
                          )
                          json-body: optional(
                            object({
                              invalid-fallback-behavior: optional(string)
                              match-pattern: object({
                                all: optional(object({}))
                                included-paths: optional(list(string))
                              })
                              match-scope: string
                              oversize-handling: string
                            })
                          )
                          method: optional(object({}))
                          query-string: optional(object({}))
                          single-header: optional(
                            object({
                              name: string
                            })
                          )
                          single-query-argument: optional(
                            object({
                              name: string
                            })
                          )
                          uri-fragment: optional(
                            object({
                              fallback-behavior: optional(string)
                            })
                          )
                          uri-path: optional(object({}))
                        })
                        text-transformations: list(
                          object({
                            priority: integer
                            type: string
                          })
                        )
                      })
                    )
                    size-constraint-statement: optional(
                      object({
                        comparison-operator: string
                        field-to-match: object({
                          all-query-arguments: optional(object({}))
                          body: optional(
                            object({
                              oversize-handling: optional(string)
                            })
                          )
                          cookies: optional(
                            object({
                              match-pattern: object({
                                all: optional(object({}))
                                excluded-cookies: optional(list(string))
                                included-cookies: optional(list(string))
                              })
                              match-scope: string
                              oversize-handling: string
                            })
                          )
                          header-order: optional(
                            object({
                              oversize-handling: string
                            })
                          )
                          headers: optional(
                            object({
                              match-pattern: object({
                                all: optional(object({}))
                                excluded-headers: optional(list(string))
                                included-headers: optional(list(string))
                              })
                              match-scope: string
                              oversize-handling: string
                            })
                          )
                          ja3-fingerprint: optional(
                            object({
                              fallback-behavior: string
                            })
                          )
                          ja4-fingerprint: optional(
                            object({
                              fallback-behavior: string
                            })
                          )
                          json-body: optional(
                            object({
                              invalid-fallback-behavior: optional(string)
                              match-pattern: object({
                                all: optional(object({}))
                                included-paths: optional(list(string))
                              })
                              match-scope: string
                              oversize-handling: string
                            })
                          )
                          method: optional(object({}))
                          query-string: optional(object({}))
                          single-header: optional(
                            object({
                              name: string
                            })
                          )
                          single-query-argument: optional(
                            object({
                              name: string
                            })
                          )
                          uri-fragment: optional(
                            object({
                              fallback-behavior: optional(string)
                            })
                          )
                          uri-path: optional(object({}))
                        })
                        size: integer
                        text-transformations: list(
                          object({
                            priority: integer
                            type: string
                          })
                        )
                      })
                    )
                    sqli-match-statement: optional(
                      object({
                        field-to-match: object({
                          all-query-arguments: optional(object({}))
                          body: optional(
                            object({
                              oversize-handling: optional(string)
                            })
                          )
                          cookies: optional(
                            object({
                              match-pattern: object({
                                all: optional(object({}))
                                excluded-cookies: optional(list(string))
                                included-cookies: optional(list(string))
                              })
                              match-scope: string
                              oversize-handling: string
                            })
                          )
                          header-order: optional(
                            object({
                              oversize-handling: string
                            })
                          )
                          headers: optional(
                            object({
                              match-pattern: object({
                                all: optional(object({}))
                                excluded-headers: optional(list(string))
                                included-headers: optional(list(string))
                              })
                              match-scope: string
                              oversize-handling: string
                            })
                          )
                          ja3-fingerprint: optional(
                            object({
                              fallback-behavior: string
                            })
                          )
                          ja4-fingerprint: optional(
                            object({
                              fallback-behavior: string
                            })
                          )
                          json-body: optional(
                            object({
                              invalid-fallback-behavior: optional(string)
                              match-pattern: object({
                                all: optional(object({}))
                                included-paths: optional(list(string))
                              })
                              match-scope: string
                              oversize-handling: string
                            })
                          )
                          method: optional(object({}))
                          query-string: optional(object({}))
                          single-header: optional(
                            object({
                              name: string
                            })
                          )
                          single-query-argument: optional(
                            object({
                              name: string
                            })
                          )
                          uri-fragment: optional(
                            object({
                              fallback-behavior: optional(string)
                            })
                          )
                          uri-path: optional(object({}))
                        })
                        sensitivity-level: optional(string)
                        text-transformations: list(
                          object({
                            priority: integer
                            type: string
                          })
                        )
                      })
                    )
                    xss-match-statement: optional(
                      object({
                        field-to-match: object({
                          all-query-arguments: optional(object({}))
                          body: optional(
                            object({
                              oversize-handling: optional(string)
                            })
                          )
                          cookies: optional(
                            object({
                              match-pattern: object({
                                all: optional(object({}))
                                excluded-cookies: optional(list(string))
                                included-cookies: optional(list(string))
                              })
                              match-scope: string
                              oversize-handling: string
                            })
                          )
                          header-order: optional(
                            object({
                              oversize-handling: string
                            })
                          )
                          headers: optional(
                            object({
                              match-pattern: object({
                                all: optional(object({}))
                                excluded-headers: optional(list(string))
                                included-headers: optional(list(string))
                              })
                              match-scope: string
                              oversize-handling: string
                            })
                          )
                          ja3-fingerprint: optional(
                            object({
                              fallback-behavior: string
                            })
                          )
                          ja4-fingerprint: optional(
                            object({
                              fallback-behavior: string
                            })
                          )
                          json-body: optional(
                            object({
                              invalid-fallback-behavior: optional(string)
                              match-pattern: object({
                                all: optional(object({}))
                                included-paths: optional(list(string))
                              })
                              match-scope: string
                              oversize-handling: string
                            })
                          )
                          method: optional(object({}))
                          query-string: optional(object({}))
                          single-header: optional(
                            object({
                              name: string
                            })
                          )
                          single-query-argument: optional(
                            object({
                              name: string
                            })
                          )
                          uri-fragment: optional(
                            object({
                              fallback-behavior: optional(string)
                            })
                          )
                          uri-path: optional(object({}))
                        })
                        text-transformations: list(
                          object({
                            priority: integer
                            type: string
                          })
                        )
                      })
                    )
                  })
                })
              )
              or-statement: optional(
                object({
                  statements: list(
                    object({
                      and-statement: optional(
                        object({
                          statements: list(
                            object({
                              asn-match-statement: optional(
                                object({
                                  asn-list: list(integer)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              byte-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  positional-constraint: string
                                  search-string: optional(string)
                                  search-string-base64: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              geo-match-statement: optional(
                                object({
                                  country-codes: list(string)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              ip-set-reference-statement: optional(
                                object({
                                  arn: string
                                  ip-set-forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                      position: string
                                    })
                                  )
                                })
                              )
                              label-match-statement: optional(
                                object({
                                  key: string
                                  scope: string
                                })
                              )
                              regex-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  regex-string: string
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              regex-pattern-set-reference-statement: optional(
                                object({
                                  arn: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              size-constraint-statement: optional(
                                object({
                                  comparison-operator: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  size: integer
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              sqli-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  sensitivity-level: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              xss-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                            })
                          )
                        })
                      )
                      not-statement: optional(
                        object({
                          statement: object({
                            asn-match-statement: optional(
                              object({
                                asn-list: list(integer)
                                forwarded-ip-config: optional(
                                  object({
                                    fallback-behavior: string
                                    header-name: string
                                  })
                                )
                              })
                            )
                            byte-match-statement: optional(
                              object({
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                positional-constraint: string
                                search-string: optional(string)
                                search-string-base64: optional(string)
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            geo-match-statement: optional(
                              object({
                                country-codes: list(string)
                                forwarded-ip-config: optional(
                                  object({
                                    fallback-behavior: string
                                    header-name: string
                                  })
                                )
                              })
                            )
                            ip-set-reference-statement: optional(
                              object({
                                arn: string
                                ip-set-forwarded-ip-config: optional(
                                  object({
                                    fallback-behavior: string
                                    header-name: string
                                    position: string
                                  })
                                )
                              })
                            )
                            label-match-statement: optional(
                              object({
                                key: string
                                scope: string
                              })
                            )
                            regex-match-statement: optional(
                              object({
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                regex-string: string
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            regex-pattern-set-reference-statement: optional(
                              object({
                                arn: string
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            size-constraint-statement: optional(
                              object({
                                comparison-operator: string
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                size: integer
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            sqli-match-statement: optional(
                              object({
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                sensitivity-level: optional(string)
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            xss-match-statement: optional(
                              object({
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                          })
                        })
                      )
                      or-statement: optional(
                        object({
                          statements: list(
                            object({
                              asn-match-statement: optional(
                                object({
                                  asn-list: list(integer)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              byte-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  positional-constraint: string
                                  search-string: optional(string)
                                  search-string-base64: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              geo-match-statement: optional(
                                object({
                                  country-codes: list(string)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              ip-set-reference-statement: optional(
                                object({
                                  arn: string
                                  ip-set-forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                      position: string
                                    })
                                  )
                                })
                              )
                              label-match-statement: optional(
                                object({
                                  key: string
                                  scope: string
                                })
                              )
                              regex-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  regex-string: string
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              regex-pattern-set-reference-statement: optional(
                                object({
                                  arn: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              size-constraint-statement: optional(
                                object({
                                  comparison-operator: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  size: integer
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              sqli-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  sensitivity-level: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              xss-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                            })
                          )
                        })
                      )
                      asn-match-statement: optional(
                        object({
                          asn-list: list(integer)
                          forwarded-ip-config: optional(
                            object({
                              fallback-behavior: string
                              header-name: string
                            })
                          )
                        })
                      )
                      byte-match-statement: optional(
                        object({
                          field-to-match: object({
                            all-query-arguments: optional(object({}))
                            body: optional(
                              object({
                                oversize-handling: optional(string)
                              })
                            )
                            cookies: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-cookies: optional(list(string))
                                  included-cookies: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            header-order: optional(
                              object({
                                oversize-handling: string
                              })
                            )
                            headers: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-headers: optional(list(string))
                                  included-headers: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            ja3-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            ja4-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            json-body: optional(
                              object({
                                invalid-fallback-behavior: optional(string)
                                match-pattern: object({
                                  all: optional(object({}))
                                  included-paths: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            method: optional(object({}))
                            query-string: optional(object({}))
                            single-header: optional(
                              object({
                                name: string
                              })
                            )
                            single-query-argument: optional(
                              object({
                                name: string
                              })
                            )
                            uri-fragment: optional(
                              object({
                                fallback-behavior: optional(string)
                              })
                            )
                            uri-path: optional(object({}))
                          })
                          positional-constraint: string
                          search-string: optional(string)
                          search-string-base64: optional(string)
                          text-transformations: list(
                            object({
                              priority: integer
                              type: string
                            })
                          )
                        })
                      )
                      geo-match-statement: optional(
                        object({
                          country-codes: list(string)
                          forwarded-ip-config: optional(
                            object({
                              fallback-behavior: string
                              header-name: string
                            })
                          )
                        })
                      )
                      ip-set-reference-statement: optional(
                        object({
                          arn: string
                          ip-set-forwarded-ip-config: optional(
                            object({
                              fallback-behavior: string
                              header-name: string
                              position: string
                            })
                          )
                        })
                      )
                      label-match-statement: optional(
                        object({
                          key: string
                          scope: string
                        })
                      )
                      regex-match-statement: optional(
                        object({
                          field-to-match: object({
                            all-query-arguments: optional(object({}))
                            body: optional(
                              object({
                                oversize-handling: optional(string)
                              })
                            )
                            cookies: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-cookies: optional(list(string))
                                  included-cookies: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            header-order: optional(
                              object({
                                oversize-handling: string
                              })
                            )
                            headers: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-headers: optional(list(string))
                                  included-headers: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            ja3-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            ja4-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            json-body: optional(
                              object({
                                invalid-fallback-behavior: optional(string)
                                match-pattern: object({
                                  all: optional(object({}))
                                  included-paths: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            method: optional(object({}))
                            query-string: optional(object({}))
                            single-header: optional(
                              object({
                                name: string
                              })
                            )
                            single-query-argument: optional(
                              object({
                                name: string
                              })
                            )
                            uri-fragment: optional(
                              object({
                                fallback-behavior: optional(string)
                              })
                            )
                            uri-path: optional(object({}))
                          })
                          regex-string: string
                          text-transformations: list(
                            object({
                              priority: integer
                              type: string
                            })
                          )
                        })
                      )
                      regex-pattern-set-reference-statement: optional(
                        object({
                          arn: string
                          field-to-match: object({
                            all-query-arguments: optional(object({}))
                            body: optional(
                              object({
                                oversize-handling: optional(string)
                              })
                            )
                            cookies: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-cookies: optional(list(string))
                                  included-cookies: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            header-order: optional(
                              object({
                                oversize-handling: string
                              })
                            )
                            headers: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-headers: optional(list(string))
                                  included-headers: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            ja3-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            ja4-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            json-body: optional(
                              object({
                                invalid-fallback-behavior: optional(string)
                                match-pattern: object({
                                  all: optional(object({}))
                                  included-paths: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            method: optional(object({}))
                            query-string: optional(object({}))
                            single-header: optional(
                              object({
                                name: string
                              })
                            )
                            single-query-argument: optional(
                              object({
                                name: string
                              })
                            )
                            uri-fragment: optional(
                              object({
                                fallback-behavior: optional(string)
                              })
                            )
                            uri-path: optional(object({}))
                          })
                          text-transformations: list(
                            object({
                              priority: integer
                              type: string
                            })
                          )
                        })
                      )
                      size-constraint-statement: optional(
                        object({
                          comparison-operator: string
                          field-to-match: object({
                            all-query-arguments: optional(object({}))
                            body: optional(
                              object({
                                oversize-handling: optional(string)
                              })
                            )
                            cookies: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-cookies: optional(list(string))
                                  included-cookies: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            header-order: optional(
                              object({
                                oversize-handling: string
                              })
                            )
                            headers: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-headers: optional(list(string))
                                  included-headers: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            ja3-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            ja4-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            json-body: optional(
                              object({
                                invalid-fallback-behavior: optional(string)
                                match-pattern: object({
                                  all: optional(object({}))
                                  included-paths: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            method: optional(object({}))
                            query-string: optional(object({}))
                            single-header: optional(
                              object({
                                name: string
                              })
                            )
                            single-query-argument: optional(
                              object({
                                name: string
                              })
                            )
                            uri-fragment: optional(
                              object({
                                fallback-behavior: optional(string)
                              })
                            )
                            uri-path: optional(object({}))
                          })
                          size: integer
                          text-transformations: list(
                            object({
                              priority: integer
                              type: string
                            })
                          )
                        })
                      )
                      sqli-match-statement: optional(
                        object({
                          field-to-match: object({
                            all-query-arguments: optional(object({}))
                            body: optional(
                              object({
                                oversize-handling: optional(string)
                              })
                            )
                            cookies: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-cookies: optional(list(string))
                                  included-cookies: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            header-order: optional(
                              object({
                                oversize-handling: string
                              })
                            )
                            headers: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-headers: optional(list(string))
                                  included-headers: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            ja3-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            ja4-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            json-body: optional(
                              object({
                                invalid-fallback-behavior: optional(string)
                                match-pattern: object({
                                  all: optional(object({}))
                                  included-paths: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            method: optional(object({}))
                            query-string: optional(object({}))
                            single-header: optional(
                              object({
                                name: string
                              })
                            )
                            single-query-argument: optional(
                              object({
                                name: string
                              })
                            )
                            uri-fragment: optional(
                              object({
                                fallback-behavior: optional(string)
                              })
                            )
                            uri-path: optional(object({}))
                          })
                          sensitivity-level: optional(string)
                          text-transformations: list(
                            object({
                              priority: integer
                              type: string
                            })
                          )
                        })
                      )
                      xss-match-statement: optional(
                        object({
                          field-to-match: object({
                            all-query-arguments: optional(object({}))
                            body: optional(
                              object({
                                oversize-handling: optional(string)
                              })
                            )
                            cookies: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-cookies: optional(list(string))
                                  included-cookies: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            header-order: optional(
                              object({
                                oversize-handling: string
                              })
                            )
                            headers: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-headers: optional(list(string))
                                  included-headers: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            ja3-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            ja4-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            json-body: optional(
                              object({
                                invalid-fallback-behavior: optional(string)
                                match-pattern: object({
                                  all: optional(object({}))
                                  included-paths: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            method: optional(object({}))
                            query-string: optional(object({}))
                            single-header: optional(
                              object({
                                name: string
                              })
                            )
                            single-query-argument: optional(
                              object({
                                name: string
                              })
                            )
                            uri-fragment: optional(
                              object({
                                fallback-behavior: optional(string)
                              })
                            )
                            uri-path: optional(object({}))
                          })
                          text-transformations: list(
                            object({
                              priority: integer
                              type: string
                            })
                          )
                        })
                      )
                    })
                  )
                })
              )
              asn-match-statement: optional(
                object({
                  asn-list: list(integer)
                  forwarded-ip-config: optional(
                    object({
                      fallback-behavior: string
                      header-name: string
                    })
                  )
                })
              )
              byte-match-statement: optional(
                object({
                  field-to-match: object({
                    all-query-arguments: optional(object({}))
                    body: optional(
                      object({
                        oversize-handling: optional(string)
                      })
                    )
                    cookies: optional(
                      object({
                        match-pattern: object({
                          all: optional(object({}))
                          excluded-cookies: optional(list(string))
                          included-cookies: optional(list(string))
                        })
                        match-scope: string
                        oversize-handling: string
                      })
                    )
                    header-order: optional(
                      object({
                        oversize-handling: string
                      })
                    )
                    headers: optional(
                      object({
                        match-pattern: object({
                          all: optional(object({}))
                          excluded-headers: optional(list(string))
                          included-headers: optional(list(string))
                        })
                        match-scope: string
                        oversize-handling: string
                      })
                    )
                    ja3-fingerprint: optional(
                      object({
                        fallback-behavior: string
                      })
                    )
                    ja4-fingerprint: optional(
                      object({
                        fallback-behavior: string
                      })
                    )
                    json-body: optional(
                      object({
                        invalid-fallback-behavior: optional(string)
                        match-pattern: object({
                          all: optional(object({}))
                          included-paths: optional(list(string))
                        })
                        match-scope: string
                        oversize-handling: string
                      })
                    )
                    method: optional(object({}))
                    query-string: optional(object({}))
                    single-header: optional(
                      object({
                        name: string
                      })
                    )
                    single-query-argument: optional(
                      object({
                        name: string
                      })
                    )
                    uri-fragment: optional(
                      object({
                        fallback-behavior: optional(string)
                      })
                    )
                    uri-path: optional(object({}))
                  })
                  positional-constraint: string
                  search-string: optional(string)
                  search-string-base64: optional(string)
                  text-transformations: list(
                    object({
                      priority: integer
                      type: string
                    })
                  )
                })
              )
              geo-match-statement: optional(
                object({
                  country-codes: list(string)
                  forwarded-ip-config: optional(
                    object({
                      fallback-behavior: string
                      header-name: string
                    })
                  )
                })
              )
              ip-set-reference-statement: optional(
                object({
                  arn: string
                  ip-set-forwarded-ip-config: optional(
                    object({
                      fallback-behavior: string
                      header-name: string
                      position: string
                    })
                  )
                })
              )
              label-match-statement: optional(
                object({
                  key: string
                  scope: string
                })
              )
              regex-match-statement: optional(
                object({
                  field-to-match: object({
                    all-query-arguments: optional(object({}))
                    body: optional(
                      object({
                        oversize-handling: optional(string)
                      })
                    )
                    cookies: optional(
                      object({
                        match-pattern: object({
                          all: optional(object({}))
                          excluded-cookies: optional(list(string))
                          included-cookies: optional(list(string))
                        })
                        match-scope: string
                        oversize-handling: string
                      })
                    )
                    header-order: optional(
                      object({
                        oversize-handling: string
                      })
                    )
                    headers: optional(
                      object({
                        match-pattern: object({
                          all: optional(object({}))
                          excluded-headers: optional(list(string))
                          included-headers: optional(list(string))
                        })
                        match-scope: string
                        oversize-handling: string
                      })
                    )
                    ja3-fingerprint: optional(
                      object({
                        fallback-behavior: string
                      })
                    )
                    ja4-fingerprint: optional(
                      object({
                        fallback-behavior: string
                      })
                    )
                    json-body: optional(
                      object({
                        invalid-fallback-behavior: optional(string)
                        match-pattern: object({
                          all: optional(object({}))
                          included-paths: optional(list(string))
                        })
                        match-scope: string
                        oversize-handling: string
                      })
                    )
                    method: optional(object({}))
                    query-string: optional(object({}))
                    single-header: optional(
                      object({
                        name: string
                      })
                    )
                    single-query-argument: optional(
                      object({
                        name: string
                      })
                    )
                    uri-fragment: optional(
                      object({
                        fallback-behavior: optional(string)
                      })
                    )
                    uri-path: optional(object({}))
                  })
                  regex-string: string
                  text-transformations: list(
                    object({
                      priority: integer
                      type: string
                    })
                  )
                })
              )
              regex-pattern-set-reference-statement: optional(
                object({
                  arn: string
                  field-to-match: object({
                    all-query-arguments: optional(object({}))
                    body: optional(
                      object({
                        oversize-handling: optional(string)
                      })
                    )
                    cookies: optional(
                      object({
                        match-pattern: object({
                          all: optional(object({}))
                          excluded-cookies: optional(list(string))
                          included-cookies: optional(list(string))
                        })
                        match-scope: string
                        oversize-handling: string
                      })
                    )
                    header-order: optional(
                      object({
                        oversize-handling: string
                      })
                    )
                    headers: optional(
                      object({
                        match-pattern: object({
                          all: optional(object({}))
                          excluded-headers: optional(list(string))
                          included-headers: optional(list(string))
                        })
                        match-scope: string
                        oversize-handling: string
                      })
                    )
                    ja3-fingerprint: optional(
                      object({
                        fallback-behavior: string
                      })
                    )
                    ja4-fingerprint: optional(
                      object({
                        fallback-behavior: string
                      })
                    )
                    json-body: optional(
                      object({
                        invalid-fallback-behavior: optional(string)
                        match-pattern: object({
                          all: optional(object({}))
                          included-paths: optional(list(string))
                        })
                        match-scope: string
                        oversize-handling: string
                      })
                    )
                    method: optional(object({}))
                    query-string: optional(object({}))
                    single-header: optional(
                      object({
                        name: string
                      })
                    )
                    single-query-argument: optional(
                      object({
                        name: string
                      })
                    )
                    uri-fragment: optional(
                      object({
                        fallback-behavior: optional(string)
                      })
                    )
                    uri-path: optional(object({}))
                  })
                  text-transformations: list(
                    object({
                      priority: integer
                      type: string
                    })
                  )
                })
              )
              size-constraint-statement: optional(
                object({
                  comparison-operator: string
                  field-to-match: object({
                    all-query-arguments: optional(object({}))
                    body: optional(
                      object({
                        oversize-handling: optional(string)
                      })
                    )
                    cookies: optional(
                      object({
                        match-pattern: object({
                          all: optional(object({}))
                          excluded-cookies: optional(list(string))
                          included-cookies: optional(list(string))
                        })
                        match-scope: string
                        oversize-handling: string
                      })
                    )
                    header-order: optional(
                      object({
                        oversize-handling: string
                      })
                    )
                    headers: optional(
                      object({
                        match-pattern: object({
                          all: optional(object({}))
                          excluded-headers: optional(list(string))
                          included-headers: optional(list(string))
                        })
                        match-scope: string
                        oversize-handling: string
                      })
                    )
                    ja3-fingerprint: optional(
                      object({
                        fallback-behavior: string
                      })
                    )
                    ja4-fingerprint: optional(
                      object({
                        fallback-behavior: string
                      })
                    )
                    json-body: optional(
                      object({
                        invalid-fallback-behavior: optional(string)
                        match-pattern: object({
                          all: optional(object({}))
                          included-paths: optional(list(string))
                        })
                        match-scope: string
                        oversize-handling: string
                      })
                    )
                    method: optional(object({}))
                    query-string: optional(object({}))
                    single-header: optional(
                      object({
                        name: string
                      })
                    )
                    single-query-argument: optional(
                      object({
                        name: string
                      })
                    )
                    uri-fragment: optional(
                      object({
                        fallback-behavior: optional(string)
                      })
                    )
                    uri-path: optional(object({}))
                  })
                  size: integer
                  text-transformations: list(
                    object({
                      priority: integer
                      type: string
                    })
                  )
                })
              )
              sqli-match-statement: optional(
                object({
                  field-to-match: object({
                    all-query-arguments: optional(object({}))
                    body: optional(
                      object({
                        oversize-handling: optional(string)
                      })
                    )
                    cookies: optional(
                      object({
                        match-pattern: object({
                          all: optional(object({}))
                          excluded-cookies: optional(list(string))
                          included-cookies: optional(list(string))
                        })
                        match-scope: string
                        oversize-handling: string
                      })
                    )
                    header-order: optional(
                      object({
                        oversize-handling: string
                      })
                    )
                    headers: optional(
                      object({
                        match-pattern: object({
                          all: optional(object({}))
                          excluded-headers: optional(list(string))
                          included-headers: optional(list(string))
                        })
                        match-scope: string
                        oversize-handling: string
                      })
                    )
                    ja3-fingerprint: optional(
                      object({
                        fallback-behavior: string
                      })
                    )
                    ja4-fingerprint: optional(
                      object({
                        fallback-behavior: string
                      })
                    )
                    json-body: optional(
                      object({
                        invalid-fallback-behavior: optional(string)
                        match-pattern: object({
                          all: optional(object({}))
                          included-paths: optional(list(string))
                        })
                        match-scope: string
                        oversize-handling: string
                      })
                    )
                    method: optional(object({}))
                    query-string: optional(object({}))
                    single-header: optional(
                      object({
                        name: string
                      })
                    )
                    single-query-argument: optional(
                      object({
                        name: string
                      })
                    )
                    uri-fragment: optional(
                      object({
                        fallback-behavior: optional(string)
                      })
                    )
                    uri-path: optional(object({}))
                  })
                  sensitivity-level: optional(string)
                  text-transformations: list(
                    object({
                      priority: integer
                      type: string
                    })
                  )
                })
              )
              xss-match-statement: optional(
                object({
                  field-to-match: object({
                    all-query-arguments: optional(object({}))
                    body: optional(
                      object({
                        oversize-handling: optional(string)
                      })
                    )
                    cookies: optional(
                      object({
                        match-pattern: object({
                          all: optional(object({}))
                          excluded-cookies: optional(list(string))
                          included-cookies: optional(list(string))
                        })
                        match-scope: string
                        oversize-handling: string
                      })
                    )
                    header-order: optional(
                      object({
                        oversize-handling: string
                      })
                    )
                    headers: optional(
                      object({
                        match-pattern: object({
                          all: optional(object({}))
                          excluded-headers: optional(list(string))
                          included-headers: optional(list(string))
                        })
                        match-scope: string
                        oversize-handling: string
                      })
                    )
                    ja3-fingerprint: optional(
                      object({
                        fallback-behavior: string
                      })
                    )
                    ja4-fingerprint: optional(
                      object({
                        fallback-behavior: string
                      })
                    )
                    json-body: optional(
                      object({
                        invalid-fallback-behavior: optional(string)
                        match-pattern: object({
                          all: optional(object({}))
                          included-paths: optional(list(string))
                        })
                        match-scope: string
                        oversize-handling: string
                      })
                    )
                    method: optional(object({}))
                    query-string: optional(object({}))
                    single-header: optional(
                      object({
                        name: string
                      })
                    )
                    single-query-argument: optional(
                      object({
                        name: string
                      })
                    )
                    uri-fragment: optional(
                      object({
                        fallback-behavior: optional(string)
                      })
                    )
                    uri-path: optional(object({}))
                  })
                  text-transformations: list(
                    object({
                      priority: integer
                      type: string
                    })
                  )
                })
              )
            })
          })
        )
        or-statement: optional(
          object({
            statements: list(
              object({
                and-statement: optional(
                  object({
                    statements: list(
                      object({
                        and-statement: optional(
                          object({
                            statements: list(
                              object({
                                asn-match-statement: optional(
                                  object({
                                    asn-list: list(integer)
                                    forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                      })
                                    )
                                  })
                                )
                                byte-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    positional-constraint: string
                                    search-string: optional(string)
                                    search-string-base64: optional(string)
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                geo-match-statement: optional(
                                  object({
                                    country-codes: list(string)
                                    forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                      })
                                    )
                                  })
                                )
                                ip-set-reference-statement: optional(
                                  object({
                                    arn: string
                                    ip-set-forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                        position: string
                                      })
                                    )
                                  })
                                )
                                label-match-statement: optional(
                                  object({
                                    key: string
                                    scope: string
                                  })
                                )
                                regex-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    regex-string: string
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                regex-pattern-set-reference-statement: optional(
                                  object({
                                    arn: string
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                size-constraint-statement: optional(
                                  object({
                                    comparison-operator: string
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    size: integer
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                sqli-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    sensitivity-level: optional(string)
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                xss-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                              })
                            )
                          })
                        )
                        not-statement: optional(
                          object({
                            statement: object({
                              asn-match-statement: optional(
                                object({
                                  asn-list: list(integer)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              byte-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  positional-constraint: string
                                  search-string: optional(string)
                                  search-string-base64: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              geo-match-statement: optional(
                                object({
                                  country-codes: list(string)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              ip-set-reference-statement: optional(
                                object({
                                  arn: string
                                  ip-set-forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                      position: string
                                    })
                                  )
                                })
                              )
                              label-match-statement: optional(
                                object({
                                  key: string
                                  scope: string
                                })
                              )
                              regex-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  regex-string: string
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              regex-pattern-set-reference-statement: optional(
                                object({
                                  arn: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              size-constraint-statement: optional(
                                object({
                                  comparison-operator: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  size: integer
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              sqli-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  sensitivity-level: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              xss-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                            })
                          })
                        )
                        or-statement: optional(
                          object({
                            statements: list(
                              object({
                                asn-match-statement: optional(
                                  object({
                                    asn-list: list(integer)
                                    forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                      })
                                    )
                                  })
                                )
                                byte-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    positional-constraint: string
                                    search-string: optional(string)
                                    search-string-base64: optional(string)
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                geo-match-statement: optional(
                                  object({
                                    country-codes: list(string)
                                    forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                      })
                                    )
                                  })
                                )
                                ip-set-reference-statement: optional(
                                  object({
                                    arn: string
                                    ip-set-forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                        position: string
                                      })
                                    )
                                  })
                                )
                                label-match-statement: optional(
                                  object({
                                    key: string
                                    scope: string
                                  })
                                )
                                regex-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    regex-string: string
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                regex-pattern-set-reference-statement: optional(
                                  object({
                                    arn: string
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                size-constraint-statement: optional(
                                  object({
                                    comparison-operator: string
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    size: integer
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                sqli-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    sensitivity-level: optional(string)
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                xss-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                              })
                            )
                          })
                        )
                        asn-match-statement: optional(
                          object({
                            asn-list: list(integer)
                            forwarded-ip-config: optional(
                              object({
                                fallback-behavior: string
                                header-name: string
                              })
                            )
                          })
                        )
                        byte-match-statement: optional(
                          object({
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            positional-constraint: string
                            search-string: optional(string)
                            search-string-base64: optional(string)
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        geo-match-statement: optional(
                          object({
                            country-codes: list(string)
                            forwarded-ip-config: optional(
                              object({
                                fallback-behavior: string
                                header-name: string
                              })
                            )
                          })
                        )
                        ip-set-reference-statement: optional(
                          object({
                            arn: string
                            ip-set-forwarded-ip-config: optional(
                              object({
                                fallback-behavior: string
                                header-name: string
                                position: string
                              })
                            )
                          })
                        )
                        label-match-statement: optional(
                          object({
                            key: string
                            scope: string
                          })
                        )
                        regex-match-statement: optional(
                          object({
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            regex-string: string
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        regex-pattern-set-reference-statement: optional(
                          object({
                            arn: string
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        size-constraint-statement: optional(
                          object({
                            comparison-operator: string
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            size: integer
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        sqli-match-statement: optional(
                          object({
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            sensitivity-level: optional(string)
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        xss-match-statement: optional(
                          object({
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                      })
                    )
                  })
                )
                not-statement: optional(
                  object({
                    statement: object({
                      and-statement: optional(
                        object({
                          statements: list(
                            object({
                              asn-match-statement: optional(
                                object({
                                  asn-list: list(integer)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              byte-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  positional-constraint: string
                                  search-string: optional(string)
                                  search-string-base64: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              geo-match-statement: optional(
                                object({
                                  country-codes: list(string)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              ip-set-reference-statement: optional(
                                object({
                                  arn: string
                                  ip-set-forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                      position: string
                                    })
                                  )
                                })
                              )
                              label-match-statement: optional(
                                object({
                                  key: string
                                  scope: string
                                })
                              )
                              regex-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  regex-string: string
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              regex-pattern-set-reference-statement: optional(
                                object({
                                  arn: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              size-constraint-statement: optional(
                                object({
                                  comparison-operator: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  size: integer
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              sqli-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  sensitivity-level: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              xss-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                            })
                          )
                        })
                      )
                      not-statement: optional(
                        object({
                          statement: object({
                            asn-match-statement: optional(
                              object({
                                asn-list: list(integer)
                                forwarded-ip-config: optional(
                                  object({
                                    fallback-behavior: string
                                    header-name: string
                                  })
                                )
                              })
                            )
                            byte-match-statement: optional(
                              object({
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                positional-constraint: string
                                search-string: optional(string)
                                search-string-base64: optional(string)
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            geo-match-statement: optional(
                              object({
                                country-codes: list(string)
                                forwarded-ip-config: optional(
                                  object({
                                    fallback-behavior: string
                                    header-name: string
                                  })
                                )
                              })
                            )
                            ip-set-reference-statement: optional(
                              object({
                                arn: string
                                ip-set-forwarded-ip-config: optional(
                                  object({
                                    fallback-behavior: string
                                    header-name: string
                                    position: string
                                  })
                                )
                              })
                            )
                            label-match-statement: optional(
                              object({
                                key: string
                                scope: string
                              })
                            )
                            regex-match-statement: optional(
                              object({
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                regex-string: string
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            regex-pattern-set-reference-statement: optional(
                              object({
                                arn: string
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            size-constraint-statement: optional(
                              object({
                                comparison-operator: string
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                size: integer
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            sqli-match-statement: optional(
                              object({
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                sensitivity-level: optional(string)
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            xss-match-statement: optional(
                              object({
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                          })
                        })
                      )
                      or-statement: optional(
                        object({
                          statements: list(
                            object({
                              asn-match-statement: optional(
                                object({
                                  asn-list: list(integer)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              byte-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  positional-constraint: string
                                  search-string: optional(string)
                                  search-string-base64: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              geo-match-statement: optional(
                                object({
                                  country-codes: list(string)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              ip-set-reference-statement: optional(
                                object({
                                  arn: string
                                  ip-set-forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                      position: string
                                    })
                                  )
                                })
                              )
                              label-match-statement: optional(
                                object({
                                  key: string
                                  scope: string
                                })
                              )
                              regex-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  regex-string: string
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              regex-pattern-set-reference-statement: optional(
                                object({
                                  arn: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              size-constraint-statement: optional(
                                object({
                                  comparison-operator: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  size: integer
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              sqli-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  sensitivity-level: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              xss-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                            })
                          )
                        })
                      )
                      asn-match-statement: optional(
                        object({
                          asn-list: list(integer)
                          forwarded-ip-config: optional(
                            object({
                              fallback-behavior: string
                              header-name: string
                            })
                          )
                        })
                      )
                      byte-match-statement: optional(
                        object({
                          field-to-match: object({
                            all-query-arguments: optional(object({}))
                            body: optional(
                              object({
                                oversize-handling: optional(string)
                              })
                            )
                            cookies: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-cookies: optional(list(string))
                                  included-cookies: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            header-order: optional(
                              object({
                                oversize-handling: string
                              })
                            )
                            headers: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-headers: optional(list(string))
                                  included-headers: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            ja3-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            ja4-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            json-body: optional(
                              object({
                                invalid-fallback-behavior: optional(string)
                                match-pattern: object({
                                  all: optional(object({}))
                                  included-paths: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            method: optional(object({}))
                            query-string: optional(object({}))
                            single-header: optional(
                              object({
                                name: string
                              })
                            )
                            single-query-argument: optional(
                              object({
                                name: string
                              })
                            )
                            uri-fragment: optional(
                              object({
                                fallback-behavior: optional(string)
                              })
                            )
                            uri-path: optional(object({}))
                          })
                          positional-constraint: string
                          search-string: optional(string)
                          search-string-base64: optional(string)
                          text-transformations: list(
                            object({
                              priority: integer
                              type: string
                            })
                          )
                        })
                      )
                      geo-match-statement: optional(
                        object({
                          country-codes: list(string)
                          forwarded-ip-config: optional(
                            object({
                              fallback-behavior: string
                              header-name: string
                            })
                          )
                        })
                      )
                      ip-set-reference-statement: optional(
                        object({
                          arn: string
                          ip-set-forwarded-ip-config: optional(
                            object({
                              fallback-behavior: string
                              header-name: string
                              position: string
                            })
                          )
                        })
                      )
                      label-match-statement: optional(
                        object({
                          key: string
                          scope: string
                        })
                      )
                      regex-match-statement: optional(
                        object({
                          field-to-match: object({
                            all-query-arguments: optional(object({}))
                            body: optional(
                              object({
                                oversize-handling: optional(string)
                              })
                            )
                            cookies: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-cookies: optional(list(string))
                                  included-cookies: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            header-order: optional(
                              object({
                                oversize-handling: string
                              })
                            )
                            headers: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-headers: optional(list(string))
                                  included-headers: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            ja3-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            ja4-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            json-body: optional(
                              object({
                                invalid-fallback-behavior: optional(string)
                                match-pattern: object({
                                  all: optional(object({}))
                                  included-paths: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            method: optional(object({}))
                            query-string: optional(object({}))
                            single-header: optional(
                              object({
                                name: string
                              })
                            )
                            single-query-argument: optional(
                              object({
                                name: string
                              })
                            )
                            uri-fragment: optional(
                              object({
                                fallback-behavior: optional(string)
                              })
                            )
                            uri-path: optional(object({}))
                          })
                          regex-string: string
                          text-transformations: list(
                            object({
                              priority: integer
                              type: string
                            })
                          )
                        })
                      )
                      regex-pattern-set-reference-statement: optional(
                        object({
                          arn: string
                          field-to-match: object({
                            all-query-arguments: optional(object({}))
                            body: optional(
                              object({
                                oversize-handling: optional(string)
                              })
                            )
                            cookies: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-cookies: optional(list(string))
                                  included-cookies: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            header-order: optional(
                              object({
                                oversize-handling: string
                              })
                            )
                            headers: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-headers: optional(list(string))
                                  included-headers: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            ja3-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            ja4-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            json-body: optional(
                              object({
                                invalid-fallback-behavior: optional(string)
                                match-pattern: object({
                                  all: optional(object({}))
                                  included-paths: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            method: optional(object({}))
                            query-string: optional(object({}))
                            single-header: optional(
                              object({
                                name: string
                              })
                            )
                            single-query-argument: optional(
                              object({
                                name: string
                              })
                            )
                            uri-fragment: optional(
                              object({
                                fallback-behavior: optional(string)
                              })
                            )
                            uri-path: optional(object({}))
                          })
                          text-transformations: list(
                            object({
                              priority: integer
                              type: string
                            })
                          )
                        })
                      )
                      size-constraint-statement: optional(
                        object({
                          comparison-operator: string
                          field-to-match: object({
                            all-query-arguments: optional(object({}))
                            body: optional(
                              object({
                                oversize-handling: optional(string)
                              })
                            )
                            cookies: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-cookies: optional(list(string))
                                  included-cookies: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            header-order: optional(
                              object({
                                oversize-handling: string
                              })
                            )
                            headers: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-headers: optional(list(string))
                                  included-headers: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            ja3-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            ja4-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            json-body: optional(
                              object({
                                invalid-fallback-behavior: optional(string)
                                match-pattern: object({
                                  all: optional(object({}))
                                  included-paths: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            method: optional(object({}))
                            query-string: optional(object({}))
                            single-header: optional(
                              object({
                                name: string
                              })
                            )
                            single-query-argument: optional(
                              object({
                                name: string
                              })
                            )
                            uri-fragment: optional(
                              object({
                                fallback-behavior: optional(string)
                              })
                            )
                            uri-path: optional(object({}))
                          })
                          size: integer
                          text-transformations: list(
                            object({
                              priority: integer
                              type: string
                            })
                          )
                        })
                      )
                      sqli-match-statement: optional(
                        object({
                          field-to-match: object({
                            all-query-arguments: optional(object({}))
                            body: optional(
                              object({
                                oversize-handling: optional(string)
                              })
                            )
                            cookies: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-cookies: optional(list(string))
                                  included-cookies: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            header-order: optional(
                              object({
                                oversize-handling: string
                              })
                            )
                            headers: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-headers: optional(list(string))
                                  included-headers: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            ja3-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            ja4-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            json-body: optional(
                              object({
                                invalid-fallback-behavior: optional(string)
                                match-pattern: object({
                                  all: optional(object({}))
                                  included-paths: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            method: optional(object({}))
                            query-string: optional(object({}))
                            single-header: optional(
                              object({
                                name: string
                              })
                            )
                            single-query-argument: optional(
                              object({
                                name: string
                              })
                            )
                            uri-fragment: optional(
                              object({
                                fallback-behavior: optional(string)
                              })
                            )
                            uri-path: optional(object({}))
                          })
                          sensitivity-level: optional(string)
                          text-transformations: list(
                            object({
                              priority: integer
                              type: string
                            })
                          )
                        })
                      )
                      xss-match-statement: optional(
                        object({
                          field-to-match: object({
                            all-query-arguments: optional(object({}))
                            body: optional(
                              object({
                                oversize-handling: optional(string)
                              })
                            )
                            cookies: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-cookies: optional(list(string))
                                  included-cookies: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            header-order: optional(
                              object({
                                oversize-handling: string
                              })
                            )
                            headers: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-headers: optional(list(string))
                                  included-headers: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            ja3-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            ja4-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            json-body: optional(
                              object({
                                invalid-fallback-behavior: optional(string)
                                match-pattern: object({
                                  all: optional(object({}))
                                  included-paths: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            method: optional(object({}))
                            query-string: optional(object({}))
                            single-header: optional(
                              object({
                                name: string
                              })
                            )
                            single-query-argument: optional(
                              object({
                                name: string
                              })
                            )
                            uri-fragment: optional(
                              object({
                                fallback-behavior: optional(string)
                              })
                            )
                            uri-path: optional(object({}))
                          })
                          text-transformations: list(
                            object({
                              priority: integer
                              type: string
                            })
                          )
                        })
                      )
                    })
                  })
                )
                or-statement: optional(
                  object({
                    statements: list(
                      object({
                        and-statement: optional(
                          object({
                            statements: list(
                              object({
                                asn-match-statement: optional(
                                  object({
                                    asn-list: list(integer)
                                    forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                      })
                                    )
                                  })
                                )
                                byte-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    positional-constraint: string
                                    search-string: optional(string)
                                    search-string-base64: optional(string)
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                geo-match-statement: optional(
                                  object({
                                    country-codes: list(string)
                                    forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                      })
                                    )
                                  })
                                )
                                ip-set-reference-statement: optional(
                                  object({
                                    arn: string
                                    ip-set-forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                        position: string
                                      })
                                    )
                                  })
                                )
                                label-match-statement: optional(
                                  object({
                                    key: string
                                    scope: string
                                  })
                                )
                                regex-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    regex-string: string
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                regex-pattern-set-reference-statement: optional(
                                  object({
                                    arn: string
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                size-constraint-statement: optional(
                                  object({
                                    comparison-operator: string
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    size: integer
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                sqli-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    sensitivity-level: optional(string)
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                xss-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                              })
                            )
                          })
                        )
                        not-statement: optional(
                          object({
                            statement: object({
                              asn-match-statement: optional(
                                object({
                                  asn-list: list(integer)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              byte-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  positional-constraint: string
                                  search-string: optional(string)
                                  search-string-base64: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              geo-match-statement: optional(
                                object({
                                  country-codes: list(string)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              ip-set-reference-statement: optional(
                                object({
                                  arn: string
                                  ip-set-forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                      position: string
                                    })
                                  )
                                })
                              )
                              label-match-statement: optional(
                                object({
                                  key: string
                                  scope: string
                                })
                              )
                              regex-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  regex-string: string
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              regex-pattern-set-reference-statement: optional(
                                object({
                                  arn: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              size-constraint-statement: optional(
                                object({
                                  comparison-operator: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  size: integer
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              sqli-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  sensitivity-level: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              xss-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                            })
                          })
                        )
                        or-statement: optional(
                          object({
                            statements: list(
                              object({
                                asn-match-statement: optional(
                                  object({
                                    asn-list: list(integer)
                                    forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                      })
                                    )
                                  })
                                )
                                byte-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    positional-constraint: string
                                    search-string: optional(string)
                                    search-string-base64: optional(string)
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                geo-match-statement: optional(
                                  object({
                                    country-codes: list(string)
                                    forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                      })
                                    )
                                  })
                                )
                                ip-set-reference-statement: optional(
                                  object({
                                    arn: string
                                    ip-set-forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                        position: string
                                      })
                                    )
                                  })
                                )
                                label-match-statement: optional(
                                  object({
                                    key: string
                                    scope: string
                                  })
                                )
                                regex-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    regex-string: string
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                regex-pattern-set-reference-statement: optional(
                                  object({
                                    arn: string
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                size-constraint-statement: optional(
                                  object({
                                    comparison-operator: string
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    size: integer
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                sqli-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    sensitivity-level: optional(string)
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                xss-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                              })
                            )
                          })
                        )
                        asn-match-statement: optional(
                          object({
                            asn-list: list(integer)
                            forwarded-ip-config: optional(
                              object({
                                fallback-behavior: string
                                header-name: string
                              })
                            )
                          })
                        )
                        byte-match-statement: optional(
                          object({
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            positional-constraint: string
                            search-string: optional(string)
                            search-string-base64: optional(string)
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        geo-match-statement: optional(
                          object({
                            country-codes: list(string)
                            forwarded-ip-config: optional(
                              object({
                                fallback-behavior: string
                                header-name: string
                              })
                            )
                          })
                        )
                        ip-set-reference-statement: optional(
                          object({
                            arn: string
                            ip-set-forwarded-ip-config: optional(
                              object({
                                fallback-behavior: string
                                header-name: string
                                position: string
                              })
                            )
                          })
                        )
                        label-match-statement: optional(
                          object({
                            key: string
                            scope: string
                          })
                        )
                        regex-match-statement: optional(
                          object({
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            regex-string: string
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        regex-pattern-set-reference-statement: optional(
                          object({
                            arn: string
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        size-constraint-statement: optional(
                          object({
                            comparison-operator: string
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            size: integer
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        sqli-match-statement: optional(
                          object({
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            sensitivity-level: optional(string)
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        xss-match-statement: optional(
                          object({
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                      })
                    )
                  })
                )
                asn-match-statement: optional(
                  object({
                    asn-list: list(integer)
                    forwarded-ip-config: optional(
                      object({
                        fallback-behavior: string
                        header-name: string
                      })
                    )
                  })
                )
                byte-match-statement: optional(
                  object({
                    field-to-match: object({
                      all-query-arguments: optional(object({}))
                      body: optional(
                        object({
                          oversize-handling: optional(string)
                        })
                      )
                      cookies: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-cookies: optional(list(string))
                            included-cookies: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      header-order: optional(
                        object({
                          oversize-handling: string
                        })
                      )
                      headers: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-headers: optional(list(string))
                            included-headers: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      ja3-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      ja4-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      json-body: optional(
                        object({
                          invalid-fallback-behavior: optional(string)
                          match-pattern: object({
                            all: optional(object({}))
                            included-paths: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      method: optional(object({}))
                      query-string: optional(object({}))
                      single-header: optional(
                        object({
                          name: string
                        })
                      )
                      single-query-argument: optional(
                        object({
                          name: string
                        })
                      )
                      uri-fragment: optional(
                        object({
                          fallback-behavior: optional(string)
                        })
                      )
                      uri-path: optional(object({}))
                    })
                    positional-constraint: string
                    search-string: optional(string)
                    search-string-base64: optional(string)
                    text-transformations: list(
                      object({
                        priority: integer
                        type: string
                      })
                    )
                  })
                )
                geo-match-statement: optional(
                  object({
                    country-codes: list(string)
                    forwarded-ip-config: optional(
                      object({
                        fallback-behavior: string
                        header-name: string
                      })
                    )
                  })
                )
                ip-set-reference-statement: optional(
                  object({
                    arn: string
                    ip-set-forwarded-ip-config: optional(
                      object({
                        fallback-behavior: string
                        header-name: string
                        position: string
                      })
                    )
                  })
                )
                label-match-statement: optional(
                  object({
                    key: string
                    scope: string
                  })
                )
                regex-match-statement: optional(
                  object({
                    field-to-match: object({
                      all-query-arguments: optional(object({}))
                      body: optional(
                        object({
                          oversize-handling: optional(string)
                        })
                      )
                      cookies: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-cookies: optional(list(string))
                            included-cookies: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      header-order: optional(
                        object({
                          oversize-handling: string
                        })
                      )
                      headers: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-headers: optional(list(string))
                            included-headers: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      ja3-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      ja4-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      json-body: optional(
                        object({
                          invalid-fallback-behavior: optional(string)
                          match-pattern: object({
                            all: optional(object({}))
                            included-paths: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      method: optional(object({}))
                      query-string: optional(object({}))
                      single-header: optional(
                        object({
                          name: string
                        })
                      )
                      single-query-argument: optional(
                        object({
                          name: string
                        })
                      )
                      uri-fragment: optional(
                        object({
                          fallback-behavior: optional(string)
                        })
                      )
                      uri-path: optional(object({}))
                    })
                    regex-string: string
                    text-transformations: list(
                      object({
                        priority: integer
                        type: string
                      })
                    )
                  })
                )
                regex-pattern-set-reference-statement: optional(
                  object({
                    arn: string
                    field-to-match: object({
                      all-query-arguments: optional(object({}))
                      body: optional(
                        object({
                          oversize-handling: optional(string)
                        })
                      )
                      cookies: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-cookies: optional(list(string))
                            included-cookies: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      header-order: optional(
                        object({
                          oversize-handling: string
                        })
                      )
                      headers: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-headers: optional(list(string))
                            included-headers: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      ja3-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      ja4-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      json-body: optional(
                        object({
                          invalid-fallback-behavior: optional(string)
                          match-pattern: object({
                            all: optional(object({}))
                            included-paths: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      method: optional(object({}))
                      query-string: optional(object({}))
                      single-header: optional(
                        object({
                          name: string
                        })
                      )
                      single-query-argument: optional(
                        object({
                          name: string
                        })
                      )
                      uri-fragment: optional(
                        object({
                          fallback-behavior: optional(string)
                        })
                      )
                      uri-path: optional(object({}))
                    })
                    text-transformations: list(
                      object({
                        priority: integer
                        type: string
                      })
                    )
                  })
                )
                size-constraint-statement: optional(
                  object({
                    comparison-operator: string
                    field-to-match: object({
                      all-query-arguments: optional(object({}))
                      body: optional(
                        object({
                          oversize-handling: optional(string)
                        })
                      )
                      cookies: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-cookies: optional(list(string))
                            included-cookies: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      header-order: optional(
                        object({
                          oversize-handling: string
                        })
                      )
                      headers: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-headers: optional(list(string))
                            included-headers: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      ja3-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      ja4-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      json-body: optional(
                        object({
                          invalid-fallback-behavior: optional(string)
                          match-pattern: object({
                            all: optional(object({}))
                            included-paths: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      method: optional(object({}))
                      query-string: optional(object({}))
                      single-header: optional(
                        object({
                          name: string
                        })
                      )
                      single-query-argument: optional(
                        object({
                          name: string
                        })
                      )
                      uri-fragment: optional(
                        object({
                          fallback-behavior: optional(string)
                        })
                      )
                      uri-path: optional(object({}))
                    })
                    size: integer
                    text-transformations: list(
                      object({
                        priority: integer
                        type: string
                      })
                    )
                  })
                )
                sqli-match-statement: optional(
                  object({
                    field-to-match: object({
                      all-query-arguments: optional(object({}))
                      body: optional(
                        object({
                          oversize-handling: optional(string)
                        })
                      )
                      cookies: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-cookies: optional(list(string))
                            included-cookies: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      header-order: optional(
                        object({
                          oversize-handling: string
                        })
                      )
                      headers: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-headers: optional(list(string))
                            included-headers: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      ja3-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      ja4-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      json-body: optional(
                        object({
                          invalid-fallback-behavior: optional(string)
                          match-pattern: object({
                            all: optional(object({}))
                            included-paths: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      method: optional(object({}))
                      query-string: optional(object({}))
                      single-header: optional(
                        object({
                          name: string
                        })
                      )
                      single-query-argument: optional(
                        object({
                          name: string
                        })
                      )
                      uri-fragment: optional(
                        object({
                          fallback-behavior: optional(string)
                        })
                      )
                      uri-path: optional(object({}))
                    })
                    sensitivity-level: optional(string)
                    text-transformations: list(
                      object({
                        priority: integer
                        type: string
                      })
                    )
                  })
                )
                xss-match-statement: optional(
                  object({
                    field-to-match: object({
                      all-query-arguments: optional(object({}))
                      body: optional(
                        object({
                          oversize-handling: optional(string)
                        })
                      )
                      cookies: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-cookies: optional(list(string))
                            included-cookies: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      header-order: optional(
                        object({
                          oversize-handling: string
                        })
                      )
                      headers: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-headers: optional(list(string))
                            included-headers: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      ja3-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      ja4-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      json-body: optional(
                        object({
                          invalid-fallback-behavior: optional(string)
                          match-pattern: object({
                            all: optional(object({}))
                            included-paths: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      method: optional(object({}))
                      query-string: optional(object({}))
                      single-header: optional(
                        object({
                          name: string
                        })
                      )
                      single-query-argument: optional(
                        object({
                          name: string
                        })
                      )
                      uri-fragment: optional(
                        object({
                          fallback-behavior: optional(string)
                        })
                      )
                      uri-path: optional(object({}))
                    })
                    text-transformations: list(
                      object({
                        priority: integer
                        type: string
                      })
                    )
                  })
                )
              })
            )
          })
        )
        asn-match-statement: optional(
          object({
            asn-list: list(integer)
            forwarded-ip-config: optional(
              object({
                fallback-behavior: string
                header-name: string
              })
            )
          })
        )
        byte-match-statement: optional(
          object({
            field-to-match: object({
              all-query-arguments: optional(object({}))
              body: optional(
                object({
                  oversize-handling: optional(string)
                })
              )
              cookies: optional(
                object({
                  match-pattern: object({
                    all: optional(object({}))
                    excluded-cookies: optional(list(string))
                    included-cookies: optional(list(string))
                  })
                  match-scope: string
                  oversize-handling: string
                })
              )
              header-order: optional(
                object({
                  oversize-handling: string
                })
              )
              headers: optional(
                object({
                  match-pattern: object({
                    all: optional(object({}))
                    excluded-headers: optional(list(string))
                    included-headers: optional(list(string))
                  })
                  match-scope: string
                  oversize-handling: string
                })
              )
              ja3-fingerprint: optional(
                object({
                  fallback-behavior: string
                })
              )
              ja4-fingerprint: optional(
                object({
                  fallback-behavior: string
                })
              )
              json-body: optional(
                object({
                  invalid-fallback-behavior: optional(string)
                  match-pattern: object({
                    all: optional(object({}))
                    included-paths: optional(list(string))
                  })
                  match-scope: string
                  oversize-handling: string
                })
              )
              method: optional(object({}))
              query-string: optional(object({}))
              single-header: optional(
                object({
                  name: string
                })
              )
              single-query-argument: optional(
                object({
                  name: string
                })
              )
              uri-fragment: optional(
                object({
                  fallback-behavior: optional(string)
                })
              )
              uri-path: optional(object({}))
            })
            positional-constraint: string
            search-string: optional(string)
            search-string-base64: optional(string)
            text-transformations: list(
              object({
                priority: integer
                type: string
              })
            )
          })
        )
        geo-match-statement: optional(
          object({
            country-codes: list(string)
            forwarded-ip-config: optional(
              object({
                fallback-behavior: string
                header-name: string
              })
            )
          })
        )
        ip-set-reference-statement: optional(
          object({
            arn: string
            ip-set-forwarded-ip-config: optional(
              object({
                fallback-behavior: string
                header-name: string
                position: string
              })
            )
          })
        )
        label-match-statement: optional(
          object({
            key: string
            scope: string
          })
        )
        managed-rule-group-statement: optional(
          object({
            excluded-rules: optional(
              list(
                object({
                  name: string
                })
              )
            )
            managed-rule-group-configs: optional(
              list(
                object({
                  aws-managed-rules-acfp-rule-set: optional(
                    object({
                      creation-path: string
                      enable-regex-in-path: optional(boolean)
                      registration-page-path: string
                      request-inspection: optional(
                        object({
                          address-fields: optional(
                            object({
                              identifiers: list(string)
                            })
                          )
                          email-field: optional(
                            object({
                              identifier: string
                            })
                          )
                          password-field: optional(
                            object({
                              identifier: string
                            })
                          )
                          payload-type: string
                          phone-number-fields: optional(
                            object({
                              identifiers: list(string)
                            })
                          )
                          username-field: optional(
                            object({
                              identifier: string
                            })
                          )
                        })
                      )
                      response-inspection: optional(
                        object({
                          body-contains: optional(
                            object({
                              failure-strings: optional(list(string))
                              success-strings: optional(list(string))
                            })
                          )
                          header: optional(
                            object({
                              failure-values: optional(list(string))
                              name: string
                              success-values: optional(list(string))
                            })
                          )
                          json: optional(
                            object({
                              failure-values: optional(list(string))
                              identifier: string
                              success-values: optional(list(string))
                            })
                          )
                          status-code: optional(
                            object({
                              failure-codes: optional(list(integer))
                              success-codes: optional(list(integer))
                            })
                          )
                        })
                      )
                    })
                  )
                  aws-managed-rules-atp-rule-set: optional(
                    object({
                      enable-regex-in-path: optional(boolean)
                      login-path: string
                      request-inspection: optional(
                        object({
                          password-field: optional(
                            object({
                              identifier: string
                            })
                          )
                          payload-type: string
                          username-field: optional(
                            object({
                              identifier: string
                            })
                          )
                        })
                      )
                      response-inspection: optional(
                        object({
                          body-contains: optional(
                            object({
                              failure-strings: optional(list(string))
                              success-strings: optional(list(string))
                            })
                          )
                          header: optional(
                            object({
                              failure-values: optional(list(string))
                              name: string
                              success-values: optional(list(string))
                            })
                          )
                          json: optional(
                            object({
                              failure-values: optional(list(string))
                              identifier: string
                              success-values: optional(list(string))
                            })
                          )
                          status-code: optional(
                            object({
                              failure-codes: optional(list(integer))
                              success-codes: optional(list(integer))
                            })
                          )
                        })
                      )
                    })
                  )
                  aws-managed-rules-anti-ddos-rule-set: optional(
                    object({
                      client-side-action-config: optional(
                        object({
                          challenge: optional(
                            object({
                              exempt-uri-regular-expressions: optional(
                                list(
                                  object({
                                    regex-string: string
                                  })
                                )
                              )
                              sensitivity: optional(string)
                              usage-of-action: string
                            })
                          )
                        })
                      )
                      sensitivity-to-block: optional(string)
                    })
                  )
                  aws-managed-rules-bot-control-rule-set: optional(
                    object({
                      enable-machine-learning: optional(boolean)
                      inspection-level: string
                    })
                  )
                  login-path: optional(string)
                  password-field: optional(
                    object({
                      identifier: string
                    })
                  )
                  payload-type: optional(string)
                  username-field: optional(
                    object({
                      identifier: string
                    })
                  )
                })
              )
            )
            name: string
            rule-action-overrides: optional(
              list(
                object({
                  action-to-use: object({
                    allow: optional(
                      object({
                        custom-request-handling: optional(
                          object({
                            insert-headers: list(
                              object({
                                name: string
                                value: string
                              })
                            )
                          })
                        )
                      })
                    )
                    block: optional(
                      object({
                        custom-response: optional(
                          object({
                            response-code: integer
                            custom-response-body-key: optional(string)
                            response-headers: optional(
                              list(
                                object({
                                  name: string
                                  value: string
                                })
                              )
                            )
                          })
                        )
                      })
                    )
                    captcha: optional(
                      object({
                        custom-request-handling: optional(
                          object({
                            insert-headers: list(
                              object({
                                name: string
                                value: string
                              })
                            )
                          })
                        )
                      })
                    )
                    challenge: optional(
                      object({
                        custom-request-handling: optional(
                          object({
                            insert-headers: list(
                              object({
                                name: string
                                value: string
                              })
                            )
                          })
                        )
                      })
                    )
                    count: optional(
                      object({
                        custom-request-handling: optional(
                          object({
                            insert-headers: list(
                              object({
                                name: string
                                value: string
                              })
                            )
                          })
                        )
                      })
                    )
                  })
                  name: string
                })
              )
            )
            scope-down-statement: optional(
              object({
                and-statement: optional(
                  object({
                    statements: list(
                      object({
                        and-statement: optional(
                          object({
                            statements: list(
                              object({
                                asn-match-statement: optional(
                                  object({
                                    asn-list: list(integer)
                                    forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                      })
                                    )
                                  })
                                )
                                byte-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    positional-constraint: string
                                    search-string: optional(string)
                                    search-string-base64: optional(string)
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                geo-match-statement: optional(
                                  object({
                                    country-codes: list(string)
                                    forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                      })
                                    )
                                  })
                                )
                                ip-set-reference-statement: optional(
                                  object({
                                    arn: string
                                    ip-set-forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                        position: string
                                      })
                                    )
                                  })
                                )
                                label-match-statement: optional(
                                  object({
                                    key: string
                                    scope: string
                                  })
                                )
                                regex-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    regex-string: string
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                regex-pattern-set-reference-statement: optional(
                                  object({
                                    arn: string
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                size-constraint-statement: optional(
                                  object({
                                    comparison-operator: string
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    size: integer
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                sqli-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    sensitivity-level: optional(string)
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                xss-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                              })
                            )
                          })
                        )
                        not-statement: optional(
                          object({
                            statement: object({
                              asn-match-statement: optional(
                                object({
                                  asn-list: list(integer)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              byte-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  positional-constraint: string
                                  search-string: optional(string)
                                  search-string-base64: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              geo-match-statement: optional(
                                object({
                                  country-codes: list(string)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              ip-set-reference-statement: optional(
                                object({
                                  arn: string
                                  ip-set-forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                      position: string
                                    })
                                  )
                                })
                              )
                              label-match-statement: optional(
                                object({
                                  key: string
                                  scope: string
                                })
                              )
                              regex-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  regex-string: string
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              regex-pattern-set-reference-statement: optional(
                                object({
                                  arn: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              size-constraint-statement: optional(
                                object({
                                  comparison-operator: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  size: integer
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              sqli-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  sensitivity-level: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              xss-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                            })
                          })
                        )
                        or-statement: optional(
                          object({
                            statements: list(
                              object({
                                asn-match-statement: optional(
                                  object({
                                    asn-list: list(integer)
                                    forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                      })
                                    )
                                  })
                                )
                                byte-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    positional-constraint: string
                                    search-string: optional(string)
                                    search-string-base64: optional(string)
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                geo-match-statement: optional(
                                  object({
                                    country-codes: list(string)
                                    forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                      })
                                    )
                                  })
                                )
                                ip-set-reference-statement: optional(
                                  object({
                                    arn: string
                                    ip-set-forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                        position: string
                                      })
                                    )
                                  })
                                )
                                label-match-statement: optional(
                                  object({
                                    key: string
                                    scope: string
                                  })
                                )
                                regex-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    regex-string: string
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                regex-pattern-set-reference-statement: optional(
                                  object({
                                    arn: string
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                size-constraint-statement: optional(
                                  object({
                                    comparison-operator: string
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    size: integer
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                sqli-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    sensitivity-level: optional(string)
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                xss-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                              })
                            )
                          })
                        )
                        asn-match-statement: optional(
                          object({
                            asn-list: list(integer)
                            forwarded-ip-config: optional(
                              object({
                                fallback-behavior: string
                                header-name: string
                              })
                            )
                          })
                        )
                        byte-match-statement: optional(
                          object({
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            positional-constraint: string
                            search-string: optional(string)
                            search-string-base64: optional(string)
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        geo-match-statement: optional(
                          object({
                            country-codes: list(string)
                            forwarded-ip-config: optional(
                              object({
                                fallback-behavior: string
                                header-name: string
                              })
                            )
                          })
                        )
                        ip-set-reference-statement: optional(
                          object({
                            arn: string
                            ip-set-forwarded-ip-config: optional(
                              object({
                                fallback-behavior: string
                                header-name: string
                                position: string
                              })
                            )
                          })
                        )
                        label-match-statement: optional(
                          object({
                            key: string
                            scope: string
                          })
                        )
                        regex-match-statement: optional(
                          object({
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            regex-string: string
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        regex-pattern-set-reference-statement: optional(
                          object({
                            arn: string
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        size-constraint-statement: optional(
                          object({
                            comparison-operator: string
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            size: integer
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        sqli-match-statement: optional(
                          object({
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            sensitivity-level: optional(string)
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        xss-match-statement: optional(
                          object({
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                      })
                    )
                  })
                )
                not-statement: optional(
                  object({
                    statement: object({
                      and-statement: optional(
                        object({
                          statements: list(
                            object({
                              asn-match-statement: optional(
                                object({
                                  asn-list: list(integer)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              byte-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  positional-constraint: string
                                  search-string: optional(string)
                                  search-string-base64: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              geo-match-statement: optional(
                                object({
                                  country-codes: list(string)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              ip-set-reference-statement: optional(
                                object({
                                  arn: string
                                  ip-set-forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                      position: string
                                    })
                                  )
                                })
                              )
                              label-match-statement: optional(
                                object({
                                  key: string
                                  scope: string
                                })
                              )
                              regex-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  regex-string: string
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              regex-pattern-set-reference-statement: optional(
                                object({
                                  arn: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              size-constraint-statement: optional(
                                object({
                                  comparison-operator: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  size: integer
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              sqli-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  sensitivity-level: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              xss-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                            })
                          )
                        })
                      )
                      not-statement: optional(
                        object({
                          statement: object({
                            asn-match-statement: optional(
                              object({
                                asn-list: list(integer)
                                forwarded-ip-config: optional(
                                  object({
                                    fallback-behavior: string
                                    header-name: string
                                  })
                                )
                              })
                            )
                            byte-match-statement: optional(
                              object({
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                positional-constraint: string
                                search-string: optional(string)
                                search-string-base64: optional(string)
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            geo-match-statement: optional(
                              object({
                                country-codes: list(string)
                                forwarded-ip-config: optional(
                                  object({
                                    fallback-behavior: string
                                    header-name: string
                                  })
                                )
                              })
                            )
                            ip-set-reference-statement: optional(
                              object({
                                arn: string
                                ip-set-forwarded-ip-config: optional(
                                  object({
                                    fallback-behavior: string
                                    header-name: string
                                    position: string
                                  })
                                )
                              })
                            )
                            label-match-statement: optional(
                              object({
                                key: string
                                scope: string
                              })
                            )
                            regex-match-statement: optional(
                              object({
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                regex-string: string
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            regex-pattern-set-reference-statement: optional(
                              object({
                                arn: string
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            size-constraint-statement: optional(
                              object({
                                comparison-operator: string
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                size: integer
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            sqli-match-statement: optional(
                              object({
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                sensitivity-level: optional(string)
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            xss-match-statement: optional(
                              object({
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                          })
                        })
                      )
                      or-statement: optional(
                        object({
                          statements: list(
                            object({
                              asn-match-statement: optional(
                                object({
                                  asn-list: list(integer)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              byte-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  positional-constraint: string
                                  search-string: optional(string)
                                  search-string-base64: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              geo-match-statement: optional(
                                object({
                                  country-codes: list(string)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              ip-set-reference-statement: optional(
                                object({
                                  arn: string
                                  ip-set-forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                      position: string
                                    })
                                  )
                                })
                              )
                              label-match-statement: optional(
                                object({
                                  key: string
                                  scope: string
                                })
                              )
                              regex-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  regex-string: string
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              regex-pattern-set-reference-statement: optional(
                                object({
                                  arn: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              size-constraint-statement: optional(
                                object({
                                  comparison-operator: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  size: integer
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              sqli-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  sensitivity-level: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              xss-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                            })
                          )
                        })
                      )
                      asn-match-statement: optional(
                        object({
                          asn-list: list(integer)
                          forwarded-ip-config: optional(
                            object({
                              fallback-behavior: string
                              header-name: string
                            })
                          )
                        })
                      )
                      byte-match-statement: optional(
                        object({
                          field-to-match: object({
                            all-query-arguments: optional(object({}))
                            body: optional(
                              object({
                                oversize-handling: optional(string)
                              })
                            )
                            cookies: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-cookies: optional(list(string))
                                  included-cookies: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            header-order: optional(
                              object({
                                oversize-handling: string
                              })
                            )
                            headers: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-headers: optional(list(string))
                                  included-headers: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            ja3-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            ja4-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            json-body: optional(
                              object({
                                invalid-fallback-behavior: optional(string)
                                match-pattern: object({
                                  all: optional(object({}))
                                  included-paths: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            method: optional(object({}))
                            query-string: optional(object({}))
                            single-header: optional(
                              object({
                                name: string
                              })
                            )
                            single-query-argument: optional(
                              object({
                                name: string
                              })
                            )
                            uri-fragment: optional(
                              object({
                                fallback-behavior: optional(string)
                              })
                            )
                            uri-path: optional(object({}))
                          })
                          positional-constraint: string
                          search-string: optional(string)
                          search-string-base64: optional(string)
                          text-transformations: list(
                            object({
                              priority: integer
                              type: string
                            })
                          )
                        })
                      )
                      geo-match-statement: optional(
                        object({
                          country-codes: list(string)
                          forwarded-ip-config: optional(
                            object({
                              fallback-behavior: string
                              header-name: string
                            })
                          )
                        })
                      )
                      ip-set-reference-statement: optional(
                        object({
                          arn: string
                          ip-set-forwarded-ip-config: optional(
                            object({
                              fallback-behavior: string
                              header-name: string
                              position: string
                            })
                          )
                        })
                      )
                      label-match-statement: optional(
                        object({
                          key: string
                          scope: string
                        })
                      )
                      regex-match-statement: optional(
                        object({
                          field-to-match: object({
                            all-query-arguments: optional(object({}))
                            body: optional(
                              object({
                                oversize-handling: optional(string)
                              })
                            )
                            cookies: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-cookies: optional(list(string))
                                  included-cookies: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            header-order: optional(
                              object({
                                oversize-handling: string
                              })
                            )
                            headers: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-headers: optional(list(string))
                                  included-headers: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            ja3-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            ja4-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            json-body: optional(
                              object({
                                invalid-fallback-behavior: optional(string)
                                match-pattern: object({
                                  all: optional(object({}))
                                  included-paths: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            method: optional(object({}))
                            query-string: optional(object({}))
                            single-header: optional(
                              object({
                                name: string
                              })
                            )
                            single-query-argument: optional(
                              object({
                                name: string
                              })
                            )
                            uri-fragment: optional(
                              object({
                                fallback-behavior: optional(string)
                              })
                            )
                            uri-path: optional(object({}))
                          })
                          regex-string: string
                          text-transformations: list(
                            object({
                              priority: integer
                              type: string
                            })
                          )
                        })
                      )
                      regex-pattern-set-reference-statement: optional(
                        object({
                          arn: string
                          field-to-match: object({
                            all-query-arguments: optional(object({}))
                            body: optional(
                              object({
                                oversize-handling: optional(string)
                              })
                            )
                            cookies: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-cookies: optional(list(string))
                                  included-cookies: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            header-order: optional(
                              object({
                                oversize-handling: string
                              })
                            )
                            headers: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-headers: optional(list(string))
                                  included-headers: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            ja3-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            ja4-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            json-body: optional(
                              object({
                                invalid-fallback-behavior: optional(string)
                                match-pattern: object({
                                  all: optional(object({}))
                                  included-paths: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            method: optional(object({}))
                            query-string: optional(object({}))
                            single-header: optional(
                              object({
                                name: string
                              })
                            )
                            single-query-argument: optional(
                              object({
                                name: string
                              })
                            )
                            uri-fragment: optional(
                              object({
                                fallback-behavior: optional(string)
                              })
                            )
                            uri-path: optional(object({}))
                          })
                          text-transformations: list(
                            object({
                              priority: integer
                              type: string
                            })
                          )
                        })
                      )
                      size-constraint-statement: optional(
                        object({
                          comparison-operator: string
                          field-to-match: object({
                            all-query-arguments: optional(object({}))
                            body: optional(
                              object({
                                oversize-handling: optional(string)
                              })
                            )
                            cookies: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-cookies: optional(list(string))
                                  included-cookies: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            header-order: optional(
                              object({
                                oversize-handling: string
                              })
                            )
                            headers: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-headers: optional(list(string))
                                  included-headers: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            ja3-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            ja4-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            json-body: optional(
                              object({
                                invalid-fallback-behavior: optional(string)
                                match-pattern: object({
                                  all: optional(object({}))
                                  included-paths: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            method: optional(object({}))
                            query-string: optional(object({}))
                            single-header: optional(
                              object({
                                name: string
                              })
                            )
                            single-query-argument: optional(
                              object({
                                name: string
                              })
                            )
                            uri-fragment: optional(
                              object({
                                fallback-behavior: optional(string)
                              })
                            )
                            uri-path: optional(object({}))
                          })
                          size: integer
                          text-transformations: list(
                            object({
                              priority: integer
                              type: string
                            })
                          )
                        })
                      )
                      sqli-match-statement: optional(
                        object({
                          field-to-match: object({
                            all-query-arguments: optional(object({}))
                            body: optional(
                              object({
                                oversize-handling: optional(string)
                              })
                            )
                            cookies: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-cookies: optional(list(string))
                                  included-cookies: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            header-order: optional(
                              object({
                                oversize-handling: string
                              })
                            )
                            headers: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-headers: optional(list(string))
                                  included-headers: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            ja3-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            ja4-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            json-body: optional(
                              object({
                                invalid-fallback-behavior: optional(string)
                                match-pattern: object({
                                  all: optional(object({}))
                                  included-paths: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            method: optional(object({}))
                            query-string: optional(object({}))
                            single-header: optional(
                              object({
                                name: string
                              })
                            )
                            single-query-argument: optional(
                              object({
                                name: string
                              })
                            )
                            uri-fragment: optional(
                              object({
                                fallback-behavior: optional(string)
                              })
                            )
                            uri-path: optional(object({}))
                          })
                          sensitivity-level: optional(string)
                          text-transformations: list(
                            object({
                              priority: integer
                              type: string
                            })
                          )
                        })
                      )
                      xss-match-statement: optional(
                        object({
                          field-to-match: object({
                            all-query-arguments: optional(object({}))
                            body: optional(
                              object({
                                oversize-handling: optional(string)
                              })
                            )
                            cookies: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-cookies: optional(list(string))
                                  included-cookies: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            header-order: optional(
                              object({
                                oversize-handling: string
                              })
                            )
                            headers: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-headers: optional(list(string))
                                  included-headers: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            ja3-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            ja4-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            json-body: optional(
                              object({
                                invalid-fallback-behavior: optional(string)
                                match-pattern: object({
                                  all: optional(object({}))
                                  included-paths: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            method: optional(object({}))
                            query-string: optional(object({}))
                            single-header: optional(
                              object({
                                name: string
                              })
                            )
                            single-query-argument: optional(
                              object({
                                name: string
                              })
                            )
                            uri-fragment: optional(
                              object({
                                fallback-behavior: optional(string)
                              })
                            )
                            uri-path: optional(object({}))
                          })
                          text-transformations: list(
                            object({
                              priority: integer
                              type: string
                            })
                          )
                        })
                      )
                    })
                  })
                )
                or-statement: optional(
                  object({
                    statements: list(
                      object({
                        and-statement: optional(
                          object({
                            statements: list(
                              object({
                                asn-match-statement: optional(
                                  object({
                                    asn-list: list(integer)
                                    forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                      })
                                    )
                                  })
                                )
                                byte-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    positional-constraint: string
                                    search-string: optional(string)
                                    search-string-base64: optional(string)
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                geo-match-statement: optional(
                                  object({
                                    country-codes: list(string)
                                    forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                      })
                                    )
                                  })
                                )
                                ip-set-reference-statement: optional(
                                  object({
                                    arn: string
                                    ip-set-forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                        position: string
                                      })
                                    )
                                  })
                                )
                                label-match-statement: optional(
                                  object({
                                    key: string
                                    scope: string
                                  })
                                )
                                regex-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    regex-string: string
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                regex-pattern-set-reference-statement: optional(
                                  object({
                                    arn: string
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                size-constraint-statement: optional(
                                  object({
                                    comparison-operator: string
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    size: integer
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                sqli-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    sensitivity-level: optional(string)
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                xss-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                              })
                            )
                          })
                        )
                        not-statement: optional(
                          object({
                            statement: object({
                              asn-match-statement: optional(
                                object({
                                  asn-list: list(integer)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              byte-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  positional-constraint: string
                                  search-string: optional(string)
                                  search-string-base64: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              geo-match-statement: optional(
                                object({
                                  country-codes: list(string)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              ip-set-reference-statement: optional(
                                object({
                                  arn: string
                                  ip-set-forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                      position: string
                                    })
                                  )
                                })
                              )
                              label-match-statement: optional(
                                object({
                                  key: string
                                  scope: string
                                })
                              )
                              regex-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  regex-string: string
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              regex-pattern-set-reference-statement: optional(
                                object({
                                  arn: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              size-constraint-statement: optional(
                                object({
                                  comparison-operator: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  size: integer
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              sqli-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  sensitivity-level: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              xss-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                            })
                          })
                        )
                        or-statement: optional(
                          object({
                            statements: list(
                              object({
                                asn-match-statement: optional(
                                  object({
                                    asn-list: list(integer)
                                    forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                      })
                                    )
                                  })
                                )
                                byte-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    positional-constraint: string
                                    search-string: optional(string)
                                    search-string-base64: optional(string)
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                geo-match-statement: optional(
                                  object({
                                    country-codes: list(string)
                                    forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                      })
                                    )
                                  })
                                )
                                ip-set-reference-statement: optional(
                                  object({
                                    arn: string
                                    ip-set-forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                        position: string
                                      })
                                    )
                                  })
                                )
                                label-match-statement: optional(
                                  object({
                                    key: string
                                    scope: string
                                  })
                                )
                                regex-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    regex-string: string
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                regex-pattern-set-reference-statement: optional(
                                  object({
                                    arn: string
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                size-constraint-statement: optional(
                                  object({
                                    comparison-operator: string
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    size: integer
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                sqli-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    sensitivity-level: optional(string)
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                xss-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                              })
                            )
                          })
                        )
                        asn-match-statement: optional(
                          object({
                            asn-list: list(integer)
                            forwarded-ip-config: optional(
                              object({
                                fallback-behavior: string
                                header-name: string
                              })
                            )
                          })
                        )
                        byte-match-statement: optional(
                          object({
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            positional-constraint: string
                            search-string: optional(string)
                            search-string-base64: optional(string)
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        geo-match-statement: optional(
                          object({
                            country-codes: list(string)
                            forwarded-ip-config: optional(
                              object({
                                fallback-behavior: string
                                header-name: string
                              })
                            )
                          })
                        )
                        ip-set-reference-statement: optional(
                          object({
                            arn: string
                            ip-set-forwarded-ip-config: optional(
                              object({
                                fallback-behavior: string
                                header-name: string
                                position: string
                              })
                            )
                          })
                        )
                        label-match-statement: optional(
                          object({
                            key: string
                            scope: string
                          })
                        )
                        regex-match-statement: optional(
                          object({
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            regex-string: string
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        regex-pattern-set-reference-statement: optional(
                          object({
                            arn: string
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        size-constraint-statement: optional(
                          object({
                            comparison-operator: string
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            size: integer
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        sqli-match-statement: optional(
                          object({
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            sensitivity-level: optional(string)
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        xss-match-statement: optional(
                          object({
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                      })
                    )
                  })
                )
                asn-match-statement: optional(
                  object({
                    asn-list: list(integer)
                    forwarded-ip-config: optional(
                      object({
                        fallback-behavior: string
                        header-name: string
                      })
                    )
                  })
                )
                byte-match-statement: optional(
                  object({
                    field-to-match: object({
                      all-query-arguments: optional(object({}))
                      body: optional(
                        object({
                          oversize-handling: optional(string)
                        })
                      )
                      cookies: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-cookies: optional(list(string))
                            included-cookies: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      header-order: optional(
                        object({
                          oversize-handling: string
                        })
                      )
                      headers: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-headers: optional(list(string))
                            included-headers: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      ja3-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      ja4-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      json-body: optional(
                        object({
                          invalid-fallback-behavior: optional(string)
                          match-pattern: object({
                            all: optional(object({}))
                            included-paths: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      method: optional(object({}))
                      query-string: optional(object({}))
                      single-header: optional(
                        object({
                          name: string
                        })
                      )
                      single-query-argument: optional(
                        object({
                          name: string
                        })
                      )
                      uri-fragment: optional(
                        object({
                          fallback-behavior: optional(string)
                        })
                      )
                      uri-path: optional(object({}))
                    })
                    positional-constraint: string
                    search-string: optional(string)
                    search-string-base64: optional(string)
                    text-transformations: list(
                      object({
                        priority: integer
                        type: string
                      })
                    )
                  })
                )
                geo-match-statement: optional(
                  object({
                    country-codes: list(string)
                    forwarded-ip-config: optional(
                      object({
                        fallback-behavior: string
                        header-name: string
                      })
                    )
                  })
                )
                ip-set-reference-statement: optional(
                  object({
                    arn: string
                    ip-set-forwarded-ip-config: optional(
                      object({
                        fallback-behavior: string
                        header-name: string
                        position: string
                      })
                    )
                  })
                )
                label-match-statement: optional(
                  object({
                    key: string
                    scope: string
                  })
                )
                regex-match-statement: optional(
                  object({
                    field-to-match: object({
                      all-query-arguments: optional(object({}))
                      body: optional(
                        object({
                          oversize-handling: optional(string)
                        })
                      )
                      cookies: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-cookies: optional(list(string))
                            included-cookies: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      header-order: optional(
                        object({
                          oversize-handling: string
                        })
                      )
                      headers: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-headers: optional(list(string))
                            included-headers: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      ja3-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      ja4-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      json-body: optional(
                        object({
                          invalid-fallback-behavior: optional(string)
                          match-pattern: object({
                            all: optional(object({}))
                            included-paths: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      method: optional(object({}))
                      query-string: optional(object({}))
                      single-header: optional(
                        object({
                          name: string
                        })
                      )
                      single-query-argument: optional(
                        object({
                          name: string
                        })
                      )
                      uri-fragment: optional(
                        object({
                          fallback-behavior: optional(string)
                        })
                      )
                      uri-path: optional(object({}))
                    })
                    regex-string: string
                    text-transformations: list(
                      object({
                        priority: integer
                        type: string
                      })
                    )
                  })
                )
                regex-pattern-set-reference-statement: optional(
                  object({
                    arn: string
                    field-to-match: object({
                      all-query-arguments: optional(object({}))
                      body: optional(
                        object({
                          oversize-handling: optional(string)
                        })
                      )
                      cookies: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-cookies: optional(list(string))
                            included-cookies: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      header-order: optional(
                        object({
                          oversize-handling: string
                        })
                      )
                      headers: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-headers: optional(list(string))
                            included-headers: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      ja3-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      ja4-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      json-body: optional(
                        object({
                          invalid-fallback-behavior: optional(string)
                          match-pattern: object({
                            all: optional(object({}))
                            included-paths: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      method: optional(object({}))
                      query-string: optional(object({}))
                      single-header: optional(
                        object({
                          name: string
                        })
                      )
                      single-query-argument: optional(
                        object({
                          name: string
                        })
                      )
                      uri-fragment: optional(
                        object({
                          fallback-behavior: optional(string)
                        })
                      )
                      uri-path: optional(object({}))
                    })
                    text-transformations: list(
                      object({
                        priority: integer
                        type: string
                      })
                    )
                  })
                )
                size-constraint-statement: optional(
                  object({
                    comparison-operator: string
                    field-to-match: object({
                      all-query-arguments: optional(object({}))
                      body: optional(
                        object({
                          oversize-handling: optional(string)
                        })
                      )
                      cookies: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-cookies: optional(list(string))
                            included-cookies: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      header-order: optional(
                        object({
                          oversize-handling: string
                        })
                      )
                      headers: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-headers: optional(list(string))
                            included-headers: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      ja3-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      ja4-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      json-body: optional(
                        object({
                          invalid-fallback-behavior: optional(string)
                          match-pattern: object({
                            all: optional(object({}))
                            included-paths: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      method: optional(object({}))
                      query-string: optional(object({}))
                      single-header: optional(
                        object({
                          name: string
                        })
                      )
                      single-query-argument: optional(
                        object({
                          name: string
                        })
                      )
                      uri-fragment: optional(
                        object({
                          fallback-behavior: optional(string)
                        })
                      )
                      uri-path: optional(object({}))
                    })
                    size: integer
                    text-transformations: list(
                      object({
                        priority: integer
                        type: string
                      })
                    )
                  })
                )
                sqli-match-statement: optional(
                  object({
                    field-to-match: object({
                      all-query-arguments: optional(object({}))
                      body: optional(
                        object({
                          oversize-handling: optional(string)
                        })
                      )
                      cookies: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-cookies: optional(list(string))
                            included-cookies: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      header-order: optional(
                        object({
                          oversize-handling: string
                        })
                      )
                      headers: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-headers: optional(list(string))
                            included-headers: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      ja3-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      ja4-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      json-body: optional(
                        object({
                          invalid-fallback-behavior: optional(string)
                          match-pattern: object({
                            all: optional(object({}))
                            included-paths: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      method: optional(object({}))
                      query-string: optional(object({}))
                      single-header: optional(
                        object({
                          name: string
                        })
                      )
                      single-query-argument: optional(
                        object({
                          name: string
                        })
                      )
                      uri-fragment: optional(
                        object({
                          fallback-behavior: optional(string)
                        })
                      )
                      uri-path: optional(object({}))
                    })
                    sensitivity-level: optional(string)
                    text-transformations: list(
                      object({
                        priority: integer
                        type: string
                      })
                    )
                  })
                )
                xss-match-statement: optional(
                  object({
                    field-to-match: object({
                      all-query-arguments: optional(object({}))
                      body: optional(
                        object({
                          oversize-handling: optional(string)
                        })
                      )
                      cookies: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-cookies: optional(list(string))
                            included-cookies: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      header-order: optional(
                        object({
                          oversize-handling: string
                        })
                      )
                      headers: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-headers: optional(list(string))
                            included-headers: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      ja3-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      ja4-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      json-body: optional(
                        object({
                          invalid-fallback-behavior: optional(string)
                          match-pattern: object({
                            all: optional(object({}))
                            included-paths: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      method: optional(object({}))
                      query-string: optional(object({}))
                      single-header: optional(
                        object({
                          name: string
                        })
                      )
                      single-query-argument: optional(
                        object({
                          name: string
                        })
                      )
                      uri-fragment: optional(
                        object({
                          fallback-behavior: optional(string)
                        })
                      )
                      uri-path: optional(object({}))
                    })
                    text-transformations: list(
                      object({
                        priority: integer
                        type: string
                      })
                    )
                  })
                )
              })
            )
            vendor-name: string
            version: optional(string)
          })
        )
        rate-based-statement: optional(
          object({
            aggregate-key-type: string
            custom-keys: optional(
              list(
                object({
                  asn: optional(object({}))
                  cookie: optional(
                    object({
                      name: string
                      text-transformations: list(
                        object({
                          priority: integer
                          type: string
                        })
                      )
                    })
                  )
                  forwarded-ip: optional(object({}))
                  http-method: optional(object({}))
                  header: optional(
                    object({
                      name: string
                      text-transformations: list(
                        object({
                          priority: integer
                          type: string
                        })
                      )
                    })
                  )
                  ip: optional(object({}))
                  ja3-fingerprint: optional(
                    object({
                      fallback-behavior: string
                    })
                  )
                  ja4-fingerprint: optional(
                    object({
                      fallback-behavior: string
                    })
                  )
                  label-namespace: optional(
                    object({
                      namespace: string
                    })
                  )
                  query-argument: optional(
                    object({
                      name: string
                      text-transformations: list(
                        object({
                          priority: integer
                          type: string
                        })
                      )
                    })
                  )
                  query-string: optional(
                    object({
                      text-transformations: list(
                        object({
                          priority: integer
                          type: string
                        })
                      )
                    })
                  )
                  uri-path: optional(
                    object({
                      text-transformations: list(
                        object({
                          priority: integer
                          type: string
                        })
                      )
                    })
                  )
                })
              )
            )
            evaluation-window-sec: optional(integer)
            forwarded-ip-config: optional(
              object({
                fallback-behavior: string
                header-name: string
              })
            )
            limit: integer
            scope-down-statement: optional(
              object({
                and-statement: optional(
                  object({
                    statements: list(
                      object({
                        and-statement: optional(
                          object({
                            statements: list(
                              object({
                                asn-match-statement: optional(
                                  object({
                                    asn-list: list(integer)
                                    forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                      })
                                    )
                                  })
                                )
                                byte-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    positional-constraint: string
                                    search-string: optional(string)
                                    search-string-base64: optional(string)
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                geo-match-statement: optional(
                                  object({
                                    country-codes: list(string)
                                    forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                      })
                                    )
                                  })
                                )
                                ip-set-reference-statement: optional(
                                  object({
                                    arn: string
                                    ip-set-forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                        position: string
                                      })
                                    )
                                  })
                                )
                                label-match-statement: optional(
                                  object({
                                    key: string
                                    scope: string
                                  })
                                )
                                regex-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    regex-string: string
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                regex-pattern-set-reference-statement: optional(
                                  object({
                                    arn: string
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                size-constraint-statement: optional(
                                  object({
                                    comparison-operator: string
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    size: integer
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                sqli-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    sensitivity-level: optional(string)
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                xss-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                              })
                            )
                          })
                        )
                        not-statement: optional(
                          object({
                            statement: object({
                              asn-match-statement: optional(
                                object({
                                  asn-list: list(integer)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              byte-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  positional-constraint: string
                                  search-string: optional(string)
                                  search-string-base64: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              geo-match-statement: optional(
                                object({
                                  country-codes: list(string)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              ip-set-reference-statement: optional(
                                object({
                                  arn: string
                                  ip-set-forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                      position: string
                                    })
                                  )
                                })
                              )
                              label-match-statement: optional(
                                object({
                                  key: string
                                  scope: string
                                })
                              )
                              regex-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  regex-string: string
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              regex-pattern-set-reference-statement: optional(
                                object({
                                  arn: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              size-constraint-statement: optional(
                                object({
                                  comparison-operator: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  size: integer
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              sqli-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  sensitivity-level: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              xss-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                            })
                          })
                        )
                        or-statement: optional(
                          object({
                            statements: list(
                              object({
                                asn-match-statement: optional(
                                  object({
                                    asn-list: list(integer)
                                    forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                      })
                                    )
                                  })
                                )
                                byte-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    positional-constraint: string
                                    search-string: optional(string)
                                    search-string-base64: optional(string)
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                geo-match-statement: optional(
                                  object({
                                    country-codes: list(string)
                                    forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                      })
                                    )
                                  })
                                )
                                ip-set-reference-statement: optional(
                                  object({
                                    arn: string
                                    ip-set-forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                        position: string
                                      })
                                    )
                                  })
                                )
                                label-match-statement: optional(
                                  object({
                                    key: string
                                    scope: string
                                  })
                                )
                                regex-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    regex-string: string
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                regex-pattern-set-reference-statement: optional(
                                  object({
                                    arn: string
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                size-constraint-statement: optional(
                                  object({
                                    comparison-operator: string
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    size: integer
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                sqli-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    sensitivity-level: optional(string)
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                xss-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                              })
                            )
                          })
                        )
                        asn-match-statement: optional(
                          object({
                            asn-list: list(integer)
                            forwarded-ip-config: optional(
                              object({
                                fallback-behavior: string
                                header-name: string
                              })
                            )
                          })
                        )
                        byte-match-statement: optional(
                          object({
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            positional-constraint: string
                            search-string: optional(string)
                            search-string-base64: optional(string)
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        geo-match-statement: optional(
                          object({
                            country-codes: list(string)
                            forwarded-ip-config: optional(
                              object({
                                fallback-behavior: string
                                header-name: string
                              })
                            )
                          })
                        )
                        ip-set-reference-statement: optional(
                          object({
                            arn: string
                            ip-set-forwarded-ip-config: optional(
                              object({
                                fallback-behavior: string
                                header-name: string
                                position: string
                              })
                            )
                          })
                        )
                        label-match-statement: optional(
                          object({
                            key: string
                            scope: string
                          })
                        )
                        regex-match-statement: optional(
                          object({
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            regex-string: string
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        regex-pattern-set-reference-statement: optional(
                          object({
                            arn: string
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        size-constraint-statement: optional(
                          object({
                            comparison-operator: string
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            size: integer
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        sqli-match-statement: optional(
                          object({
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            sensitivity-level: optional(string)
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        xss-match-statement: optional(
                          object({
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                      })
                    )
                  })
                )
                not-statement: optional(
                  object({
                    statement: object({
                      and-statement: optional(
                        object({
                          statements: list(
                            object({
                              asn-match-statement: optional(
                                object({
                                  asn-list: list(integer)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              byte-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  positional-constraint: string
                                  search-string: optional(string)
                                  search-string-base64: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              geo-match-statement: optional(
                                object({
                                  country-codes: list(string)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              ip-set-reference-statement: optional(
                                object({
                                  arn: string
                                  ip-set-forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                      position: string
                                    })
                                  )
                                })
                              )
                              label-match-statement: optional(
                                object({
                                  key: string
                                  scope: string
                                })
                              )
                              regex-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  regex-string: string
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              regex-pattern-set-reference-statement: optional(
                                object({
                                  arn: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              size-constraint-statement: optional(
                                object({
                                  comparison-operator: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  size: integer
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              sqli-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  sensitivity-level: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              xss-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                            })
                          )
                        })
                      )
                      not-statement: optional(
                        object({
                          statement: object({
                            asn-match-statement: optional(
                              object({
                                asn-list: list(integer)
                                forwarded-ip-config: optional(
                                  object({
                                    fallback-behavior: string
                                    header-name: string
                                  })
                                )
                              })
                            )
                            byte-match-statement: optional(
                              object({
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                positional-constraint: string
                                search-string: optional(string)
                                search-string-base64: optional(string)
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            geo-match-statement: optional(
                              object({
                                country-codes: list(string)
                                forwarded-ip-config: optional(
                                  object({
                                    fallback-behavior: string
                                    header-name: string
                                  })
                                )
                              })
                            )
                            ip-set-reference-statement: optional(
                              object({
                                arn: string
                                ip-set-forwarded-ip-config: optional(
                                  object({
                                    fallback-behavior: string
                                    header-name: string
                                    position: string
                                  })
                                )
                              })
                            )
                            label-match-statement: optional(
                              object({
                                key: string
                                scope: string
                              })
                            )
                            regex-match-statement: optional(
                              object({
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                regex-string: string
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            regex-pattern-set-reference-statement: optional(
                              object({
                                arn: string
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            size-constraint-statement: optional(
                              object({
                                comparison-operator: string
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                size: integer
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            sqli-match-statement: optional(
                              object({
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                sensitivity-level: optional(string)
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                            xss-match-statement: optional(
                              object({
                                field-to-match: object({
                                  all-query-arguments: optional(object({}))
                                  body: optional(
                                    object({
                                      oversize-handling: optional(string)
                                    })
                                  )
                                  cookies: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-cookies: optional(list(string))
                                        included-cookies: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  header-order: optional(
                                    object({
                                      oversize-handling: string
                                    })
                                  )
                                  headers: optional(
                                    object({
                                      match-pattern: object({
                                        all: optional(object({}))
                                        excluded-headers: optional(list(string))
                                        included-headers: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  ja3-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  ja4-fingerprint: optional(
                                    object({
                                      fallback-behavior: string
                                    })
                                  )
                                  json-body: optional(
                                    object({
                                      invalid-fallback-behavior: optional(string)
                                      match-pattern: object({
                                        all: optional(object({}))
                                        included-paths: optional(list(string))
                                      })
                                      match-scope: string
                                      oversize-handling: string
                                    })
                                  )
                                  method: optional(object({}))
                                  query-string: optional(object({}))
                                  single-header: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  single-query-argument: optional(
                                    object({
                                      name: string
                                    })
                                  )
                                  uri-fragment: optional(
                                    object({
                                      fallback-behavior: optional(string)
                                    })
                                  )
                                  uri-path: optional(object({}))
                                })
                                text-transformations: list(
                                  object({
                                    priority: integer
                                    type: string
                                  })
                                )
                              })
                            )
                          })
                        })
                      )
                      or-statement: optional(
                        object({
                          statements: list(
                            object({
                              asn-match-statement: optional(
                                object({
                                  asn-list: list(integer)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              byte-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  positional-constraint: string
                                  search-string: optional(string)
                                  search-string-base64: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              geo-match-statement: optional(
                                object({
                                  country-codes: list(string)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              ip-set-reference-statement: optional(
                                object({
                                  arn: string
                                  ip-set-forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                      position: string
                                    })
                                  )
                                })
                              )
                              label-match-statement: optional(
                                object({
                                  key: string
                                  scope: string
                                })
                              )
                              regex-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  regex-string: string
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              regex-pattern-set-reference-statement: optional(
                                object({
                                  arn: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              size-constraint-statement: optional(
                                object({
                                  comparison-operator: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  size: integer
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              sqli-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  sensitivity-level: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              xss-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                            })
                          )
                        })
                      )
                      asn-match-statement: optional(
                        object({
                          asn-list: list(integer)
                          forwarded-ip-config: optional(
                            object({
                              fallback-behavior: string
                              header-name: string
                            })
                          )
                        })
                      )
                      byte-match-statement: optional(
                        object({
                          field-to-match: object({
                            all-query-arguments: optional(object({}))
                            body: optional(
                              object({
                                oversize-handling: optional(string)
                              })
                            )
                            cookies: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-cookies: optional(list(string))
                                  included-cookies: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            header-order: optional(
                              object({
                                oversize-handling: string
                              })
                            )
                            headers: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-headers: optional(list(string))
                                  included-headers: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            ja3-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            ja4-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            json-body: optional(
                              object({
                                invalid-fallback-behavior: optional(string)
                                match-pattern: object({
                                  all: optional(object({}))
                                  included-paths: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            method: optional(object({}))
                            query-string: optional(object({}))
                            single-header: optional(
                              object({
                                name: string
                              })
                            )
                            single-query-argument: optional(
                              object({
                                name: string
                              })
                            )
                            uri-fragment: optional(
                              object({
                                fallback-behavior: optional(string)
                              })
                            )
                            uri-path: optional(object({}))
                          })
                          positional-constraint: string
                          search-string: optional(string)
                          search-string-base64: optional(string)
                          text-transformations: list(
                            object({
                              priority: integer
                              type: string
                            })
                          )
                        })
                      )
                      geo-match-statement: optional(
                        object({
                          country-codes: list(string)
                          forwarded-ip-config: optional(
                            object({
                              fallback-behavior: string
                              header-name: string
                            })
                          )
                        })
                      )
                      ip-set-reference-statement: optional(
                        object({
                          arn: string
                          ip-set-forwarded-ip-config: optional(
                            object({
                              fallback-behavior: string
                              header-name: string
                              position: string
                            })
                          )
                        })
                      )
                      label-match-statement: optional(
                        object({
                          key: string
                          scope: string
                        })
                      )
                      regex-match-statement: optional(
                        object({
                          field-to-match: object({
                            all-query-arguments: optional(object({}))
                            body: optional(
                              object({
                                oversize-handling: optional(string)
                              })
                            )
                            cookies: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-cookies: optional(list(string))
                                  included-cookies: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            header-order: optional(
                              object({
                                oversize-handling: string
                              })
                            )
                            headers: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-headers: optional(list(string))
                                  included-headers: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            ja3-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            ja4-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            json-body: optional(
                              object({
                                invalid-fallback-behavior: optional(string)
                                match-pattern: object({
                                  all: optional(object({}))
                                  included-paths: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            method: optional(object({}))
                            query-string: optional(object({}))
                            single-header: optional(
                              object({
                                name: string
                              })
                            )
                            single-query-argument: optional(
                              object({
                                name: string
                              })
                            )
                            uri-fragment: optional(
                              object({
                                fallback-behavior: optional(string)
                              })
                            )
                            uri-path: optional(object({}))
                          })
                          regex-string: string
                          text-transformations: list(
                            object({
                              priority: integer
                              type: string
                            })
                          )
                        })
                      )
                      regex-pattern-set-reference-statement: optional(
                        object({
                          arn: string
                          field-to-match: object({
                            all-query-arguments: optional(object({}))
                            body: optional(
                              object({
                                oversize-handling: optional(string)
                              })
                            )
                            cookies: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-cookies: optional(list(string))
                                  included-cookies: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            header-order: optional(
                              object({
                                oversize-handling: string
                              })
                            )
                            headers: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-headers: optional(list(string))
                                  included-headers: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            ja3-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            ja4-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            json-body: optional(
                              object({
                                invalid-fallback-behavior: optional(string)
                                match-pattern: object({
                                  all: optional(object({}))
                                  included-paths: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            method: optional(object({}))
                            query-string: optional(object({}))
                            single-header: optional(
                              object({
                                name: string
                              })
                            )
                            single-query-argument: optional(
                              object({
                                name: string
                              })
                            )
                            uri-fragment: optional(
                              object({
                                fallback-behavior: optional(string)
                              })
                            )
                            uri-path: optional(object({}))
                          })
                          text-transformations: list(
                            object({
                              priority: integer
                              type: string
                            })
                          )
                        })
                      )
                      size-constraint-statement: optional(
                        object({
                          comparison-operator: string
                          field-to-match: object({
                            all-query-arguments: optional(object({}))
                            body: optional(
                              object({
                                oversize-handling: optional(string)
                              })
                            )
                            cookies: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-cookies: optional(list(string))
                                  included-cookies: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            header-order: optional(
                              object({
                                oversize-handling: string
                              })
                            )
                            headers: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-headers: optional(list(string))
                                  included-headers: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            ja3-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            ja4-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            json-body: optional(
                              object({
                                invalid-fallback-behavior: optional(string)
                                match-pattern: object({
                                  all: optional(object({}))
                                  included-paths: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            method: optional(object({}))
                            query-string: optional(object({}))
                            single-header: optional(
                              object({
                                name: string
                              })
                            )
                            single-query-argument: optional(
                              object({
                                name: string
                              })
                            )
                            uri-fragment: optional(
                              object({
                                fallback-behavior: optional(string)
                              })
                            )
                            uri-path: optional(object({}))
                          })
                          size: integer
                          text-transformations: list(
                            object({
                              priority: integer
                              type: string
                            })
                          )
                        })
                      )
                      sqli-match-statement: optional(
                        object({
                          field-to-match: object({
                            all-query-arguments: optional(object({}))
                            body: optional(
                              object({
                                oversize-handling: optional(string)
                              })
                            )
                            cookies: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-cookies: optional(list(string))
                                  included-cookies: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            header-order: optional(
                              object({
                                oversize-handling: string
                              })
                            )
                            headers: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-headers: optional(list(string))
                                  included-headers: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            ja3-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            ja4-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            json-body: optional(
                              object({
                                invalid-fallback-behavior: optional(string)
                                match-pattern: object({
                                  all: optional(object({}))
                                  included-paths: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            method: optional(object({}))
                            query-string: optional(object({}))
                            single-header: optional(
                              object({
                                name: string
                              })
                            )
                            single-query-argument: optional(
                              object({
                                name: string
                              })
                            )
                            uri-fragment: optional(
                              object({
                                fallback-behavior: optional(string)
                              })
                            )
                            uri-path: optional(object({}))
                          })
                          sensitivity-level: optional(string)
                          text-transformations: list(
                            object({
                              priority: integer
                              type: string
                            })
                          )
                        })
                      )
                      xss-match-statement: optional(
                        object({
                          field-to-match: object({
                            all-query-arguments: optional(object({}))
                            body: optional(
                              object({
                                oversize-handling: optional(string)
                              })
                            )
                            cookies: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-cookies: optional(list(string))
                                  included-cookies: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            header-order: optional(
                              object({
                                oversize-handling: string
                              })
                            )
                            headers: optional(
                              object({
                                match-pattern: object({
                                  all: optional(object({}))
                                  excluded-headers: optional(list(string))
                                  included-headers: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            ja3-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            ja4-fingerprint: optional(
                              object({
                                fallback-behavior: string
                              })
                            )
                            json-body: optional(
                              object({
                                invalid-fallback-behavior: optional(string)
                                match-pattern: object({
                                  all: optional(object({}))
                                  included-paths: optional(list(string))
                                })
                                match-scope: string
                                oversize-handling: string
                              })
                            )
                            method: optional(object({}))
                            query-string: optional(object({}))
                            single-header: optional(
                              object({
                                name: string
                              })
                            )
                            single-query-argument: optional(
                              object({
                                name: string
                              })
                            )
                            uri-fragment: optional(
                              object({
                                fallback-behavior: optional(string)
                              })
                            )
                            uri-path: optional(object({}))
                          })
                          text-transformations: list(
                            object({
                              priority: integer
                              type: string
                            })
                          )
                        })
                      )
                    })
                  })
                )
                or-statement: optional(
                  object({
                    statements: list(
                      object({
                        and-statement: optional(
                          object({
                            statements: list(
                              object({
                                asn-match-statement: optional(
                                  object({
                                    asn-list: list(integer)
                                    forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                      })
                                    )
                                  })
                                )
                                byte-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    positional-constraint: string
                                    search-string: optional(string)
                                    search-string-base64: optional(string)
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                geo-match-statement: optional(
                                  object({
                                    country-codes: list(string)
                                    forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                      })
                                    )
                                  })
                                )
                                ip-set-reference-statement: optional(
                                  object({
                                    arn: string
                                    ip-set-forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                        position: string
                                      })
                                    )
                                  })
                                )
                                label-match-statement: optional(
                                  object({
                                    key: string
                                    scope: string
                                  })
                                )
                                regex-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    regex-string: string
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                regex-pattern-set-reference-statement: optional(
                                  object({
                                    arn: string
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                size-constraint-statement: optional(
                                  object({
                                    comparison-operator: string
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    size: integer
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                sqli-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    sensitivity-level: optional(string)
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                xss-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                              })
                            )
                          })
                        )
                        not-statement: optional(
                          object({
                            statement: object({
                              asn-match-statement: optional(
                                object({
                                  asn-list: list(integer)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              byte-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  positional-constraint: string
                                  search-string: optional(string)
                                  search-string-base64: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              geo-match-statement: optional(
                                object({
                                  country-codes: list(string)
                                  forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                    })
                                  )
                                })
                              )
                              ip-set-reference-statement: optional(
                                object({
                                  arn: string
                                  ip-set-forwarded-ip-config: optional(
                                    object({
                                      fallback-behavior: string
                                      header-name: string
                                      position: string
                                    })
                                  )
                                })
                              )
                              label-match-statement: optional(
                                object({
                                  key: string
                                  scope: string
                                })
                              )
                              regex-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  regex-string: string
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              regex-pattern-set-reference-statement: optional(
                                object({
                                  arn: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              size-constraint-statement: optional(
                                object({
                                  comparison-operator: string
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  size: integer
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              sqli-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  sensitivity-level: optional(string)
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                              xss-match-statement: optional(
                                object({
                                  field-to-match: object({
                                    all-query-arguments: optional(object({}))
                                    body: optional(
                                      object({
                                        oversize-handling: optional(string)
                                      })
                                    )
                                    cookies: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-cookies: optional(list(string))
                                          included-cookies: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    header-order: optional(
                                      object({
                                        oversize-handling: string
                                      })
                                    )
                                    headers: optional(
                                      object({
                                        match-pattern: object({
                                          all: optional(object({}))
                                          excluded-headers: optional(list(string))
                                          included-headers: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    ja3-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    ja4-fingerprint: optional(
                                      object({
                                        fallback-behavior: string
                                      })
                                    )
                                    json-body: optional(
                                      object({
                                        invalid-fallback-behavior: optional(string)
                                        match-pattern: object({
                                          all: optional(object({}))
                                          included-paths: optional(list(string))
                                        })
                                        match-scope: string
                                        oversize-handling: string
                                      })
                                    )
                                    method: optional(object({}))
                                    query-string: optional(object({}))
                                    single-header: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    single-query-argument: optional(
                                      object({
                                        name: string
                                      })
                                    )
                                    uri-fragment: optional(
                                      object({
                                        fallback-behavior: optional(string)
                                      })
                                    )
                                    uri-path: optional(object({}))
                                  })
                                  text-transformations: list(
                                    object({
                                      priority: integer
                                      type: string
                                    })
                                  )
                                })
                              )
                            })
                          })
                        )
                        or-statement: optional(
                          object({
                            statements: list(
                              object({
                                asn-match-statement: optional(
                                  object({
                                    asn-list: list(integer)
                                    forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                      })
                                    )
                                  })
                                )
                                byte-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    positional-constraint: string
                                    search-string: optional(string)
                                    search-string-base64: optional(string)
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                geo-match-statement: optional(
                                  object({
                                    country-codes: list(string)
                                    forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                      })
                                    )
                                  })
                                )
                                ip-set-reference-statement: optional(
                                  object({
                                    arn: string
                                    ip-set-forwarded-ip-config: optional(
                                      object({
                                        fallback-behavior: string
                                        header-name: string
                                        position: string
                                      })
                                    )
                                  })
                                )
                                label-match-statement: optional(
                                  object({
                                    key: string
                                    scope: string
                                  })
                                )
                                regex-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    regex-string: string
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                regex-pattern-set-reference-statement: optional(
                                  object({
                                    arn: string
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                size-constraint-statement: optional(
                                  object({
                                    comparison-operator: string
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    size: integer
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                sqli-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    sensitivity-level: optional(string)
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                                xss-match-statement: optional(
                                  object({
                                    field-to-match: object({
                                      all-query-arguments: optional(object({}))
                                      body: optional(
                                        object({
                                          oversize-handling: optional(string)
                                        })
                                      )
                                      cookies: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-cookies: optional(list(string))
                                            included-cookies: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      header-order: optional(
                                        object({
                                          oversize-handling: string
                                        })
                                      )
                                      headers: optional(
                                        object({
                                          match-pattern: object({
                                            all: optional(object({}))
                                            excluded-headers: optional(list(string))
                                            included-headers: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      ja3-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      ja4-fingerprint: optional(
                                        object({
                                          fallback-behavior: string
                                        })
                                      )
                                      json-body: optional(
                                        object({
                                          invalid-fallback-behavior: optional(string)
                                          match-pattern: object({
                                            all: optional(object({}))
                                            included-paths: optional(list(string))
                                          })
                                          match-scope: string
                                          oversize-handling: string
                                        })
                                      )
                                      method: optional(object({}))
                                      query-string: optional(object({}))
                                      single-header: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      single-query-argument: optional(
                                        object({
                                          name: string
                                        })
                                      )
                                      uri-fragment: optional(
                                        object({
                                          fallback-behavior: optional(string)
                                        })
                                      )
                                      uri-path: optional(object({}))
                                    })
                                    text-transformations: list(
                                      object({
                                        priority: integer
                                        type: string
                                      })
                                    )
                                  })
                                )
                              })
                            )
                          })
                        )
                        asn-match-statement: optional(
                          object({
                            asn-list: list(integer)
                            forwarded-ip-config: optional(
                              object({
                                fallback-behavior: string
                                header-name: string
                              })
                            )
                          })
                        )
                        byte-match-statement: optional(
                          object({
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            positional-constraint: string
                            search-string: optional(string)
                            search-string-base64: optional(string)
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        geo-match-statement: optional(
                          object({
                            country-codes: list(string)
                            forwarded-ip-config: optional(
                              object({
                                fallback-behavior: string
                                header-name: string
                              })
                            )
                          })
                        )
                        ip-set-reference-statement: optional(
                          object({
                            arn: string
                            ip-set-forwarded-ip-config: optional(
                              object({
                                fallback-behavior: string
                                header-name: string
                                position: string
                              })
                            )
                          })
                        )
                        label-match-statement: optional(
                          object({
                            key: string
                            scope: string
                          })
                        )
                        regex-match-statement: optional(
                          object({
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            regex-string: string
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        regex-pattern-set-reference-statement: optional(
                          object({
                            arn: string
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        size-constraint-statement: optional(
                          object({
                            comparison-operator: string
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            size: integer
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        sqli-match-statement: optional(
                          object({
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            sensitivity-level: optional(string)
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                        xss-match-statement: optional(
                          object({
                            field-to-match: object({
                              all-query-arguments: optional(object({}))
                              body: optional(
                                object({
                                  oversize-handling: optional(string)
                                })
                              )
                              cookies: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-cookies: optional(list(string))
                                    included-cookies: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              header-order: optional(
                                object({
                                  oversize-handling: string
                                })
                              )
                              headers: optional(
                                object({
                                  match-pattern: object({
                                    all: optional(object({}))
                                    excluded-headers: optional(list(string))
                                    included-headers: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              ja3-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              ja4-fingerprint: optional(
                                object({
                                  fallback-behavior: string
                                })
                              )
                              json-body: optional(
                                object({
                                  invalid-fallback-behavior: optional(string)
                                  match-pattern: object({
                                    all: optional(object({}))
                                    included-paths: optional(list(string))
                                  })
                                  match-scope: string
                                  oversize-handling: string
                                })
                              )
                              method: optional(object({}))
                              query-string: optional(object({}))
                              single-header: optional(
                                object({
                                  name: string
                                })
                              )
                              single-query-argument: optional(
                                object({
                                  name: string
                                })
                              )
                              uri-fragment: optional(
                                object({
                                  fallback-behavior: optional(string)
                                })
                              )
                              uri-path: optional(object({}))
                            })
                            text-transformations: list(
                              object({
                                priority: integer
                                type: string
                              })
                            )
                          })
                        )
                      })
                    )
                  })
                )
                asn-match-statement: optional(
                  object({
                    asn-list: list(integer)
                    forwarded-ip-config: optional(
                      object({
                        fallback-behavior: string
                        header-name: string
                      })
                    )
                  })
                )
                byte-match-statement: optional(
                  object({
                    field-to-match: object({
                      all-query-arguments: optional(object({}))
                      body: optional(
                        object({
                          oversize-handling: optional(string)
                        })
                      )
                      cookies: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-cookies: optional(list(string))
                            included-cookies: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      header-order: optional(
                        object({
                          oversize-handling: string
                        })
                      )
                      headers: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-headers: optional(list(string))
                            included-headers: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      ja3-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      ja4-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      json-body: optional(
                        object({
                          invalid-fallback-behavior: optional(string)
                          match-pattern: object({
                            all: optional(object({}))
                            included-paths: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      method: optional(object({}))
                      query-string: optional(object({}))
                      single-header: optional(
                        object({
                          name: string
                        })
                      )
                      single-query-argument: optional(
                        object({
                          name: string
                        })
                      )
                      uri-fragment: optional(
                        object({
                          fallback-behavior: optional(string)
                        })
                      )
                      uri-path: optional(object({}))
                    })
                    positional-constraint: string
                    search-string: optional(string)
                    search-string-base64: optional(string)
                    text-transformations: list(
                      object({
                        priority: integer
                        type: string
                      })
                    )
                  })
                )
                geo-match-statement: optional(
                  object({
                    country-codes: list(string)
                    forwarded-ip-config: optional(
                      object({
                        fallback-behavior: string
                        header-name: string
                      })
                    )
                  })
                )
                ip-set-reference-statement: optional(
                  object({
                    arn: string
                    ip-set-forwarded-ip-config: optional(
                      object({
                        fallback-behavior: string
                        header-name: string
                        position: string
                      })
                    )
                  })
                )
                label-match-statement: optional(
                  object({
                    key: string
                    scope: string
                  })
                )
                regex-match-statement: optional(
                  object({
                    field-to-match: object({
                      all-query-arguments: optional(object({}))
                      body: optional(
                        object({
                          oversize-handling: optional(string)
                        })
                      )
                      cookies: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-cookies: optional(list(string))
                            included-cookies: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      header-order: optional(
                        object({
                          oversize-handling: string
                        })
                      )
                      headers: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-headers: optional(list(string))
                            included-headers: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      ja3-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      ja4-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      json-body: optional(
                        object({
                          invalid-fallback-behavior: optional(string)
                          match-pattern: object({
                            all: optional(object({}))
                            included-paths: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      method: optional(object({}))
                      query-string: optional(object({}))
                      single-header: optional(
                        object({
                          name: string
                        })
                      )
                      single-query-argument: optional(
                        object({
                          name: string
                        })
                      )
                      uri-fragment: optional(
                        object({
                          fallback-behavior: optional(string)
                        })
                      )
                      uri-path: optional(object({}))
                    })
                    regex-string: string
                    text-transformations: list(
                      object({
                        priority: integer
                        type: string
                      })
                    )
                  })
                )
                regex-pattern-set-reference-statement: optional(
                  object({
                    arn: string
                    field-to-match: object({
                      all-query-arguments: optional(object({}))
                      body: optional(
                        object({
                          oversize-handling: optional(string)
                        })
                      )
                      cookies: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-cookies: optional(list(string))
                            included-cookies: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      header-order: optional(
                        object({
                          oversize-handling: string
                        })
                      )
                      headers: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-headers: optional(list(string))
                            included-headers: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      ja3-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      ja4-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      json-body: optional(
                        object({
                          invalid-fallback-behavior: optional(string)
                          match-pattern: object({
                            all: optional(object({}))
                            included-paths: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      method: optional(object({}))
                      query-string: optional(object({}))
                      single-header: optional(
                        object({
                          name: string
                        })
                      )
                      single-query-argument: optional(
                        object({
                          name: string
                        })
                      )
                      uri-fragment: optional(
                        object({
                          fallback-behavior: optional(string)
                        })
                      )
                      uri-path: optional(object({}))
                    })
                    text-transformations: list(
                      object({
                        priority: integer
                        type: string
                      })
                    )
                  })
                )
                size-constraint-statement: optional(
                  object({
                    comparison-operator: string
                    field-to-match: object({
                      all-query-arguments: optional(object({}))
                      body: optional(
                        object({
                          oversize-handling: optional(string)
                        })
                      )
                      cookies: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-cookies: optional(list(string))
                            included-cookies: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      header-order: optional(
                        object({
                          oversize-handling: string
                        })
                      )
                      headers: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-headers: optional(list(string))
                            included-headers: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      ja3-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      ja4-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      json-body: optional(
                        object({
                          invalid-fallback-behavior: optional(string)
                          match-pattern: object({
                            all: optional(object({}))
                            included-paths: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      method: optional(object({}))
                      query-string: optional(object({}))
                      single-header: optional(
                        object({
                          name: string
                        })
                      )
                      single-query-argument: optional(
                        object({
                          name: string
                        })
                      )
                      uri-fragment: optional(
                        object({
                          fallback-behavior: optional(string)
                        })
                      )
                      uri-path: optional(object({}))
                    })
                    size: integer
                    text-transformations: list(
                      object({
                        priority: integer
                        type: string
                      })
                    )
                  })
                )
                sqli-match-statement: optional(
                  object({
                    field-to-match: object({
                      all-query-arguments: optional(object({}))
                      body: optional(
                        object({
                          oversize-handling: optional(string)
                        })
                      )
                      cookies: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-cookies: optional(list(string))
                            included-cookies: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      header-order: optional(
                        object({
                          oversize-handling: string
                        })
                      )
                      headers: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-headers: optional(list(string))
                            included-headers: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      ja3-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      ja4-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      json-body: optional(
                        object({
                          invalid-fallback-behavior: optional(string)
                          match-pattern: object({
                            all: optional(object({}))
                            included-paths: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      method: optional(object({}))
                      query-string: optional(object({}))
                      single-header: optional(
                        object({
                          name: string
                        })
                      )
                      single-query-argument: optional(
                        object({
                          name: string
                        })
                      )
                      uri-fragment: optional(
                        object({
                          fallback-behavior: optional(string)
                        })
                      )
                      uri-path: optional(object({}))
                    })
                    sensitivity-level: optional(string)
                    text-transformations: list(
                      object({
                        priority: integer
                        type: string
                      })
                    )
                  })
                )
                xss-match-statement: optional(
                  object({
                    field-to-match: object({
                      all-query-arguments: optional(object({}))
                      body: optional(
                        object({
                          oversize-handling: optional(string)
                        })
                      )
                      cookies: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-cookies: optional(list(string))
                            included-cookies: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      header-order: optional(
                        object({
                          oversize-handling: string
                        })
                      )
                      headers: optional(
                        object({
                          match-pattern: object({
                            all: optional(object({}))
                            excluded-headers: optional(list(string))
                            included-headers: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      ja3-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      ja4-fingerprint: optional(
                        object({
                          fallback-behavior: string
                        })
                      )
                      json-body: optional(
                        object({
                          invalid-fallback-behavior: optional(string)
                          match-pattern: object({
                            all: optional(object({}))
                            included-paths: optional(list(string))
                          })
                          match-scope: string
                          oversize-handling: string
                        })
                      )
                      method: optional(object({}))
                      query-string: optional(object({}))
                      single-header: optional(
                        object({
                          name: string
                        })
                      )
                      single-query-argument: optional(
                        object({
                          name: string
                        })
                      )
                      uri-fragment: optional(
                        object({
                          fallback-behavior: optional(string)
                        })
                      )
                      uri-path: optional(object({}))
                    })
                    text-transformations: list(
                      object({
                        priority: integer
                        type: string
                      })
                    )
                  })
                )
              })
            )
          })
        )
        regex-match-statement: optional(
          object({
            field-to-match: object({
              all-query-arguments: optional(object({}))
              body: optional(
                object({
                  oversize-handling: optional(string)
                })
              )
              cookies: optional(
                object({
                  match-pattern: object({
                    all: optional(object({}))
                    excluded-cookies: optional(list(string))
                    included-cookies: optional(list(string))
                  })
                  match-scope: string
                  oversize-handling: string
                })
              )
              header-order: optional(
                object({
                  oversize-handling: string
                })
              )
              headers: optional(
                object({
                  match-pattern: object({
                    all: optional(object({}))
                    excluded-headers: optional(list(string))
                    included-headers: optional(list(string))
                  })
                  match-scope: string
                  oversize-handling: string
                })
              )
              ja3-fingerprint: optional(
                object({
                  fallback-behavior: string
                })
              )
              ja4-fingerprint: optional(
                object({
                  fallback-behavior: string
                })
              )
              json-body: optional(
                object({
                  invalid-fallback-behavior: optional(string)
                  match-pattern: object({
                    all: optional(object({}))
                    included-paths: optional(list(string))
                  })
                  match-scope: string
                  oversize-handling: string
                })
              )
              method: optional(object({}))
              query-string: optional(object({}))
              single-header: optional(
                object({
                  name: string
                })
              )
              single-query-argument: optional(
                object({
                  name: string
                })
              )
              uri-fragment: optional(
                object({
                  fallback-behavior: optional(string)
                })
              )
              uri-path: optional(object({}))
            })
            regex-string: string
            text-transformations: list(
              object({
                priority: integer
                type: string
              })
            )
          })
        )
        regex-pattern-set-reference-statement: optional(
          object({
            arn: string
            field-to-match: object({
              all-query-arguments: optional(object({}))
              body: optional(
                object({
                  oversize-handling: optional(string)
                })
              )
              cookies: optional(
                object({
                  match-pattern: object({
                    all: optional(object({}))
                    excluded-cookies: optional(list(string))
                    included-cookies: optional(list(string))
                  })
                  match-scope: string
                  oversize-handling: string
                })
              )
              header-order: optional(
                object({
                  oversize-handling: string
                })
              )
              headers: optional(
                object({
                  match-pattern: object({
                    all: optional(object({}))
                    excluded-headers: optional(list(string))
                    included-headers: optional(list(string))
                  })
                  match-scope: string
                  oversize-handling: string
                })
              )
              ja3-fingerprint: optional(
                object({
                  fallback-behavior: string
                })
              )
              ja4-fingerprint: optional(
                object({
                  fallback-behavior: string
                })
              )
              json-body: optional(
                object({
                  invalid-fallback-behavior: optional(string)
                  match-pattern: object({
                    all: optional(object({}))
                    included-paths: optional(list(string))
                  })
                  match-scope: string
                  oversize-handling: string
                })
              )
              method: optional(object({}))
              query-string: optional(object({}))
              single-header: optional(
                object({
                  name: string
                })
              )
              single-query-argument: optional(
                object({
                  name: string
                })
              )
              uri-fragment: optional(
                object({
                  fallback-behavior: optional(string)
                })
              )
              uri-path: optional(object({}))
            })
            text-transformations: list(
              object({
                priority: integer
                type: string
              })
            )
          })
        )
        rule-group-reference-statement: optional(
          object({
            arn: string
            excluded-rules: optional(
              list(
                object({
                  name: string
                })
              )
            )
            rule-action-overrides: optional(
              list(
                object({
                  action-to-use: object({
                    allow: optional(
                      object({
                        custom-request-handling: optional(
                          object({
                            insert-headers: list(
                              object({
                                name: string
                                value: string
                              })
                            )
                          })
                        )
                      })
                    )
                    block: optional(
                      object({
                        custom-response: optional(
                          object({
                            response-code: integer
                            custom-response-body-key: optional(string)
                            response-headers: optional(
                              list(
                                object({
                                  name: string
                                  value: string
                                })
                              )
                            )
                          })
                        )
                      })
                    )
                    captcha: optional(
                      object({
                        custom-request-handling: optional(
                          object({
                            insert-headers: list(
                              object({
                                name: string
                                value: string
                              })
                            )
                          })
                        )
                      })
                    )
                    challenge: optional(
                      object({
                        custom-request-handling: optional(
                          object({
                            insert-headers: list(
                              object({
                                name: string
                                value: string
                              })
                            )
                          })
                        )
                      })
                    )
                    count: optional(
                      object({
                        custom-request-handling: optional(
                          object({
                            insert-headers: list(
                              object({
                                name: string
                                value: string
                              })
                            )
                          })
                        )
                      })
                    )
                  })
                  name: string
                })
              )
            )
          })
        )
        size-constraint-statement: optional(
          object({
            comparison-operator: string
            field-to-match: object({
              all-query-arguments: optional(object({}))
              body: optional(
                object({
                  oversize-handling: optional(string)
                })
              )
              cookies: optional(
                object({
                  match-pattern: object({
                    all: optional(object({}))
                    excluded-cookies: optional(list(string))
                    included-cookies: optional(list(string))
                  })
                  match-scope: string
                  oversize-handling: string
                })
              )
              header-order: optional(
                object({
                  oversize-handling: string
                })
              )
              headers: optional(
                object({
                  match-pattern: object({
                    all: optional(object({}))
                    excluded-headers: optional(list(string))
                    included-headers: optional(list(string))
                  })
                  match-scope: string
                  oversize-handling: string
                })
              )
              ja3-fingerprint: optional(
                object({
                  fallback-behavior: string
                })
              )
              ja4-fingerprint: optional(
                object({
                  fallback-behavior: string
                })
              )
              json-body: optional(
                object({
                  invalid-fallback-behavior: optional(string)
                  match-pattern: object({
                    all: optional(object({}))
                    included-paths: optional(list(string))
                  })
                  match-scope: string
                  oversize-handling: string
                })
              )
              method: optional(object({}))
              query-string: optional(object({}))
              single-header: optional(
                object({
                  name: string
                })
              )
              single-query-argument: optional(
                object({
                  name: string
                })
              )
              uri-fragment: optional(
                object({
                  fallback-behavior: optional(string)
                })
              )
              uri-path: optional(object({}))
            })
            size: integer
            text-transformations: list(
              object({
                priority: integer
                type: string
              })
            )
          })
        )
        sqli-match-statement: optional(
          object({
            field-to-match: object({
              all-query-arguments: optional(object({}))
              body: optional(
                object({
                  oversize-handling: optional(string)
                })
              )
              cookies: optional(
                object({
                  match-pattern: object({
                    all: optional(object({}))
                    excluded-cookies: optional(list(string))
                    included-cookies: optional(list(string))
                  })
                  match-scope: string
                  oversize-handling: string
                })
              )
              header-order: optional(
                object({
                  oversize-handling: string
                })
              )
              headers: optional(
                object({
                  match-pattern: object({
                    all: optional(object({}))
                    excluded-headers: optional(list(string))
                    included-headers: optional(list(string))
                  })
                  match-scope: string
                  oversize-handling: string
                })
              )
              ja3-fingerprint: optional(
                object({
                  fallback-behavior: string
                })
              )
              ja4-fingerprint: optional(
                object({
                  fallback-behavior: string
                })
              )
              json-body: optional(
                object({
                  invalid-fallback-behavior: optional(string)
                  match-pattern: object({
                    all: optional(object({}))
                    included-paths: optional(list(string))
                  })
                  match-scope: string
                  oversize-handling: string
                })
              )
              method: optional(object({}))
              query-string: optional(object({}))
              single-header: optional(
                object({
                  name: string
                })
              )
              single-query-argument: optional(
                object({
                  name: string
                })
              )
              uri-fragment: optional(
                object({
                  fallback-behavior: optional(string)
                })
              )
              uri-path: optional(object({}))
            })
            sensitivity-level: optional(string)
            text-transformations: list(
              object({
                priority: integer
                type: string
              })
            )
          })
        )
        xss-match-statement: optional(
          object({
            field-to-match: object({
              all-query-arguments: optional(object({}))
              body: optional(
                object({
                  oversize-handling: optional(string)
                })
              )
              cookies: optional(
                object({
                  match-pattern: object({
                    all: optional(object({}))
                    excluded-cookies: optional(list(string))
                    included-cookies: optional(list(string))
                  })
                  match-scope: string
                  oversize-handling: string
                })
              )
              header-order: optional(
                object({
                  oversize-handling: string
                })
              )
              headers: optional(
                object({
                  match-pattern: object({
                    all: optional(object({}))
                    excluded-headers: optional(list(string))
                    included-headers: optional(list(string))
                  })
                  match-scope: string
                  oversize-handling: string
                })
              )
              ja3-fingerprint: optional(
                object({
                  fallback-behavior: string
                })
              )
              ja4-fingerprint: optional(
                object({
                  fallback-behavior: string
                })
              )
              json-body: optional(
                object({
                  invalid-fallback-behavior: optional(string)
                  match-pattern: object({
                    all: optional(object({}))
                    included-paths: optional(list(string))
                  })
                  match-scope: string
                  oversize-handling: string
                })
              )
              method: optional(object({}))
              query-string: optional(object({}))
              single-header: optional(
                object({
                  name: string
                })
              )
              single-query-argument: optional(
                object({
                  name: string
                })
              )
              uri-fragment: optional(
                object({
                  fallback-behavior: optional(string)
                })
              )
              uri-path: optional(object({}))
            })
            text-transformations: list(
              object({
                priority: integer
                type: string
              })
            )
          })
        )
      })
      visibility-config: object({
        cloudwatch-metrics-enabled: boolean
        metric-name: string
        sampled-requests-enabled: boolean
      })
    })
  )
)

token-domains

optional(list(string))

tags

optional(map(string))

Input Constraints

This kind declares no extra input constraints.

Outputs

arn

string

id

string

capacity

integer

label-namespace

string

application-integration-url

optional(string)

lock-token

string