## Step 1: Define the symbolic representation of the problem
The problem involves maximizing an objective function subject to several constraints. The variables are 'lightbulbs', 'packs of napkins', 'dish soap bottles', and 'cookies', which can be represented symbolically as $x_1, x_2, x_3, x_4$ respectively.

## Step 2: Translate the objective function into symbolic notation
The objective function to maximize is $5 \times \text{lightbulbs} + 2 \times \text{packs of napkins} + 9 \times \text{dish soap bottles} + 9 \times \text{cookies}$. In symbolic notation, this becomes $5x_1 + 2x_2 + 9x_3 + 9x_4$.

## 3: List the constraints in symbolic notation
The constraints given are:
- $6.79x_1 + 11.82x_3 + 9.22x_4 \geq 106$
- $6.79x_1 + 6.59x_2 + 9.22x_4 \geq 106$
- $6.79x_1 + 6.59x_2 + 11.82x_3 \geq 106$
- $6.79x_1 + 11.82x_3 + 9.22x_4 \geq 79$
- $6.79x_1 + 6.59x_2 + 9.22x_4 \geq 79$
- $6.79x_1 + 6.59x_2 + 11.82x_3 \geq 79$
- $6.79x_1 + 11.82x_3 + 9.22x_4 \geq 145$
- $6.79x_1 + 6.59x_2 + 9.22x_4 \geq 145$
- $6.79x_1 + 6.59x_2 + 11.82x_3 \geq 145$
- $14.05x_1 + 11.8x_2 \leq 144$
- $14.05x_1 + 14.52x_3 \leq 104$
- $11.8x_2 + 0.93x_4 \leq 238$
- $14.52x_3 + 0.93x_4 \leq 260$
- $14.05x_1 + 11.8x_2 + 14.52x_3 \leq 195$
- $14.05x_1 + 11.8x_2 + 14.52x_3 + 0.93x_4 \leq 195$
- $6.79x_1 + 6.59x_2 \leq 458$
- $6.79x_1 + 9.22x_4 \leq 521$
- $6.79x_1 + 11.82x_3 \leq 505$
- $6.79x_1 + 6.59x_2 + 11.82x_3 + 9.22x_4 \leq 505$
- $x_1, x_2, x_3, x_4$ are integers.

## 4: Provide the symbolic representation in the required format
```json
{
    'sym_variables': [
        ('x1', 'lightbulbs'), 
        ('x2', 'packs of napkins'), 
        ('x3', 'dish soap bottles'), 
        ('x4', 'cookies')
    ], 
    'objective_function': '5*x1 + 2*x2 + 9*x3 + 9*x4', 
    'constraints': [
        '6.79*x1 + 11.82*x3 + 9.22*x4 >= 106',
        '6.79*x1 + 6.59*x2 + 9.22*x4 >= 106',
        '6.79*x1 + 6.59*x2 + 11.82*x3 >= 106',
        '6.79*x1 + 11.82*x3 + 9.22*x4 >= 79',
        '6.79*x1 + 6.59*x2 + 9.22*x4 >= 79',
        '6.79*x1 + 6.59*x2 + 11.82*x3 >= 79',
        '6.79*x1 + 11.82*x3 + 9.22*x4 >= 145',
        '6.79*x1 + 6.59*x2 + 9.22*x4 >= 145',
        '6.79*x1 + 6.59*x2 + 11.82*x3 >= 145',
        '14.05*x1 + 11.8*x2 <= 144',
        '14.05*x1 + 14.52*x3 <= 104',
        '11.8*x2 + 0.93*x4 <= 238',
        '14.52*x3 + 0.93*x4 <= 260',
        '14.05*x1 + 11.8*x2 + 14.52*x3 <= 195',
        '14.05*x1 + 11.8*x2 + 14.52*x3 + 0.93*x4 <= 195',
        '6.79*x1 + 6.59*x2 <= 458',
        '6.79*x1 + 9.22*x4 <= 521',
        '6.79*x1 + 11.82*x3 <= 505',
        '6.79*x1 + 6.59*x2 + 11.82*x3 + 9.22*x4 <= 505'
    ]
}
```

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

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

# Define the variables
x1 = m.addVar(name="lightbulbs", vtype=gurobi.GRB.INTEGER)
x2 = m.addVar(name="packs of napkins", vtype=gurobi.GRB.INTEGER)
x3 = m.addVar(name="dish soap bottles", vtype=gurobi.GRB.INTEGER)
x4 = m.addVar(name="cookies", vtype=gurobi.GRB.INTEGER)

# Define the objective function
m.setObjective(5 * x1 + 2 * x2 + 9 * x3 + 9 * x4, gurobi.GRB.MAXIMIZE)

# Add constraints
m.addConstr(6.79 * x1 + 11.82 * x3 + 9.22 * x4 >= 106)
m.addConstr(6.79 * x1 + 6.59 * x2 + 9.22 * x4 >= 106)
m.addConstr(6.79 * x1 + 6.59 * x2 + 11.82 * x3 >= 106)
m.addConstr(6.79 * x1 + 11.82 * x3 + 9.22 * x4 >= 79)
m.addConstr(6.79 * x1 + 6.59 * x2 + 9.22 * x4 >= 79)
m.addConstr(6.79 * x1 + 6.59 * x2 + 11.82 * x3 >= 79)
m.addConstr(6.79 * x1 + 11.82 * x3 + 9.22 * x4 >= 145)
m.addConstr(6.79 * x1 + 6.59 * x2 + 9.22 * x4 >= 145)
m.addConstr(6.79 * x1 + 6.59 * x2 + 11.82 * x3 >= 145)
m.addConstr(14.05 * x1 + 11.8 * x2 <= 144)
m.addConstr(14.05 * x1 + 14.52 * x3 <= 104)
m.addConstr(11.8 * x2 + 0.93 * x4 <= 238)
m.addConstr(14.52 * x3 + 0.93 * x4 <= 260)
m.addConstr(14.05 * x1 + 11.8 * x2 + 14.52 * x3 <= 195)
m.addConstr(14.05 * x1 + 11.8 * x2 + 14.52 * x3 + 0.93 * x4 <= 195)
m.addConstr(6.79 * x1 + 6.59 * x2 <= 458)
m.addConstr(6.79 * x1 + 9.22 * x4 <= 521)
m.addConstr(6.79 * x1 + 11.82 * x3 <= 505)
m.addConstr(6.79 * x1 + 6.59 * x2 + 11.82 * x3 + 9.22 * x4 <= 505)

# Solve the model
m.optimize()

# Print the solution
if m.status == gurobi.GRB.OPTIMAL:
    print("Objective: ", m.objVal)
    print("Lightbulbs: ", x1.varValue)
    print("Packs of napkins: ", x2.varValue)
    print("Dish soap bottles: ", x3.varValue)
    print("Cookies: ", x4.varValue)
else:
    print("The model is infeasible")
```