## Step 1: Define the symbolic representation of the variables
The variables are defined as follows: 
- $x_1$ represents 'lightbulbs'
- $x_2$ represents 'rubber gloves'
- $x_3$ represents 'packs of napkins'
- $x_4$ represents 'diapers'
- $x_5$ represents 'cookies'

## Step 2: Convert the objective function into a symbolic representation
The objective function to maximize is $9x_1 + 8x_2 + 9x_3 + 4x_4 + 1x_5$.

## Step 3: List all the constraints in symbolic notation
Constraints:
1. $25x_2 + 2x_3 \geq 77$
2. $7x_1 + 2x_5 \geq 50$
3. $25x_2 + 2x_5 \geq 41$
4. $7x_1 + 25x_2 \geq 63$
5. $7x_1 + 19x_4 \geq 101$
6. $7x_1 + 25x_2 + 2x_5 \geq 66$
7. $25x_2 + 2x_3 + 19x_4 \geq 66$
8. $7x_1 + 25x_2 + 2x_5 \geq 88$
9. $25x_2 + 2x_3 + 19x_4 \geq 88$
10. $19x_4 + 2x_5 \leq 335$
11. $25x_2 + 2x_3 \leq 292$
12. $25x_2 + 19x_4 \leq 451$
13. $7x_1 + 19x_4 \leq 273$
14. $7x_1 + 2x_3 \leq 249$
15. $2x_3 + 19x_4 \leq 459$
16. $7x_1 + 25x_2 \leq 122$
17. $25x_2 + 2x_5 \leq 389$
18. $7x_1 + 2x_5 \leq 388$
19. $7x_1 + 2x_3 + 2x_5 \leq 428$
20. $25x_2 + 2x_3 + 19x_4 \leq 453$
21. $25x_2 + 19x_4 + 2x_5 \leq 442$
22. $7x_1 + 19x_4 + 2x_5 \leq 364$
23. $7x_1 + 25x_2 + 2x_5 \leq 371$
24. $7x_1 + 2x_3 + 19x_4 \leq 419$
25. $7x_1 + 25x_2 + 2x_3 \leq 422$
26. $7x_1 + 25x_2 + 19x_4 \leq 368$
27. $7x_1 + 25x_2 + 2x_3 + 19x_4 + 2x_5 \leq 368$

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

## 5: Implement the optimization problem using Gurobi
```python
import gurobi

# Create a new model
model = gurobi.Model()

# Define the variables
x1 = model.addVar(name='lightbulbs', vtype='I')
x2 = model.addVar(name='rubber gloves', vtype='I')
x3 = model.addVar(name='packs of napkins', vtype='I')
x4 = model.addVar(name='diapers', vtype='I')
x5 = model.addVar(name='cookies', vtype='I')

# Define the objective function
model.setObjective(9 * x1 + 8 * x2 + 9 * x3 + 4 * x4 + x5, gurobi.GRB.MAXIMIZE)

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

# Optimize the model
model.optimize()

# Print the solution
if model.status == gurobi.GRB.OPTIMAL:
    print('Objective: ', model.objVal)
    print('Lightbulbs: ', x1.varValue)
    print('Rubber gloves: ', x2.varValue)
    print('Packs of napkins: ', x3.varValue)
    print('Diapers: ', x4.varValue)
    print('Cookies: ', x5.varValue)
else:
    print('No solution found')
```