```json
{
  "sym_variables": [
    ("x0", "rotisserie chickens"),
    ("x1", "strawberries"),
    ("x2", "kale salads")
  ],
  "objective_function": "1.86*x0**2 + 3.99*x0*x1 + 3.25*x0*x2 + 9.37*x1*x2 + 9.46*x2**2 + 3.19*x1 + 5.67*x2",
  "constraints": [
    "1*x0 + 13*x1 + 6*x2 <= 122",
    "8*x0 + 6*x1 + 9*x2 <= 117",
    "1*x0**2 + 13*x1**2 >= 16",
    "1*x0**2 + 6*x2**2 <= 118",
    "8*x0 + 6*x1 <= 117",
    "6*x1 + 9*x2 <= 82",
    "8*x0 + 9*x2 <= 117"
  ]
}
```

```python
import gurobipy as gp

# Create a new model
m = gp.Model("food_optimization")

# Create variables
x0 = m.addVar(lb=0, name="rotisserie_chickens")
x1 = m.addVar(lb=0, name="strawberries")
x2 = m.addVar(lb=0, name="kale_salads")


# Set objective function
m.setObjective(1.86*x0**2 + 3.99*x0*x1 + 3.25*x0*x2 + 9.37*x1*x2 + 9.46*x2**2 + 3.19*x1 + 5.67*x2, gp.GRB.MAXIMIZE)

# Add constraints
m.addConstr(1*x0 + 13*x1 + 6*x2 <= 122, "protein_limit")
m.addConstr(8*x0 + 6*x1 + 9*x2 <= 117, "calcium_limit")
m.addConstr(1*x0**2 + 13*x1**2 >= 16, "protein_squared_min")
m.addConstr(1*x0**2 + 6*x2**2 <= 118, "protein_squared_max")
m.addConstr(8*x0 + 6*x1 <= 117, "calcium_limit_x0_x1")
m.addConstr(6*x1 + 9*x2 <= 82, "calcium_limit_x1_x2")
m.addConstr(8*x0 + 9*x2 <= 117, "calcium_limit_x0_x2")



# Optimize model
m.optimize()

# Print results
if m.status == gp.GRB.OPTIMAL:
    print('Obj: %g' % m.objVal)
    print('rotisserie_chickens: %g' % x0.x)
    print('strawberries: %g' % x1.x)
    print('kale_salads: %g' % x2.x)
elif m.status == gp.GRB.INFEASIBLE:
    print('The model is infeasible.')
else:
    print('Optimization ended with status %d' % m.status)

```