| 
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -64,14 +64,20 @@ __declspec(dllimport) void __stdcall DebugBreak(void);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        using T = std::underlying_type_t<type>;                                                    \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        return static_cast<type>(static_cast<T>(a) & static_cast<T>(b));                           \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }                                                                                              \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    constexpr type& operator|=(type& a, type b) noexcept {                                         \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    [[nodiscard]] constexpr type operator^(type a, type b) noexcept {                              \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        using T = std::underlying_type_t<type>;                                                    \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        a = static_cast<type>(static_cast<T>(a) | static_cast<T>(b));                              \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        return static_cast<type>(static_cast<T>(a) ^ static_cast<T>(b));                           \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }                                                                                              \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    constexpr type& operator|=(type& a, type b) noexcept {                                         \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        a = a | b;                                                                                 \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        return a;                                                                                  \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }                                                                                              \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    constexpr type& operator&=(type& a, type b) noexcept {                                         \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        using T = std::underlying_type_t<type>;                                                    \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        a = static_cast<type>(static_cast<T>(a) & static_cast<T>(b));                              \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        a = a & b;                                                                                 \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        return a;                                                                                  \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }                                                                                              \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    constexpr type& operator^=(type& a, type b) noexcept {                                         \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        a = a ^ b;                                                                                 \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        return a;                                                                                  \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }                                                                                              \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    [[nodiscard]] constexpr type operator~(type key) noexcept {                                    \
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
			
			 | 
			 | 
			
				
 
 |