```json
{
  "sym_variables": [
    ("x0", "lightbulbs"),
    ("x1", "rubber gloves"),
    ("x2", "packs of napkins"),
    ("x3", "diapers"),
    ("x4", "cookies")
  ],
  "objective_function": "9*x0 + 8*x1 + 9*x2 + 4*x3 + 1*x4",
  "constraints": [
    "7*x1 + 2*x2 >= 77",
    "7*x0 + 2*x4 >= 50",
    "25*x1 + 2*x4 >= 41",
    "7*x0 + 25*x1 >= 63",
    "7*x0 + 19*x3 >= 101",
    "7*x0 + 25*x1 + 2*x4 >= 66",
    "25*x1 + 2*x2 + 19*x3 >= 66",
    "7*x0 + 25*x1 + 2*x4 >= 88",
    "25*x1 + 2*x2 + 19*x3 >= 88",
    "19*x3 + 2*x4 <= 335",
    "25*x1 + 2*x2 <= 292",
    "25*x1 + 19*x3 <= 451",
    "7*x0 + 19*x3 <= 273",
    "7*x0 + 2*x2 <= 249",
    "2*x2 + 19*x3 <= 459",
    "7*x0 + 25*x1 <= 122",
    "25*x1 + 2*x4 <= 389",
    "7*x0 + 2*x4 <= 388",
    "7*x0 + 2*x2 + 2*x4 <= 428",
    "25*x1 + 2*x2 + 19*x3 <= 453",
    "25*x1 + 19*x3 + 2*x4 <= 442",
    "7*x0 + 19*x3 + 2*x4 <= 364",
    "7*x0 + 25*x1 + 2*x4 <= 371",
    "7*x0 + 2*x2 + 19*x3 <= 419",
    "7*x0 + 25*x1 + 2*x2 <= 422",
    "7*x0 + 25*x1 + 19*x3 <= 368",
    "7*x0 + 25*x1 + 2*x2 + 19*x3 + 2*x4 <= 368",
    "x0, x1, x2, x3, x4 are integers"


  ]
}
```

```python
import gurobipy as gp

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

# Create variables
lightbulbs = model.addVar(vtype=gp.GRB.INTEGER, name="lightbulbs")
rubber_gloves = model.addVar(vtype=gp.GRB.INTEGER, name="rubber_gloves")
packs_of_napkins = model.addVar(vtype=gp.GRB.INTEGER, name="packs_of_napkins")
diapers = model.addVar(vtype=gp.GRB.INTEGER, name="diapers")
cookies = model.addVar(vtype=gp.GRB.INTEGER, name="cookies")

# Set objective function
model.setObjective(9 * lightbulbs + 8 * rubber_gloves + 9 * packs_of_napkins + 4 * diapers + 1 * cookies, gp.GRB.MAXIMIZE)

# Add constraints
model.addConstr(25 * rubber_gloves + 2 * packs_of_napkins >= 77)
model.addConstr(7 * lightbulbs + 2 * cookies >= 50)
model.addConstr(25 * rubber_gloves + 2 * cookies >= 41)
model.addConstr(7 * lightbulbs + 25 * rubber_gloves >= 63)
model.addConstr(7 * lightbulbs + 19 * diapers >= 101)
model.addConstr(7 * lightbulbs + 25 * rubber_gloves + 2 * cookies >= 66)
model.addConstr(25 * rubber_gloves + 2 * packs_of_napkins + 19 * diapers >= 66)
model.addConstr(7 * lightbulbs + 25 * rubber_gloves + 2 * cookies >= 88)
model.addConstr(25 * rubber_gloves + 2 * packs_of_napkins + 19 * diapers >= 88)
model.addConstr(19 * diapers + 2 * cookies <= 335)
model.addConstr(25 * rubber_gloves + 2 * packs_of_napkins <= 292)
model.addConstr(25 * rubber_gloves + 19 * diapers <= 451)
model.addConstr(7 * lightbulbs + 19 * diapers <= 273)
model.addConstr(7 * lightbulbs + 2 * packs_of_napkins <= 249)
model.addConstr(2 * packs_of_napkins + 19 * diapers <= 459)
model.addConstr(7 * lightbulbs + 25 * rubber_gloves <= 122)
model.addConstr(25 * rubber_gloves + 2 * cookies <= 389)
model.addConstr(7 * lightbulbs + 2 * cookies <= 388)
model.addConstr(7 * lightbulbs + 2 * packs_of_napkins + 2 * cookies <= 428)
model.addConstr(25 * rubber_gloves + 2 * packs_of_napkins + 19 * diapers <= 453)
model.addConstr(25 * rubber_gloves + 19 * diapers + 2 * cookies <= 442)
model.addConstr(7 * lightbulbs + 19 * diapers + 2 * cookies <= 364)
model.addConstr(7 * lightbulbs + 25 * rubber_gloves + 2 * cookies <= 371)
model.addConstr(7 * lightbulbs + 2 * packs_of_napkins + 19 * diapers <= 419)
model.addConstr(7 * lightbulbs + 25 * rubber_gloves + 2 * packs_of_napkins <= 422)
model.addConstr(7 * lightbulbs + 25 * rubber_gloves + 19 * diapers <= 368)
model.addConstr(7 * lightbulbs + 25 * rubber_gloves + 2 * packs_of_napkins + 19 * diapers + 2 * cookies <= 368)


# Optimize model
model.optimize()

# Print results
if model.status == gp.GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Lightbulbs: {lightbulbs.x}")
    print(f"Rubber Gloves: {rubber_gloves.x}")
    print(f"Packs of Napkins: {packs_of_napkins.x}")
    print(f"Diapers: {diapers.x}")
    print(f"Cookies: {cookies.x}")
    print(f"Objective Value: {model.objVal}")
elif model.status == gp.GRB.INFEASIBLE:
    print("Model is infeasible.")
else:
    print(f"Optimization terminated with status {model.status}")

```