User: This model represents users. All questions will be based on that:

```javascript
const mongoose = require('mongoose');

const UserSchema = new mongoose.NAME_1({
  email: { type: NAME_2, required: true, unique: true },
  password: { type: NAME_2, required: true },
  first_name: { type: NAME_2, required: true },
  last_name: { type: NAME_2, required: true },
  user_type: { type: NAME_2, enum: ['architect', 'designer', 'customer'], required: true },
  profile_picture_url: { type: NAME_2 },
  created_at: { type: Date, default: Date.now },
  updated_at: { type: Date, default: Date.now },
});

module.exports = mongoose.model('User', UserSchema);
```


given this User model, write 3 microservices:

microservice 1: an OAuth2 microservice using the `node-oauth2-server` package.
microservice 2: Authentication and Authorization
microservice 3: User Management

Use nodeJS v18.16.0 and MongoDB for all microservices.

For these microservices, create all code and file along with step by step instruction, so I can copy and paste and run these microservices on NAME_3 containers. For that, also create NAME_3 and NAME_3 Compose files for deploying the microservice in a container and run it locally. The code should be ready for deploy and run on a NAME_3 container.

These microservices should be ready to interact with each other. So, Authentication and Authorization microservice will be used by User Management microservice and OAuth2 microservice for Authentication and Authorization microservice.

For the User Management, wr