[Bug?]: A question about the order of creating shapes in duplicateShapes()
### What happened?

Basically, the later a shape is created, the higher its index. Assuming the shape's index is not forcibly changed (assuming no 'bring front' or 'send back' has been performed), indices currently increase in the order of creation. However, in duplicateShapes(), the list of shapes to be created is set up so that shapes with higher indices go through the create logic first. I'm wondering if this is intentional. Since the creation order is important in logic that exists in aftercreatehandler, etc., I believe the relationship between creation order and index should be consistent by default.

### How can we reproduce the bug?

1. Create rectangle / ellipse / triangle in that order.
2. Select all of them using drag.
3. When copying using ctrl+c/ctrl+v and debugging this process, the shape list order remains the same as the creation order.
4. When duplicating by dragging while pressing the alt key and debugging this process, the shape list order is reversed.
This happens because in duplicateShapes(), the shapeId set is reversed.

### What browsers are you seeing the problem on?

Chrome

### Where did this happen?

The developer package

### Contact Details

sjh7397@gmail.com

### Code of Conduct

- [x] I agree to follow this project's Code of Conduct